継続的ファジングをすり抜けるバグの実態——OSS-Fuzzの盲点

ファジングの限界と残存バグ

OSS-Fuzz長期登録プロジェクトにも脆弱性が残存
コードカバレッジの偏りが盲点を生む
ファズ耐性のある脆弱性パターンが存在する
初期化されない変数が検出困難なバグの代表例
コンテキスト依存脆弱性はファジングに不向き
状態依存のバグはランダム入力では再現しにくい

改善策と今後の方向性

構造化入力生成で新しいコードパスを探索
カバレッジ誘導ファジングの精度向上が鍵
LLMを使った脆弱性ターゲット特定の可能性
手動コードレビューとの組み合わせが有効
フォーリング・テストの補完として活用
セキュリティ研究者向けのFuzzing 101コース提供
詳細を読む

GitHubセキュリティ研究者が、継続的ファジングに長期登録されているオープンソースプロジェクトにも依然として脆弱性が残存する理由を分析しました。ファジングは強力なツールですが、構造的な盲点を持っています。

最大の問題はコードカバレッジの偏りです。ランダムな入力生成は特定のコードパスを繰り返し実行する傾向があり、稀な実行条件や複雑な状態依存の脆弱性には到達しません。初期化されない変数など、特定の条件が揃って初めて現れるバグは特に見逃されやすいです。

解決策として構造化入力生成と、カバレッジ誘導ファジングの精度向上が挙げられています。またLLMを活用して脆弱になりやすいコードパターンを特定し、ファジングの効率を上げる研究も進んでいます。

ファジングは単独では万能ではなく、手動コードレビューやSAST(静的解析)との組み合わせが不可欠です。GitHubはFuzzing 101コースを提供し、セキュリティエンジニアのスキル底上げを支援しています。