Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
WuppieFuzz — LibAFL上に開発されたカバレッジガイド型REST APIファザー | Kitploit
ツール/GitHubGitHub/tno-s3/wuppiefuzz
脆弱性分析APIセキュリティテストウェブセキュリティファジングペネトレーションテストAPIセキュリティ
GitHubtno-s3/wuppiefuzz

WuppieFuzz

LibAFL上に開発されたカバレッジガイド型REST APIファザー

リポジトリを見る
2178312日前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

WuppieFuzz v1.8.0

WuppieFuzzのロゴ。

TNOはWuppieFuzzを開発しました。これはLibAFL上に構築されたカバレッジガイド型REST APIファザーであり、幅広いエンドユーザーを対象に、使いやすさ、発見された欠陥の説明可能性、モジュール性に重点を置いています。WuppieFuzzは3つのテスト設定(ブラックボックス、グレーボックス、ホワイトボックス)すべてをサポートしています。

[!NOTE]
簡単なチュートリアルに沿って進めたい場合は、tutorialをご覧ください!

メディア掲載

WuppieFuzzは以下で紹介されています:

  • The ONE Conference e-magazine 2024
  • Test your APIs easily with TNO's new REST API fuzzer
  • OpenAPI.tools listing: WuppieFuzz
  • Automated REST API Vulnerability Detection with WuppieFuzz (Nordic APIs on YouTube)
  • Thoughtworks Technology Radar: WuppieFuzz

学術論文

学術研究でWuppieFuzzを引用する場合は、CITATION.cffに記載されている推奨文献を使用してください:

Rooijakkers, T., Nijsten, A., Daniele, C., Weitenberg, E., Groenewegen, R., & Melissen, A. (2026). WuppieFuzz: Coverage-Guided, Stateful REST API Fuzzing. In Proceedings of the 12th International Conference on Information Systems Security and Privacy (ICISSP), Volume 2, 221-231. SciTePress. https://doi.org/10.5220/0000217100004061

ライセンス

WuppieFuzzはApache-2.0の下でライセンスされています。詳細はLICENSEをご覧ください。
サードパーティのライセンス通知はTHIRD_PARTY_NOTICESに記載されています。

クイックインストール

主要なオペレーティングシステム(MacOS、Windows、Linux)向けのWuppieFuzzのクイックインストールについては、releasesをご覧いただくか、brew install wuppiefuzzを使用してください。

Docker

Dockerイメージはdocker build . -t wuppiefuzz:localでビルドできます。使用するには、OpenAPI仕様を含むフォルダをマウントする必要があります。ローカルで実行中のサービス(Docker内ではない)をファジングする場合は、ホストネットワークを指定する必要があります:

docker run \
  --network host \
  -v ./fuzzing-folder:/fuzzing-folder \  # The folder will be populated with wuppiefuzz outputs
  -w /fuzzing-folder \
  wuppiefuzz:local fuzz --timeout 60 --report openapi.json

簡単な使い方

How to use WuppieFuzz? - YouTube

開発の前提条件

プロジェクトをビルドするには、以下の依存関係とツールをインストールする必要があります:

sudo apt install -y build-essential pkg-config cmake  # General build tools
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh  # Rust

実行

動作中のWuppieFuzz。

WuppieFuzzを実行する前に、(インストルメント済みの)ターゲットアプリケーションを起動する必要があります。

さらに、WuppieFuzzがリクエストを生成・変異させる方法を認識できるよう、OpenAPI仕様を提供する必要があります。コマンドライン引数のヘルプについては、以下を使用してください:

$ cargo run -- --help # shows help for required parameters and flags

Usage: wuppiefuzz [OPTIONS] [OPENAPI_SPEC.YAML]
...

例えば、JaCoCoエージェントをアタッチしたJavaターゲットに対してWuppieFuzzを実行するには、そのOpenAPIファイル(API仕様内にターゲットが実行されているURLを含む)を指定します。さらに、カバレッジ形式がJaCoCoであることを指定し、以下のようにクラスディレクトリを指定します:

cargo run -- fuzz openapi.yaml --coverage-format jacoco --jacoco-class-dir ../Targets/app/target/classes/

設定ファイル

コマンドライン引数の代わりに、またはコマンドライン引数と組み合わせて設定ファイルを使用したい場合は、--config <CONFIG_FILE>フラグを使用できます。コマンドライン引数を設定ファイルと組み合わせて使用する場合、コマンドライン引数が優先されます。

