ファジングとは?
ふぁじんぐ
ファジングとは、ソフトウェアに無効・ランダム・予期しないデータを大量に入力してバグや脆弱性を発見するセキュリティテスト手法です。
ファジング(Fuzzing)は、テスト対象のソフトウェアやシステムに対して、無効なデータ・ランダムなデータ・意図的に異常なデータ(「ファズ」と呼ぶ)を自動的かつ大量に入力し、クラッシュ・例外・メモリエラーなどの予期しない挙動を引き起こしてバグや脆弱性を発見するテスト技法です。
ファジングの基本的な仕組みは、ファズ生成→入力→応答監視のサイクルを高速で繰り返すことです。対象がクラッシュしたり異常な応答を返したりした場合、その入力がバグの原因として記録されます。これを開発者が分析することで、バッファオーバーフロー・整数オーバーフロー・フォーマット文字列の脆弱性などを発見できます。
ファジングのアプローチにはいくつかの種類があります。
- ブラックボックスファジング:内部構造を知らずにランダムなデータを入力する
- グレーボックスファジング(カバレッジガイド型):コードのカバレッジ情報をフィードバックに使い、未探索の経路を優先して探索する
- ホワイトボックスファジング:ソースコードや中間表現を解析してテストケースを生成する
Google のOSSFuzzやAmerican Fuzzy Lop(AFL)などのツールが広く使われており、オープンソースソフトウェアの重大な脆弱性がファジングによって次々と発見されています。ブラウザ・OSカーネル・ネットワークプロトコルの実装など、外部入力を受け取るあらゆるソフトウェアがファジングの対象となりえます。現代のセキュリティ開発ライフサイクルにおいて、ファジングは不可欠なテスト工程として位置づけられています。
使い方・例文
セキュリティ研究者がブラウザのPDF解析機能にファジングを適用したところ、クラッシュを引き起こす入力が見つかり、そこから任意コード実行の脆弱性が判明した、といった文脈で登場します。
この用語をシェア
最終更新: