2012-03-12 6 views
1

奇数タイトル、私は知っています。私が本当に尋ねることは、「NSBundles用のTrustedBSD MACフレームワークまたはiOSサンドボックスを作成できますか?私は、モジュールをいつでも「スイッチボード」に差し込むことができる非常に動的なアプリケーションを持っています。それを操作しているユーザーは、おそらく数マイル離れた別のコンピュータにあります。スイッチボードモジュールがどのようにしてコンプライアンスに対応できるのか、また、スイッチボードモジュールがなくなってもシステムを破壊することができないことをユーザーが知る方法はありません。私はiOSのサンドボックスとTrustedBSD(そしてLionのSeatbelt.framework)がプロセスのためにこれを行うことができることを知っていますが、これをバンドルコードでどうやって行うことができますか?すべてのPOSIXコールとにObjCメッセージング(バイナリは、この時点で....コード、バイナリでないと不可能だ)のObjective-CのNSBundleサンドボックス

静的バイナリ解析:

物事私は考えました。

実行時にObjCメッセージをトレースしてログに記録し、1回の迷惑呼の後でモジュールをロックアウトします。 (これは、POSIX呼び出しやそのCの呼び出し、アセンブリの呼び出しには影響しませんし、少なくとも1つの呼び出しがすでに送信されていることになります)。

ここでXPCとロードモジュールを使用してサンドボックス化された外部プロセスを作成し、PDOを使用してそのプロセスにスイッチボードコールをルーティングします(非常に有効ですが、ここではスノーレパードの互換性が必要です)。

すべてのアイデア?私は、一度ロードされたバンドルがアプリケーションのPARTとして終了することを認識しています。これは、セキュリティの実装にさらなる問題をもたらします。

答えて

1

バンドルをプロセスにロードする瞬間、あなたのプロセス。

悪意のあるバンドルは単純にメッセージトレースの原因となるコードを無効にする可能性があるため、実行時にメッセージをトレースするのは無意味です(これは、バンドルには初期化時に実行されるコードが含まれている可能性があるからです)それは発火する。結局のところ、同じメモリ空間で動作しており、これを行うためにObjCメッセージを使う必要はありません。

要するに信頼していないバンドルはロードしないでください。信頼できないバンドルを使用する必要がある場合は、何らかの形のサンドボックスを使用してください(XPCであろうとなかろうと)。

+0

私はこれを完全に理解しています。なぜこれが可能なのですか? (PDCの実行可能ファイルがたくさんあるので、ここではXPCやPDOを避けようとしています。) –

関連する問題