ファジング
セキュリティ研究者は、ClusterFuzzがアップロードされたファザーでクラッシュを検出した場合、独自のファザーをアップロードしてバグバウンティを収集できる。 2014年9月には、2014年シェルショック脆弱性の類似する脆弱性として開示されたセキュリティバグ広く使用でUNIXのbashシェル。Shellshockのほとんどの脆弱性は、後述するファジングツールAFLを使用して発見された。発見された脆弱性によりは、一部のWebサーバー展開など、多くのインターネット向けサービスはBashを使用して特定の要求を処理し、攻撃者が脆弱なバージョンのBashに任意のコマンドを実行させることを可能することで、攻撃者はコンピューター・システムヘの不正アクセスを取得することができた。 2015年4月、Hanno Bockは、AFLが2014年のHeartbleedの脆弱性の発見手法を報告している。Heartbleedの脆弱性は2014年4月に公開された。これは、攻撃者が暗号化された通信を解読できる深刻な脆弱性であった。この脆弱性は、TLSを実装するOpenSSLに誤って導入され、インターネット上のサーバーの大部分で使用されていた。Shodanは2016年4月に238,000台、2017年1月に200,000台のマシンがまだ脆弱であると報告されている。 2016年8月、米国国防高等研究計画局(DARPA)は、キャプチャー・ザ・フラッグコンテストとしてサイバーグランドチャレンジを開催した。
自動バグトリアージは、多数の障害を誘発する入力を根本原因ごとにグループ化し、個々のバグに重大度ごとに優先順位を付けるために使用される。ファザーは多数の入力を生成し、障害を引き起こすものの多くは同じソフトウェアのバグを効果的に公開する可能性がある。これらのバグの一部のみがセキュリティ上重要であり、より高い優先度でパッチを適用する必要がある。たとえば、CERT Coordination Centerは、生成されたスタックトレースによってクラッシュする入力をグループ化し、悪用される可能性に応じて各グループを一覧表示するLinuxトリアージツールを提供している。Microsoft Security Research Center(MSEC)は、クラッシュする入力のハッシュを最初に作成してその一意性を判断し、次のように悪用可能性の評価を割り当てるツールを開発した。
悪用可能
おそらく悪用可能
おそらく悪用できない
判明不能
以前は報告されていなかったトリーアジされたバグが、バグ追跡システムに自動的に報告される場合がある。たとえば、OSS-Fuzzは、セキュリティが必要ないくつかのソフトウェアプロェジクトに対して、大規模で長期にわたるファジングキャンペーンを実行している。このキャンペーンでは、これまで報告されていなかった個別のバグがバグトラッカーに直接報告された。OSS-Fuzzバグトラッカーは、脆弱なソフトウェアをメンテナに自動的に通知し、アップロードされた最小化された障害誘発入力を使用して、バグが最新のリビジョンで修正されたかどうかを定期的にチェックする機能を有する。
オープンソースソフトウェアの分野では、Michat Zalewskiによるファジングツール「アメリカンファジーロップ」(American Fuzzy Lop、名前はウサギの品種に由来する。略してAFL)が2014年から普及している。 AFLは、ファザーafl-fuzzに加えて、他の補助プログラムが利用可能であり、テストケースの最小化とテストコーパスの最小化に有効である。テスト対象のプログラム(テスト項目)のソースコードをインストルメント化することにより、afl-fuzzは、ソフトウェアのどのブロックが特定のテスト刺激で実行されたかを後で確認できる。そのため、AFLはグレーボックステストに使用することができる。遺伝的手法による検査データの生成に関連して、ファザーはテストデータをより適切に生成できるため、このメソッドを使用しない他のファザーよりも、処理中に以前は使用されていなかったコードブロックが実行される。その結果、コードカバレッジは比較的短い時間で比較的高い結果が得られる。
ファジングはセキュリティにおける万能薬ではない。以下のようなものはファジングでは問題を見つけることができない。
アクセス制御の欠陥
粗悪な設計ロジック(リバースエンジニアリングの段階で見つかる可能性はあるが、それはファジング自体によるものではない)
バックドアの検出(ファジングツールでは、本来の動作との見分けはつかない)
メモリ破壊(スタックの書き換え等による権限昇格など)
複数の脆弱性の合わせ技
また、テスト終了条件、つまりどれだけの入力データを投入すれば充分にテストされたといえるかといった点や、コード網羅率を現状よりも高めるにはどのような入力値を与えればよいのかといった点が判断しづらいという問題もある。