NSBundle песочница в Objective-C - PullRequest
1 голос
/ 12 марта 2012

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

Вещи, о которых я думал:

Статический двоичный анализ всех вызовов posix и обмена сообщениями ObjC (кажется невозможным, поскольку двоичные файлы .... двоичные на данный момент, а не код).

Отслеживание сообщений ObjC во время выполнения и их регистрация, блокировка модуля после одного случайного вызова. (Это не повлияет на вызовы POSIX или любые вызовы C в этом отношении, ни на сборку, и будет иметь как минимум один вызов, уже отправленный).

Создание изолированного внешнего процесса с использованием XPC и загрузка там модулей и использование PDO для маршрутизации вызовов коммутатора к этому процессу (очень выполнимо, но мне нужна совместимость со снежным барсом).

Есть идеи? Я понимаю, что после загрузки пакет становится частью вашего приложения, поэтому это создает дополнительные проблемы при реализации безопасности.,

1 Ответ

1 голос
/ 12 марта 2012

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

Отслеживание сообщений во время выполнения не имеет смысла, поскольку вредоносный пакет может просто отключить код, отвечающий за сообщениеотслеживание до того, как оно сработает.(В конце концов, он работает в том же пространстве памяти, и для этого не нужно использовать никакие сообщения ObjC.)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...