mcpField
H
harness-security-bench

harness-security-bench

github.com/ruvnetセキュリティ80.0k204 回インストール今日更新
リポジトリ

harness-security-bench について

harness-security-benchはmetaharness-darwinのsecurity benchコマンドをスキルとして実行し、既知の脆弱性とデコイを含むベンチマークで検出機構を評価します。全体結果とゲート別結果、ベースラインとの比較を出力し、定期的な評価に使えます。

主な機能

  1. 01セキュリティベンチマークの実行
  2. 02全体の合否結果の解析
  3. 03各ゲートの結果の集計
  4. 04ベースラインとチャンピオン指標の比較
  5. 05失敗時のアラート

活用シーン

  1. 01検出機構の定期的な評価
  2. 02ベースラインとチャンピオン結果の比較
  3. 03ベンチマーク未達時のCI失敗

MCP 対応

MCPペンテスト領域のセキュリティ評価に対応しますが、入力にはMCPクライアントにツールやリソースを公開するとの記載はありません。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/ruvnet/ruflo --skill harness-security-bench

インストール後、Claude Code で/harness-security-benchを入力して読み込まれたか確認します。

詳細

上流の metaharness-darwin security bench コマンドを公開します。これは上流独自の ADR-155 — Darwin Shield であり、ruflo の夜間セルフラーニングセキュリティハーネスにとって最も近い参照実装です(#2417)。

ruflo の ADR-155 にとって重要な理由

ruflo の ADR-155 では、3 つの学習ループ(次元ごとの信頼度、重大度のキャリブレーション、自動修正の入札)を提案しています。ループ A は蓄積された (finding, dimension, human_outcome) タプルで学習しますが、基盤となる検出メカニズムが既知の正解コーパスに収束していなければ、勾配シグナルの健全性は保証されません。Darwin Shield は、10 個の脆弱性と 9 個のデコイからなる正解データセット上で、まさにそのメカニズムを進化させます。これを毎晩実行することで、次のことが可能になります。

  • 実証的な下限: Darwin Shield のチャンピオンがベンチコーパスで TPR=1/FPR=0 を達成できなければ、ループ A の報酬シグナルはノイズです。
  • ドリフト検出: 週ごとのチャンピオン適応度の差分から、セキュリティ環境(または変異ポリシー)が変化したタイミングを把握できます。
  • ベースラインの多様性: 4 つのベースライン(B0–B3)が、次元ごとの信頼度を重み付けするための 4 つの基準点となります。

アルゴリズム

実装:scripts/security-bench.mjs。

  1. インストール済みの @metaharness/darwin から metaharness-darwin security bench --population N --cycles N [--seed S] を実行します(_darwin.mjs で固定します。条件を満たすインストール済みコピーがない場合に限り、一度だけキャッシュにインストールします。npx は使用しません)。
  2. デフォルトのタイムアウトは 3s × 19 evaluations × population × cycles + 30s overhead です。デフォルトの --population 2 --cycles 1 では約 144 秒、--population 4 --cycles 3 では約 12 分です。
  3. Markdown レポートを解析します。全体の PASS/FAIL に加え、ゲートごとの合格/不合格行も解析します(ゲートの例:「固定版に対する TPR の改善率 ≥ 25%」「FPR の削減率 ≥ 40%」「パッチテストの合格率 ≥ 80%」「再現成功率 ≥ 90%」「安全でない出力 = 0」「固定版に対するコスト増加 ≤ 2×」「SOTA 超え:チャンピオンが統計的に前回のチャンピオンを上回る」「複利効果:誤検知の再発率が ≥ 35% 低下」)。
  4. ベースラインとチャンピオンの比較表を解析します(各ハーネスの fitness/TPR/FPR/patchPass/repro/unsafe/cost を示す 4 行)。
  5. 構造化 JSON を出力します。--alert-on-fail を指定した場合、全体が FAIL なら 1 を終了コードとして返します。

出力形式

{
  "success": true,
  "data": {
    "overall": { "ok": true, "icon": "✅" },
    "gates": {
      "total": 11,
      "passed": 11,
      "failed": 0,
      "details": [{ "ok": true, "criterion": "TPR improvement ≥ 25% vs fixed harness", "measured": "+150% (B2 0.4 → B3 1)" }, ...]
    },
    "baselines": [
      { "harness": "static-only", "fitness": 0.5665, "tpr": 0.3, "fpr": 1, "unsafe": 0, ... },
      { "harness": "LLM single-pass", "fitness": 0.1365, ... },
      { "harness": "fixed agent", "fitness": 0.598, ... },
      { "harness": "Darwin champion", "fitness": 0.93275, "tpr": 1, "fpr": 0, ... }
    ],
    "rawMarkdown": "...",
    "shape": { "population": 2, "cycles": 1, "seed": null },
    "durationMs": 142000
  }
}

ADR-155 の夜間ハーネスへの組み込み

ADR-155 の夜間ワークフロー(#2418 のタスク W1.5)では、これをアクティブペンテスト次元の呼び出しの 1 つとして起動し、その結果を軌跡レコードにします。

{
  "dimension": "mcp-pentest",
  "subdimension": "darwin-shield-bench",
  "champion_fitness": 0.93275,
  "champion_tpr": 1, "champion_fpr": 0,
  "gates_passed": 11, "gates_failed": 0,
  "shape": { "population": 4, "cycles": 3 }
}

ループ A では、シード済みコーパスで darwin-shield-bench が一貫して合格する場合、mcp-pentest だけが検出する問題の重みを高く学習します。

終了コード

コード意味
0ベンチを実行しました(全体の PASS または FAIL。区別には JSON の overall.ok を使用)、または縮退モードで実行しました
1--alert-on-fail が指定され、overall.ok === false
2設定エラーまたは上流のインフラストラクチャ障害

グレースフルデグレード

@metaharness/darwin がない場合は、{degraded: true, reason: 'metaharness-darwin-not-available'} を出力し、終了コード 0 を返します。

コメント