設定ファイルはyamlファイルであり、指定したい各コマンドライン引数に対して1行を含む必要があります。例えば:

coverage_format: jacoco
output_format: human-readable
source_dir: "/swagger-petstore/src/main/java"
jacoco_class_dir: "/swagger-petstore/target"
timeout: 20

この場合の実行コマンドの例は次のようになります:

$ cargo run -- fuzz --config=config.yaml --report --coverage-host=localhost:6300 --timeout=10 ./openapi.yaml

この行は、コマンドラインと設定ファイルの引数を組み合わせます。--timeoutフラグは両方で指定されているため、コマンドラインで指定されたタイムアウト(10秒)が優先されます。

example_configs/ディレクトリには、JavaコードのJaCoCoによるカバレッジレポート生成用と、PythonコードのLCOVによるカバレッジレポート生成用の2つの設定ファイル例があります。

レポート

--reportフラグを付けてWuppieFuzzを実行すると、reports/内にタイムスタンプを名前とするサブディレクトリが作成されます。サポートされているすべてのカバレッジレポートがこのサブディレクトリに書き込まれます。カバレッジレポートには2種類あります:

  1. エンドポイントカバレッジ:OpenAPI仕様のみを必要とするため、常に生成できます。
  2. コードカバレッジ:現在はJaCoCoのみをサポートしていますが、さらなるサポートを目指しています。難しい点は、カバレッジからソースファイルへのマッピングと、それを用いた堅牢なレポート生成が必要なことです。

さらに、ファジングキャンペーンに関連するすべてのリクエスト情報がデータベースに格納されます。このデータベースはGrafanaダッシュボードを通じて可視化・探索できます。

このリポジトリの構成

  • assets:ロゴ、画像など
  • coverage_agents:さまざまなターゲットに適用するカバレッジ追跡のコードと手順
  • example_configs:WuppieFuzzを設定するための設定ファイル例
  • src:WuppieFuzzのソースコード
  • tutorial:特定のターゲットをファジングする方法とファジング結果の解釈方法に関する、詳細で低レベルなチュートリアル
  • dashboard:ファジング結果とパフォーマンスをトリアージするためのツール

これらの詳細については、各ディレクトリ内のREADMEを参照してください。

開発ビルド

デフォルトでは、WuppieFuzzはC依存関係(OpenSSL、SQLite、Z3)をベンダリングするため、通常のcargo buildがそのまま動作します。開発中のコンパイルを高速化するために、すべてのベンダリングされた依存関係を無効にし、代わりにシステムにインストールされたライブラリにリンクできます。

[!NOTE] z3クレートはZ3 4.15+を必要とし、これはほとんどのLinuxディストリビューションのパッケージマネージャが提供するバージョンよりも新しいです。互換性のあるバージョンを入手するには、Homebrew(brew install z3)経由でZ3をインストールしてください。

システム依存関係

システムに以下のライブラリをインストールしてください:

Debian/Ubuntu:

sudo apt install libssl-dev libsqlite3-dev
brew install z3  # apt's libz3-dev is too old; use Homebrew instead

Linuxでは、Homebrewは非標準のパスにインストールされます。コンパイラとランタイムリンカがZ3を見つけられるよう、そのライブラリディレクトリを環境に追加してください:

eval "$(brew shellenv)"
export LIBRARY_PATH="$(brew --prefix z3)/lib:$LIBRARY_PATH"
export LD_LIBRARY_PATH="$(brew --prefix z3)/lib:$LD_LIBRARY_PATH"

[!TIP] 上記の行を~/.bashrcまたは~/.zshrcに追加すると永続化されます。

Fedora (42+):

sudo dnf install openssl-devel sqlite-devel z3-devel

macOS (Homebrew):

brew install openssl sqlite z3

Cargoエイリアス

リポジトリには.cargo/config.tomlにcargoエイリアスが含まれており、--no-default-featuresでビルドし、すべてのシステムライブラリにリンクします:

cargo dev-build          # build without vendored dependencies
cargo dev-run -- <args>  # run without vendored dependencies
cargo dev-test           # test without vendored dependencies

ドキュメントの生成

cargo doc --no-depsでソースコード内のコメントからドキュメントを生成します。ドキュメントのメインページはtarget/doc/wuppiefuzz/index.htmlになります。

ツールをダウンロード