Трейдофф хелпера против платного аккаунта Apple Developer

Канонический способ управлять сетевым трафиком на маке и вообще в эпловой экосистеме - Network Extension Provider, но есть проблема - доступ к нему выдается только владельцам Apple Developer Program за 100 баксов. Моя подписка уже как пару лет не оплачивалась, а без этого нельзя вообще запустить ничего в принципе на удобном уровне. Это одна из причин, почему его придется заново продлять в самом ближайшем будущем.

Единственная рабочая альтернатива — root-процесс, который сам поднимает TUN-интерфейс. А для этого нужен привилегированный компонент, он же хелпер.

Спасибо ресерчам на эту тему и нейросетям, выяснилось вот что: Раньше для этого был SMJobBless, но с macOS 13 он устарел. Актуальный способ — SMAppService: регистрирует полноценный root LaunchDaemon, который лежит прямо внутри бандла приложения. Пользователь один раз подтверждает демона в Системных настройках → Login Items, дальше launchd поднимает его сам, по требованию.

Приложение и демон общаются через XPC. Демон при этом максимально тупой — умеет запустить, остановить и вернуть статус, и всё. Вся логика — парсинг конфигов, UI, бизнес-часть — живёт в обычном пользовательском процессе. Смысл в том, чтобы минимизировать, что может натворить баг: даже если что-то сломается в user-space коде, максимум, что оно сможет — попросить демон перезапустить сетевой процесс, а не получить root напрямую.

Это создает трейдофф безопасности: XPC принимает любого клиента без подписи, что огромная дыра в безопасности. На время тестов до выкладки проекта - это нормальный кейс использования, но для распространения продукта это так же один из пунктов в пользу покупки аккаунта - иначе к демону достучаться сможет вообще любой процесс на тачке.

В конечном итоге получаем рабочую тестовую замену, где нужно городить хелпер-демона вместо одной строчки в коде на время до официального релиза, но это именно что временный костыль, с которым даже официально не выпуститься в сторы, зато можно прямо сейчас раздать тестовую версию и посмотреть как себя ведет на живой машине, что для быстрых итераций просто необходимо.

Трейдофф хелпера против платного аккаунта Apple Developer
Канонический способ управлять сетевым трафиком на маке и вообще в эпловой экосистеме - Network Extension Provider, но есть проблема - доступ к... | Сетка — социальная сеть от hh.ru Трейдофф хелпера против платного аккаунта Apple Developer
Канонический способ управлять сетевым трафиком на маке и вообще в эпловой экосистеме - Network Extension Provider, но есть проблема - доступ к... | Сетка — социальная сеть от hh.ru