Получение прав Sandbox из пакета XPC

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

codesign --display --entitlements :- /Applications/Notes.app/ | grep sandbox

Приведет к этому результату

Executable=/Applications/Notes.app/Contents/MacOS/Notes
<key>com.apple.security.app-sandbox</key>

Где ключ com.apple.security.app-sandbox означает, что приложение работает в песочнице.

В Mavericks некоторые вспомогательные приложения XPC отображаются в Activity Monitor как работающие в песочнице, но вызов кода для них ничего не показывает. Пример для одного из вспомогательных приложений Safari XPC:

codesign -display --entitlements :- /System/Library/PrivateFrameworks/WebKit2.framework/Versions/A/XPCServices/com.apple.WebKit.WebContent.xpc/Contents/MacOS/com.apple.WebKit.WebContent | grep sandbox

Просто возвращает это: -

Executable=/System/Library/PrivateFrameworks/WebKit2.framework/Versions/A/XPCServices/com.apple.WebKit.WebContent.xpc/Contents/MacOS/com.apple.WebKit.WebContent

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

Можно ли проверить такой пакет xpc, чтобы увидеть, будет ли он выполняться в песочнице и использовать права песочницы?


person TheDarkKnight    schedule 14.11.2013    source источник


Ответы (1)


Поиск права com.apple.security.app-sandbox, как вы это делаете, — это способ проверить, использует ли служба XPC песочницу приложения. Причина, по которой процесс веб-контента Safari отображается как «песочница», несмотря на то, что у него нет этого права, заключается в том, что он не использует «песочницу приложения», а скорее интерфейсы более низкого уровня к базовому средство песочницы в OS X. На раннем этапе процесс веб-контента вызывает WebKit initializeSandbox(), который использует частный системный интерфейс для применения песочницы политика во время выполнения. Таким образом, выяснить, создаст ли данная служба XPC изолированный процесс, так же сложно, как выяснить, будет ли эта служба вызывать функцию. Однако, если вам интересны ограничения, накладываемые на такие процессы, политика песочницы обычно хранится в файле .sb где-то в системе. В данном случае это /System/Library/PrivateFrameworks/WebKit2.framework/Versions/A/Resources/com.apple.WebProcess.sb.

person Matt Stevens    schedule 15.11.2013
comment
Спасибо, это действительно полезно. Есть ли способ сопоставить двоичный файл с .sb, который он будет использовать? - person TheDarkKnight; 15.11.2013
comment
Нет, так как файл может иметь любое имя. Однако в исследовательских целях это часто связано с именем процесса. Например, .sb для процесса storeagent — /System/Library/Sandbox/Profiles/com.apple.storeagent.sb. - person Matt Stevens; 15.11.2013