FuzzHound — API向けスマートFuzzツール

Security

概要

FuzzHoundはAPIセキュリティテストに特化したオープンソースのFuzzツールです。Swagger 2.0 / OpenAPI 3.0の仕様書(JSON/YAML)を自動解析してエンドポイント、パラメータ、ヘッダ、クッキー、リクエストボディを抽出。$ref参照の解決やenum値の検出を行い、辞書ベースのユーザ名/パスワード爆破、数値のランダム/レンジテスト、enum列挙の網羅的試験など複数のFuzzモードを提供します。レスポンスのキーワード検出やエラーパターン識別により脆弱性候補をピックアップし、APIテストの自動化と効率化を支援します。

GitHub

リポジトリの統計情報

  • スター数: 4
  • フォーク数: 0
  • ウォッチャー数: 4
  • コミット数: 5
  • ファイル数: 6
  • メインの言語: Python

主な特徴

  • Swagger/OpenAPI(v2/v3)を自動解析してAPI構造を抽出
  • $ref参照の完全解決とenumの自動検出・テスト
  • 辞書ベースのユーザ名/パスワードFuzz、数値レンジ/乱数Fuzz、enum列挙テスト
  • レスポンスのキーワード検出やエラーパターンで脆弱性を判別

技術的なポイント

FuzzHoundの技術的核はOpenAPI/Swaggerの仕様に密着したパーサーと、それに基づくリクエスト生成エンジンです。まずJSON/YAMLの読み込みでスキーマツリーを構築し、Swagger v2のdefinitionsとOpenAPI v3のcomponentsを識別してリソースを列挙します。$refは再帰的に解決して完全なスキーマを再構成するため、ネストした参照や外部参照にも対応可能な設計が想定されます。

パラメータ解析ではpath/query/header/cookie/bodyを自動分類し、enumやrequired属性を元にテスト戦略を決定。辞書攻撃はユーザ名・パスワードそれぞれにカスタム辞書を適用し、組み合わせや全パラメータモードをサポートします。数値型のFuzzはランダム値生成と範囲走査の両方を提供し、境界値やオーバーフローの検出を狙います。

リクエスト送信はHTTPクライアント(requestsなど)で行い、Content-Typeに応じてJSON/フォームデータを適切にシリアライズ。認証ヘッダやクッキー挿入、レート制御(スリープやスレッド制御)により実環境への影響を最小化しつつ高速に試行できます。レスポンス解析はステータスコード、ボディのキーワードマッチ、エラーメッセージパターン照合により脆弱性の候補を抽出。ログとレポートを残すことで後続の検証作業を容易にします。

また、モジュール構造による拡張性を想定しており、検出ロジックやFuzzモードをモジュール化することで新しい攻撃パターンや解析機能の追加が容易です。全体としては、仕様駆動のテストケース生成と実用的なレスポンスフィルタリングを両立させた設計が特徴です。

プロジェクトの構成

主要なファイルとディレクトリ:

  • LICENSE: file
  • README.md: file
  • config: dir
  • fuzzhound.py: file
  • modules: dir

…他 1 ファイル

まとめ

OpenAPI準拠のAPIを効率的にFuzzし、脆弱性候補を自動抽出する実用的なツールです。

リポジトリ情報: