4

Linux カーネルがホスト カーネルである場合、ゲスト カーネルが仮想マシン内で実行する内容によって悪影響を受けないようにする必要があります。

ゲスト カーネルからホスト カーネルへのインターフェイスをファジングして、そのプロパティをテストしたいと思います。テストをゲスト カーネル内 (たとえば、カーネル モジュール内) で実行し、任意のコードを生成してから、そのコードを実行する必要があることは明らかです。ホスト カーネルがクラッシュした (または何か「興味深い」ことをした) 場合、テストは失敗します。

だから、私の質問は次のとおりです。

  • すでにこれを達成しているテストを知っていますか?
  • 回避する必要があるホスト カーネルをクラッシュさせると予想される命令はありますか?
  • Linuxカーネル内でガベージを生成する最良の方法は何ですか?
  • ガベージを生成したら、どうすれば実行できますか?

とりあえず、一般的なファジング アプローチに焦点を当てたいと思います。後でこのテストが機能するようになったら、カーネル内のさまざまな仮想化された命令とドライバーを外科的にファジングするように変更します。

更新:さらに考えてみると、完全なガベージを使用したファジングは機能しません。ホストをクラッシュさせると予想されるよりも頻繁にゲスト マシンをクラッシュさせるからです。ですから、最初から外科的にアプローチする必要があると思います。何かアドバイス?

4

2 に答える 2

3

大体において、漿液性の0日を見つけることは、想像力に富んだテストを書くことです。テストシステムを構築するときは、その攻撃対象領域を特定する必要があります。Webアプリケーションでは、これは簡単なGET/POSTリクエストです。VMのようなものの場合、より複雑です。提供される実際のハードウェアは、KVMによって作成された幻想です。ある時点で、このデバイスとのこのデータの相互作用はホストによって処理されます。

その他の重要なリソースは、ターゲットですでに検出されている脆弱性を探すことです。多くの場合、プログラマーは非常によく似た間違いを犯し、似たようなバグは非常に一般的です。 これらのCVE:CVE-2010-0297 CVE-2010-0298 CVE-2010-0306 CVE-2010-0309は、LInuxのKVMの脆弱性の良い例です。突出している2つのハードウェアデバイスはCPUとUSBであり、どちらも危険にさらされています。

非常に強力なファジングプラットフォームはPeachです。多くのテストはXMLのみを使用して作成できますが、Pythonを知っている場合は、peachを拡張して何でもできます。

于 2011-04-20T16:22:42.890 に答える