Нечетное название, я знаю. Я действительно хочу спросить что-то вроде «могу ли я создать TrustedBSD MAC Framework или песочницу iOS для NSBundles?» У меня очень динамичное приложение, в котором модули можно «подключить» или «отключить» к «коммутатору» в любое время. Пользователь, управляющий им, находится на другом компьютере, возможно, за несколько миль. Пользователи не могут знать, как модули коммутатора могут быть совместимыми, и не разрушать систему в их отсутствие. Я знаю, что iOS-песочница и TrustedBSD (а также Lion's Seatbelt.framework) могут делать это для процессов, но как я могу сделать это для кода пакета?
Вещи, о которых я думал:
Статический двоичный анализ всех вызовов posix и обмена сообщениями ObjC (кажется невозможным, поскольку двоичные файлы .... двоичные на данный момент, а не код).
Отслеживание сообщений ObjC во время выполнения и их регистрация, блокировка модуля после одного случайного вызова. (Это не повлияет на вызовы POSIX или любые вызовы C в этом отношении, ни на сборку, и будет иметь как минимум один вызов, уже отправленный).
Создание изолированного внешнего процесса с использованием XPC и загрузка там модулей и использование PDO для маршрутизации вызовов коммутатора к этому процессу (очень выполнимо, но мне нужна совместимость со снежным барсом).
Есть идеи? Я понимаю, что после загрузки пакет становится частью вашего приложения, поэтому это создает дополнительные проблемы при реализации безопасности.,