从XPC捆绑包中检索沙盒权利

时间:2013-11-14 14:40:57

标签: macos security sandbox osx-mavericks 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中显示为在沙盒中运行,但在它们上调用codesign并不会显示任何内容。 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

我还尝试以编程方式检查捆绑包是否为沙盒,并使用this article中描述的代码进行检查,但同样,尽管活动监视器明确指出它是沙箱,但仍然返回沙箱,

是否可以检查这样的xpc包,看看是否会在沙箱中执行并使用沙箱权利?

1 个答案:

答案 0 :(得分:2)

正在查找com.apple.security.app-sandbox权利是检查XPC服务是否使用App Sandbox的方法。尽管没有此权利,Safari Web Content流程显示为沙盒的原因是它不使用App Sandbox,而是使用OS X中底层sandbox facility的低级接口。在Web内容流程调用的早期WebKit的initializeSandbox()方法,它使用系统专用接口在运行时应用sandbox policy。因此,找出给定的XPC服务是否会创建沙盒进程与查找该服务是否将调用函数一样困难。但是,如果您对此类进程的限制感到好奇,则沙箱策略通常存储在系统某处的.sb文件中。在这种情况下,它位于/System/Library/PrivateFrameworks/WebKit2.framework/Versions/A/Resources/com.apple.WebProcess.sb

相关问题