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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ethibench — AIペネトレーションテストエージェントの評価フレームワークで、LLMベースのセマンティックマッチング、二部解決、実世界のターゲットにわたる累積分析を使用して、検証済みの脆弱性発見を測定します。 | Kitploit
ツール/GitHubGitHub/jd0965199-oss/ethibench
ペネトレーションテストフレームワーク脆弱性分析ペネトレーションテスト機械学習論文と研究学習と教育AIセキュリティ
GitHubjd0965199-oss/ethibench

ethibench

AIペネトレーションテストエージェントの評価フレームワークで、LLMベースのセマンティックマッチング、二部解決、実世界のターゲットにわたる累積分析を使用して、検証済みの脆弱性発見を測定します。

リポジトリを見る
334ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

制御環境から実世界へ:実世界におけるペンテストエージェントの評価

AI ペンテストエージェントは、攻撃的セキュリティシステムとして信頼性を高めつつありますが、現在のベンチマークは、実世界のターゲットに対してどのシステムが最も優れた性能を発揮するかについて、依然として限定的な指針しか提供していません。既存の評価の大半は、フラグ獲得、リモートコード実行、エクスプロイトの再現、軌跡の類似性といった事前定義された目標を、簡素化された狭い環境で評価・最適化しています。これらのベンチマークは限定された能力を測定する上では有用ですが、実際のペンテストに求められる複雑さ、自由な探索、戦略的な意思決定を十分に捉えてはいません。本稿では、評価をタスク完了から検証済み脆弱性の発見へと転換する実践的な評価フレームワークを提示し、複数の攻撃面と脆弱性クラスにまたがる十分に複雑なターゲットでの評価を可能にします。このフレームワークは、構造化されたグラウンドトゥルースと LLM ベースのセマンティックマッチングを組み合わせて脆弱性を特定し、現実的な曖昧性の下で findings をスコアリングする二部マッチングによる解決、グラウンドトゥルースの継続的なメンテナンス、確率的エージェントの反復的かつ累積的な評価、効率メトリクス、持続可能な実験のための削減スイートの選択を統合します。この方法論は、AI ペンテストエージェントのより現実的で運用上有益な比較を可能にし、最先端を拡張します。再現性を確保するため、提案する評価プロトコルの専門家注釈付きグラウンドトゥルースとコードも併せて公開します。

セキュリティテストツールの評価パイプライン。LLM ベースのマッチングを使用してツールの findings をグラウンドトゥルースデータセットと比較し、precision、recall、F1、F0.5 のメトリクスを生成します。

インストール

poetry install

Python 3.11+ と Poetry のインストールが必要です。

クイックスタート

# 1. Set your LLM API key
export OPENAI_API_KEY="..."

# 2. Run evaluation
ethibench evaluate ./my_experiment --dataset path/to/dataset.yaml

# 3. View results
cat ./my_experiment/evaluation_outputs/summary.md

CLI コマンド

ethibench evaluate

実験ディレクトリに対して完全な評価パイプラインを実行します。

ethibench evaluate <experiment_dir> --dataset <dataset.yaml> [options]

# Batch: evaluate all experiments in a folder
ethibench evaluate --parent-dir final_experiments/ --dataset <dataset.yaml>

# Force re-evaluation (ignore cached artifacts)
ethibench evaluate <experiment_dir> --dataset <dataset.yaml> --force

引数:

  • experiment_dir —(任意)ターゲットのサブディレクトリ(または、それぞれがターゲットサブディレクトリを持つ run_* サブディレクトリ)を含むディレクトリ。--parent-dir 使用時は省略可能。

オプション:

  • --dataset, -d —(必須)データセット YAML ファイルへのパス。
  • --gt-dir, -g — グラウンドトゥルースディレクトリ。デフォルトはデータセット YAML の隣の gt/。
  • --output-dir, -o — 出力ディレクトリ。デフォルトは実験ディレクトリ内の evaluation_outputs/。バッチモードでは無視されます。
  • --replicates, -n — LLM マッチングの反復回数(デフォルト: 1)。
  • --force, -f — キャッシュされた成果物を無視してすべてのステップを再実行します。デフォルトでは、既存の中間結果(raw matchings、bipartite matchings、metrics)が再利用されます。
  • --parent-dir, -p — バッチ評価する複数の実験ディレクトリを含む親フォルダ。直下のすべてのサブディレクトリが実験として扱われます。

処理内容:

  1. findings の収集 — ターゲットサブディレクトリ(フォルダ名 = target_id)をスキャンし、各 findings.jsonl を読み込んで、データセット YAML から subset_name を割り当てます。
  2. raw LLM マッチング — LLM を使用して、すべての finding をすべてのグラウンドトゥルースエントリと比較します。
  3. 二部マッチング — 最適な 1 対 1 の割り当てを求めるハンガリアンアルゴリズム。
  4. メトリクス — サブセットごとに TP、FP、FN、重複、precision、recall、F1、F0.5、severity score を計算します。
  5. 集約 — 反復とラン全体で平均し、加重/非加重の全体スコアを計算します。
  6. コストメトリクス — 存在する場合、ターゲットごとの metrics.json を読み込み、コスト/トークン/所要時間を集約します。
  7. プロット — evaluation_outputs/plots/ に PNG チャートを生成します。
  8. サマリー — evaluation_outputs/summary.md を書き出します。

ethibench analyze

既存の評価出力に対して分析ツールを実行します。

ethibench analyze <experiment_dir> --dataset <dataset.yaml> [options]

# Batch: analyze all experiments and produce aggregated results
ethibench analyze --parent-dir final_experiments/ --dataset <dataset.yaml>

