7

私は、信頼されていないユーザー コードをサンドボックス モードで実行する必要がある Ideone のようなシステムに取り組んでいます。

このために、私はptrace最初の保護層の可能性を探してきました。ただし、いくつかの実験の後、次のように思われます。

  • システム コールが呼び出される前にインターセプトし、入力引数を変更できます。
  • 呼び出されたシステム コールをインターセプトして、戻り値を変更できます。
  • ただし、呼び出しがまったく発生しないようにする方法はないようです (アプリケーション全体を強制終了する以外)。

特定のシステム コールを傍受し、呼び出しが実際に行われることなく、偽の結果コードを返したいと考えています。これを実装する方法はありますか?

4

2 に答える 2

2

サンドボックスは、実行するコードがマルチスレッドでない場合にのみ安全であることに注意してください。また、サンドボックス化されたコードが分岐しないように細心の注意を払う必要があります。

たとえば、Robert Watson によるこの問題に関する論文の次の議論を参照してください。

システム コール ラッパーでの競合の悪用

この論文はその記事にリンクされていますが、ここでも直接リンクを提供します。

「システム コール ラッパーの同時実行の脆弱性の悪用」

より良いアプローチは、Watson が推奨しているように見えます: セキュリティ フレームワークを完全にカーネルに統合し、並行性の問題を回避するためにその使用に注意してください。Linux、NetBSD、Mac OS X、およびその他のセキュリティ指向のシステムは、すでにそのようなフレームワークを提供しているため、これらのシステムを使用する場合に必要なのは、既存のフレームワーク内でポリシーを実装することだけです。つまり、システム コール ラッパーやその他のシステム コール介入メカニズムにセキュリティ ポリシーを実装しようとさえしないでください。

于 2012-11-11T20:28:29.950 に答える