2

通常、アプリケーションにサンドボックス資格が存在するかどうかは、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 ヘルパー アプリがサンドボックスで実行されていることがアクティビティ モニターに表示されますが、それらに対して codesign を呼び出しても何も明らかになりません。Safari の XPC ヘルパー アプリケーションの 1 つの例: -

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 バンドルをチェックして、サンドボックスで実行され、サンドボックスの資格を使用するかどうかを確認することはできますか?

4

1 に答える 1

2

XPC サービスが App Sandbox を使用しているかどうかを確認する方法は、com.apple.security.app-sandbox 資格を探すことです。この権限がないにもかかわらず、Safari Web コンテンツ プロセスがサンドボックス化されていると表示される理由は、アプリ サンドボックスを使用せず、OS X の基礎となるサンドボックス機能への低レベル インターフェイスを使用するためです。Web コンテンツ プロセスの早い段階で、WebKit のinitializeSandbox( )メソッド。システム プライベート インターフェイスを使用して、実行時にサンドボックス ポリシーを適用します。したがって、特定の XPC サービスがサンドボックス化されたプロセスを作成するかどうかを確認することは、そのサービスが関数を呼び出すかどうかを確認するのと同じくらい困難です。ただし、そのようなプロセスに課せられた制限に興味がある場合、サンドボックス ポリシーは通常、..sbシステム上のどこかにファイルします。この場合は/System/Library/PrivateFrameworks/WebKit2.framework/Versions/A/Resources/com.apple.WebProcess.sbです。

于 2013-11-15T00:06:55.297 に答える