ファジング(Fuzz Testing)
ファジング(Fuzz Testing) とは何ですか?
ファジング(Fuzz Testing)プログラムに大量の不正・ランダム・想定外な入力を与え、クラッシュ・メモリ破壊・セキュリティ脆弱性を自動的に発見するテスト手法。
ファジング(fuzzing)は、関数・パーサ・プロトコル・アプリケーション全体などの対象に変異・生成入力を大量に投入し、クラッシュ、ハング、アサーション違反、サニタイザのレポートを監視します。目的は、境界外アクセス、解放後使用、無限ループ、未処理例外、論理エラーなど、安全性を破る入力を見つけることです。AFL++、libFuzzer、Jazzer、Atheris などの最新ファザーはカバレッジフィードバックにより、新たなコードパスに到達する入力を進化させるため、パーサ・デコーダ・暗号コードに対して特に効果的です。Google の OSS-Fuzz や Microsoft の SDL の中核としてファジングは活用され、影響度の大きな CVE を多数発見しています。
● 例
- 01
OSS-Fuzz が OpenSSL のパーサに対し libFuzzer を常時実行し、メモリ破壊を発見する。
- 02
Jazzer で Java の JSON パーサをファジングし、深くネストした入力による DoS を発見する。
● よくある質問
ファジング(Fuzz Testing) とは何ですか?
プログラムに大量の不正・ランダム・想定外な入力を与え、クラッシュ・メモリ破壊・セキュリティ脆弱性を自動的に発見するテスト手法。 サイバーセキュリティの アプリケーションセキュリティ カテゴリに属します。
ファジング(Fuzz Testing) とはどういう意味ですか?
プログラムに大量の不正・ランダム・想定外な入力を与え、クラッシュ・メモリ破壊・セキュリティ脆弱性を自動的に発見するテスト手法。
ファジング(Fuzz Testing) からどのように防御しますか?
ファジング(Fuzz Testing) に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
ファジング(Fuzz Testing) の別名は何ですか?
一般的な別名: Fuzzing。