2

目標: 署名されていることが検証された (または任意のアルゴリズムに対して検証された) .so/.bundle をロードします。

OSXの組み込みバイナリ署名ツールまたはカスタムアルゴリズムを使用して.so/.bundleを検証し、その.so/.bundleをdlopenでロードできるようにしたい...

これのレンチは、チェックしてからロードするプログラムによる方法がないように見えることです。ファイルを手動でチェックし、後でロードすることもできますが、誰かがそのファイルを別のファイルと交換できる機会があります。

ファイルシステムのロックは OSX では推奨事項であるため、この目的にはあまり役に立ちません。

4

1 に答える 1

1

*.so または *.dylib ファイルの sha256sum を署名に保存できます。証明書を検証したら、*.so または *.dylib をランダムな一時的な場所にコピーし、コピーした *.so または *.dylib に指定されたチェックサムがあることを確認できます。存在する場合は、コピーを動的にロードできます。ランダムな一時ファイルを上書きする機会がまだ少しあるかもしれませんが、それはかなり小さいと思います。dlopen を呼び出した後、dlsym を呼び出す前に、チェックサムを再検証できると思います。チェックサムが一致しない場合は、関数を実行せずに dlcose を呼び出してライブラリをアンロードできます。

于 2009-07-21T16:37:28.150 に答える