CyberGlossary

アプリケーションセキュリティ

ファジング(Fuzz Testing)

別称: Fuzzing

定義

プログラムに大量の不正・ランダム・想定外な入力を与え、クラッシュ・メモリ破壊・セキュリティ脆弱性を自動的に発見するテスト手法。

ファジング(fuzzing)は、関数・パーサ・プロトコル・アプリケーション全体などの対象に変異・生成入力を大量に投入し、クラッシュ、ハング、アサーション違反、サニタイザのレポートを監視します。目的は、境界外アクセス、解放後使用、無限ループ、未処理例外、論理エラーなど、安全性を破る入力を見つけることです。AFL++、libFuzzer、Jazzer、Atheris などの最新ファザーはカバレッジフィードバックにより、新たなコードパスに到達する入力を進化させるため、パーサ・デコーダ・暗号コードに対して特に効果的です。Google の OSS-Fuzz や Microsoft の SDL の中核としてファジングは活用され、影響度の大きな CVE を多数発見しています。

  • OSS-Fuzz が OpenSSL のパーサに対し libFuzzer を常時実行し、メモリ破壊を発見する。
  • Jazzer で Java の JSON パーサをファジングし、深くネストした入力による DoS を発見する。

関連用語