引数:

  • experiment_dir —(任意)分析対象の実験ディレクトリ。--parent-dir 使用時は省略可能。

オプション:

  • --dataset, -d —(必須)データセット YAML ファイルへのパス。
  • --gt-dir, -g — グラウンドトゥルースディレクトリ。デフォルトはデータセット YAML の隣の gt/。
  • --output-dir, -o — 評価出力ディレクトリ。デフォルトは実験ディレクトリ内の evaluation_outputs/。
  • --parent-dir, -p — バッチ分析する複数の実験ディレクトリを含む親フォルダ。実験ごとの分析に加え、集約結果を生成します。

実験ごとの出力(evaluation_outputs/analysis/):

  • duplicates.json — raw マッチングでは一致したが、二部最適化によって除外された findings。
  • unmatched.json — グラウンドトゥルースに一致しない findings(false positives)。
  • statistics.json — GT カバレッジ統計、GT ごとの findings 数の分布。

集約出力(--parent-dir 指定時のみ、<parent-dir>/aggregated_analysis/ 内):

  • all_duplicates.jsonl — 全実験にわたるすべての重複 findings(JSONL。experiment フィールド付きの完全な finding オブジェクト)。
  • all_false_positives.jsonl — 全実験にわたるすべての未マッチ/false positive findings(JSONL 形式)。
  • gt_statistics_avg.json — サブセットごとの平均 GT カバレッジと、実験ごとのカバレッジサマリー。

ethibench compare

複数の実験にわたる評価結果を比較し、並べて表示するプロットとサマリーレポートを生成します。各実験には既に評価出力が存在している必要があります(先に ethibench evaluate を実行してください)。ラベルは常にディレクトリ名です。

# Explicit experiment directories
ethibench compare exp-gpt4o/ exp-claude/ --output-dir comparison/

# Auto-discover all experiments under a parent folder
ethibench compare --parent-dir all-experiments/ --output-dir comparison/

# Mix: explicit dirs + auto-discovery
ethibench compare exp-extra/ --parent-dir all-experiments/ --output-dir comparison/

引数:

  • experiment_dirs —(任意)明示的に含める 1 つ以上の実験ディレクトリ。

オプション:

  • --output-dir, -o —(必須)比較結果の出力ディレクトリ。
  • --parent-dir, -p — 実験を自動検出する親フォルダ。evaluation_outputs/ フォルダを含む直下のサブディレクトリがすべてアルファベット順に含まれます。明示的な experiment_dirs と組み合わせることができます。

出力(--output-dir 内):

  • comparison.json — 全実験の生の比較データ。
  • plots/ — 並べて表示する PNG チャート。
  • comparison.md — Markdown サマリー。
  • pairwise_comparison.md — ペアワイズ A/B 統計比較(F1 上位 4 件の実験)。
  • pairwise_comparison.tex — ペアワイズ表の LaTeX 版。
  • cumulative-analysis/ —(累積データが存在する場合)平均 F1 と累積 F1 を比較するデルタ分析と、累積比較プロット。

ファイル形式

Findings(findings.jsonl)

1 行に 1 つの JSON オブジェクト。必須フィールド: title、description。任意: url、cwe、severity、score、steps、evidence、metadata など。

各 findings.jsonl はターゲットディレクトリ内に置かれます。ディレクトリ名が、findings がどのターゲットに属するかを決定します。

{"title": "SQL Injection in Login", "description": "User input not sanitized", "cwe": "89"}

グラウンドトゥルース(*_gt.jsonl)

1 行に 1 つの JSON オブジェクト。

{"id": "gt-001", "name": "SQL Injection", "subset_name": "MyApp", "target_id": "app", "category": "CWE-89", "description": "Database query vulnerability", "cvss": 9.8}

データセット YAML

- subset: "MyApp"
  weight: 1.0
  targets:
    - target_id: "app"

target_id は各ラン フォルダ配下のディレクトリ名と一致している必要があります。評価時、ethibench はラン ディレクトリをスキャンして既知の target_id 値に一致するサブディレクトリを探し、その findings.jsonl を読み込んで対応するサブセットに割り当てます。オプションの gt_file フィールドでカスタム GT ファイルパスを指定できます。

設定

すべての設定は環境変数を介して行います:

変数デフォルト説明
ETHIBENCH_LLM_PROVIDERopenaiLLM プロバイダー: openai、anthropic、ollama、gemini
ETHIBENCH_LLM_MODELgpt-5.4-miniモデル名
ETHIBENCH_TEMPERATURE0.3サンプリング温度
ETHIBENCH_API_URL—カスタム API エンドポイント(Ollama または互換 API 用)
ETHIBENCH_CONCURRENCY50LLM 呼び出しの最大同時実行数
ETHIBENCH_MAX_RETRIES5LLM 呼び出しあたりの最大リトライ回数
ETHIBENCH_MAX_PARALLEL_RUNS3実験内で並列評価される最大ラン数
ANTHROPIC_API_KEY—Anthropic API キー
OPENAI_API_KEY—OpenAI API キー
GEMINI_API_KEY—Google Gemini API キー

ディレクトリ構造

入力

単一ラン:

my_experiment/
├── app.example.com/         # target_id as directory name
│   ├── findings.jsonl       # findings for this target
│   └── metrics.json         # optional: cost/token info
├── api.example.com/
│   ├── findings.jsonl
│   └── metrics.json

複数ラン:

my_experiment/
├── run_001/
│   ├── app.example.com/
│   │   ├── findings.jsonl
│   │   └── metrics.json
│   └── api.example.com/
│       └── findings.jsonl
├── run_002/
│   ├── app.example.com/
│   │   └── findings.jsonl
│   └── api.example.com/
│       └── findings.jsonl

出力

ツールをダウンロード