ファジングとは
この記事は約 2 分で読めます
ファジング (Fuzzing) とは、ソフトウェアに大量のランダムまたは 半ランダムなデータを自動入力し、クラッシュや異常動作を引き起こす 入力パターンを発見するセキュリティテスト手法です。 Google の OSS-Fuzz プロジェクトでは、オープンソースソフトウェアに対する 継続的ファジングで 10,000 件以上の脆弱性が発見されており、 2025 年時点で 1,000 以上のプロジェクトが参加しています。
現場での使用例
「画像処理ライブラリのアップデート前に、AFL++ で 48 時間の ファジングを実施しました。JPEG パーサーでヒープバッファオーバーフローを 引き起こす入力パターンが 3 件見つかり、リリース前に修正できました。」
ファジングプロセスフロー
ファジングの種類
ファジングは大きく 3 種類に分類されます。ブラックボックスファジングは プログラムの内部構造を知らずにランダムな入力を生成する最も単純な手法です。 ホワイトボックスファジングはソースコードを解析して コードカバレッジを最大化する入力を生成します。 グレーボックスファジングは実行時のカバレッジ情報をフィードバックして 入力を進化させる手法で、AFL (American Fuzzy Lop) や libFuzzer が代表的です。ペネトレーションテストと 組み合わせることで、より網羅的な脆弱性発見が可能になります。ファジングの入門書 (Amazon)で体系的に学べます。
実務での活用
ファジングは特にパーサー (JSON、XML、画像フォーマット)、 ネットワークプロトコル処理、ファイル入出力など、 外部からの入力を処理するコードに効果的です。 CI/CD パイプラインに組み込んで継続的にファジングを実行する 「Continuous Fuzzing」が近年のトレンドで、セキュアコーディングと 組み合わせることで開発段階での脆弱性検出率が向上します。 パスつく.com で生成した強力なパスワードでファジング環境や CI/CD システムへのアクセスを保護し、テスト結果の改ざんを防ぎましょう。セキュリティテストの書籍 (Amazon)も参考になります。