6

私は現在、コンピューティング関連の学位を取得している大学の学生であり、現在のプロジェクトは Linux カーネルの脆弱性を見つけることに重点を置いています。私の目的は、脆弱性を見つけるために、カーネル (バージョン 3.0 をターゲット) を静的に監査することと「ファズ」することの両方を行うことです。

私の最初の質問は、Linux カーネルの「ファジング」は可能ですか? ということです。多くのプロトコルなどをファジングしている人は聞いたことがありますが、カーネルモジュールについてはあまり知りません。また、Linuxシステムではすべてがファイルとして表示されるため、そのインターフェイスを介してカーネルモジュールへの入力が確実に可能であるべきであることも理解しています。

2 番目の質問は、どのファザーをお勧めしますか? 前述のように、ファジング プロトコルには多くのファザーが存在しますが、カーネル モジュールを攻撃するときにこれらの多くが役立つとは思いません。明らかに、独自のファザーをゼロから「作成」できる Peach ファザーなどのフレームワークがあり、おそらく優れていると思われますが、Peach を何度もインストールしようとしても無駄でした。インストールするだけですでに経験した困難を考えると(誰かがまともなインストールチュートリアルを知っているなら、私に知らせてください:P)。

この問題について、ご提供いただける情報をいただければ幸いです。私が選んだトピックの幅を考えると、方向性についてのアイデアはいつでも大歓迎です。同様に、他の場所から始めるように言わないようにお願いしたいと思います。目の前のタスクのサイズは理解していますが、とにかく挑戦します (私は青空の思想家です:P AKA 牛のように頑固です)

乾杯

A.スミス

4

3 に答える 3

6

良い出発点は、Dave Jones の Linux カーネル ファザーである Trinity を拡張することだと思います: http://codemonkey.org.uk/2010/12/15/system-call-fuzzing-continued/およびhttp://codemonkey.org .uk/2010/11/09/system-call-abuse/

Dave は、それをもう少し拡張するたびに、より多くのバグを見つけるようです。基本的な考え方は、ファジングしているシステム コールを調べて、完全にランダムなジャンクを渡すのではなく、実際のシステム コール コードで少なくとも基本的な健全性チェックに合格するランダムなジャンクをファザーに選択させることです。言い換えれば、カーネル ソースを使用して、通常は完全にランダムな入力が行われるよりも、ファザーがシステム コールに深く入り込むようにします。

于 2011-09-26T23:08:00.040 に答える
4

カーネルの「ファジング」は、目標を説明する非常に幅広い方法です。カーネルの観点からは、次のことができます

  • システムコールをファジングしてみる
  • /dev のキャラクターデバイスとブロックデバイス

何を達成したいのかわからない。

システム コールをファジングするということは、すべての Linux システム コール (http://linux.die.net/man/2/syscalls) をチェックアウトし、奇数のパラメーター値によって通常の作業を妨害できるかどうかを試すことを意味します。

キャラクタードライバーまたはブロックドライバーをファジングすると、/dev-interfaces を介してデータを送信しようとすることになり、最終的には奇妙な結果になります。

また、非特権ユーザーによる試行と root による試行を区別する必要があります。

私の提案は、あなたの試みを提案のサブセットに絞り込むことです。めちゃくちゃ広いです。

がんばって - アレックス。

于 2011-09-26T20:17:58.600 に答える
1

ファジングの 1 つの方法は、システム コール ファジングを使用することです。

基本的には、システム コールを取得し、可能な値の範囲全体にわたって入力をファジングするという考え方です。システム コールに対して定義された仕様内に留まるかどうかは問題ではありません。

于 2011-10-31T16:12:17.717 に答える