ファジング
ファジングは主に、悪意を持って悪用される可能性のあるセキュリティクリテイカルなプログラムの脆弱性を明らかにするための自動化された手法として使用される。より一般的には、ファジングは、バグが存在しないことではなく、存在することを示すために使用される。バグを見つけずにファジングキャンペーンを数週間実行しても、プログラムが正しいことは証明とはならなく、プログラムはまだ実行されていない入力に対して失敗する可能性がある。すべての入力に対してプログラムを実行することは非常にコストがかかるが、プログラムがすべての入力に対して正しいことを証明することが目的である場合は、形式仕様が存在し、形式手法の手法を使用する必要がある。 以下、ファジングが特に効果を発揮している用途を挙げて解説する。
これは、ソフトウェアの欠陥をリアルタイムで発見悪用、修正できる自動防御システムを開発することを目的としたイベントであった。ファジングは、対戦相手のソフトウェアの欠陥を発見するための効果的な攻撃戦略として使用され、脆性弱検出の自動化に大きな可能性が示された。なお、優勝はデイビット・ブラムリーが率いるチームFor All Secureによって開発されたシステム「メイヘム」であった。 2016年9月、マイクロソフトは、ソフトウェアのセキュリティ上の重大なバグを検出するためのクラウドベースのファジングテストサービスであるProject Springfieldを発表した。2016年12月、GoogleはOSS-Fuzzを発表した。これにより、セキュリティが重要ないくつかのオープンソースプロジェクトを継続的にファジングできる。セキュリテイカンファレンスBlackHat2018で、Christopher Domasは、ファジングを使用してプロセッサ内の隠れたRISCコアの発見手法を提案した。このコアは、既存のセキュリティチェックをバイパスして、リング3からリング0コマンドを実行することができた。 2020年9月、MicrosoftによってOne Fuzzがリリースされた。これは、ソフトウェアのバグの検出を自動化し、自己ホスト型のサービスとしてのファジングプラットフォームであり、WindowsとLinuxをサポートしている。
静的解析は、プログラムを実際に実行せずに分析する。これにより、ツールが実際には存在しないプログラムの問題を報告する誤検知が発生する可能性がある。動的プログラム分析と組み合わせたファジングを使用して、報告された問題を実際に確認できる入力を生成しようとすることができる。