
攻撃者のようにソースコードを推論し、実行可能なPoCで悪用可能な脆弱性を確認し、hunt・fix・verifyスキルを通じてテストファーストの修正を推進するエージェント型AIセキュリティスキャナー。
[!NOTE] Capital OneのVulnHunter(Apache-2.0)のメンテナンスされているフォーク — Claude Codeだけでなく、あらゆるエージェントハーネスで動作するように構築されています。このフォークの焦点は、ハーネスのポータビリティ、サンドボックス化(コンテナ化)されたエクスプロイト検証、そして影響を測定したPoCです。変更の理由 · このフォークの変更点 · 数字を参照してください。
パターンマッチングから証明可能性へ。
VulnHunterは、ソースコードに直接プロアクティブで攻撃者優先の分析を適用する、オープンソースのエージェント型AIセキュリティツールです。
疑わしいパターンを検出して誤検知を頻発させる従来の受動的なSASTスキャナとは異なり、VulnHunterは敵対者のように推論します。どの欠陥が実際に悪用可能かを特定し、想定される攻撃経路をマッピングし、証拠に基づいた的を絞った修正を提案します。
現代のソフトウェアサプライチェーンは深く相互接続されています。広く使われているオープンソースコンポーネントの単一の脆弱性が、何千もの企業に同時に波及する可能性があります。
VulnHunterはCapital One社内で開発され、コミュニティ向けにオープンソース化されました。このフォークはその作業を引き継ぎます — 同じ方法論を、あらゆるエージェントハーネスで動作するように作り直し、サンドボックス化(コンテナ化)されたエクスプロイト検証と影響を測定したPoCをロードマップとしています。このフォークの変更点を参照してください。
デュアルユースに関する注意 VulnHunterはデュアルユースのサイバーセキュリティ作業(脆弱性の発見と悪用)を行います。ガードレールを想定してください。市販のモデルのほとんどはデュアルユースのサイバーセーフガードを適用しており、攻撃的な悪用行為はレート制限や使用フラグに抵触する可能性があります。VulnHunterの開発とテストは、オープンウェイトでコミュニティ提供のモデル — リスク低減済み、abliterated、無検閲のもの — で実行されました。これらは今後、組織での利用において重要となる可能性が高いモデルです。監査は、あなたが所有する、または監査を許可されているコードのみに対して行ってください。
[!IMPORTANT] 前提条件とモデル要件 VulnHunterの方法論は、オープンウェイトでコミュニティ提供のモデル — 組織が実際にデプロイできる、リスク低減済み、abliterated、無検閲のもの — で動作するように構築されています。能力の高い推論モデルが必要です。ハーネスが提供する最も強力なモデルが最良の結果をもたらしますが、方法論は特定ベンダーのフロンティアモデルに依存しません。モデルへのアクセスはご自身で用意してください。
| 機能 | 上流(Capital One) | 本フォーク | ステータス |
|---|---|---|---|
| ハーネスのポータビリティ | スキルは Claude Code を明示的に呼び出す。インストーラーは ~/.claude/skills を対象とする。モデルゲートは Opus をハードコード。ハーネスは claude-opus-4-8 を固定 | スキルはハーネスポータブルなプロンプトファイル(スキルディレクトリ + サブエージェントを持つ任意のハーネス)。VULNHUNT_SKILLS_DIR / VULNHUNT_AGENTS_DIR / VULNHUNT_BIN_DIR / VULNHUNT_HOST_CMD / VULNHUNT_MODEL の環境契約。モデルゲートは「お使いのハーネスで最も能力の高い推論モデル」に言い換え | 出荷済み |
| 推測しないインストーラー | install.sh は ~/.claude/skills を前提とする | 明示的なディレクトリ、GROK_HOME のセマンティクスを尊重、vh ランチャーを VULNHUNT_BIN_DIR/~/.local/bin に書き込み、vulnhunter-run スキル + エージェント定義をインストール。Windows の .cmd 相当も更新 | 出荷済み |
vulnhunter-run オペレータースキル | —(なし) | 無人オペレーター:クローン → ハント → 結果検索 → スキャンマニフェストの書き込み/検証。明示的な停止ルールを持ち、即興を排除 | 出荷済み |
| ベンチマーク/ジャッジの堅牢化 | 固定モデル + 基本的なリトライ | 環境変数によるモデル指定、リトライ/バックオフ設定、analyze_misses パイプラインの損失点追跡、検出項目ごとの履歴追跡 | 出荷済み |
| ハーネス中立なレポート言語 | スキル全体にわたる Claude 固有の表現 | ハーネス中立なツール表現(Agent → サブエージェント、Claude CLI → ハーネスセッション) | 出荷済み |
| サンドボックス優先のエクスプロイト検証 | エクスプロイトテストは静的トレースの場合があり、ランタイムの選択は場当たり的 | Docker 優先のランタイムプロビジョニング。ランタイムは検出項目ごとに記録。Medium 以上の重大度は実行必須 | 進行中 |
| 影響を計測した PoC | PoC はドキュメントであり、影響は主張に留まる | 実行可能な PoC + 検出項目内の影響数値(露出した行数、増幅されたリクエスト数、滞留したキー時間) | 進行中 |
VulnHunter の方法論は本質的にホスト非依存です。それはツールへの束縛ではなく、プロンプトによる手順だからです。上流プロジェクトは Claude Code の中で育ちました。それは一貫した選択であり、最初の住処として正しいものでした。しかしエージェントハーネスの状況は広がり、1つのハーネスにしかインストールできないセキュリティ方法論は、監査能力であることをやめ、ベンダー機能になり始めます。本フォークは4つの変更を行い、それぞれに理由があります。
ここにあるすべてのスキルは、明示的な環境契約(VULNHUNT_SKILLS_DIR、VULNHUNT_AGENTS_DIR、VULNHUNT_MODEL、VULNHUNT_HOST_CMD)を持つポータブルなプロンプトファイルであり、モデルゲートは特定の製品ではなくお使いのハーネスで最も能力の高い推論モデルを要求するようになりました。より良いとは: 同じ方法論が、あなたのチームがすでに運用しているハーネスにインストールでき、ベンチマーク実行においてハーネス間で比較可能になることです。これが本フォークの開発手法です。
上流のインストーラーは、スキルを無条件に ~/.claude/skills へコピーしていました。2つのハーネスを動かすマシン、あるいはホームが移設されたハーネスでは、その推測は静かに間違った場所へインストールします。本フォークのインストーラーは尋ねるか、環境変数を受け取り、答えが欠けている場合は正確な指示とともに大きな音で失敗します。より良いとは: マルチハーネスのマシンで安全であり、移設されたホームの下でも正しく、設定ミスの際には沈黙せず大きな音で知らせることです。
元の設計はすでに反証とエクスプロイトテストを要求していた。未解決だったのは、それらを実際に実行するためにどれだけの労力をかけるかという点だった。静的トレースか、モックテストか、それとも実際のコンテナ化サーバーか。単一コミットに対する6回のベンチマーク実行で、この裁量は3件から42件までの検出結果を生み出し、同じシンクに対して正反対の判定を下した——一方はモックに対して証明され、もう一方は実サーバーに対するテストによってクローズされた。このフォークはランタイムプロビジョニング手順(Docker優先、検出結果ごとに記録)と、影響を測定するPoC規律を追加する——漏洩した行数、×増幅、滞留したキー時間——を物語るのではなく。より良いとは: 検出結果の妥当性が、どのモデルがコンテナを立ち上げる直感を持っていたかに依存しなくなることだ。(進行中 — ビルド計画は公開ロードマップにあります。issuesで質問するか、リポジトリのDiscussionsをウォッチしてください。)
このフォークの新機能:vulnhunter-run。クローン、ハント、結果の特定を行い、明示的な停止ルールを備えたスキャンマニフェストを書き込み・検証する無人オペレーター。ベンチマークツールは環境変数によるモデル設定、リトライ/バックオフの調整ノブ、見逃された検出結果の損失点分析を獲得する。より良いとは: デモ用のツールとスケジュール実行するツールの違い。
私たちはVulnHunterをそれ自身に対してベンチマークする:1つの実際の本番Goサービスに対する6回のフルスキャン——同じコミット、5つのハーネス/モデルスタック。以下の数字はそれらの実行から得られたものであり、このフォークが存在する理由である。
| 14× | 同じコミットの実行間における確認済み検出結果のばらつき。自分自身を測定するプロセスこそが最初の脆弱性だった——そのギャップを埋めることがこのフォークのビルド計画である。 |
| 42/42 | 確認済み検出結果が実行可能なエクスプロイトテストを伴っていた——すべてPASS、すべてが独自のPoCを持つ。勘で出荷される検出結果はない。 |
| 55% | 候補検出結果のうち、あなたに届く前に敵対的検証パスによって排除または格下げされた割合。他はスキャンする。VulnHunterは訴訟を起こす。 |
| 315 | 単一スキャンでインベントリ化された攻撃者制御の入力——すべてがトレースされ、すべての処分が記録された。完全性は願望ではなく規律である。 |
| 20/20 | 1回の実行でライブサーバーに対して実行された敵対的ペイロード——結果で測定され、主張されるのではない。 |
6回の完全なVulnHunterスキャンが、同じ本番Goサービスの1つのコミットに対して、5つのハーネス/モデルスタックにわたり、約3週間にわたって実行された。上記のすべての数値は保持されたスキャン成果物——入力ごとの処分テーブル、敵対的判定テーブル、PoC、実行されたエクスプロイトテスト——に遡ることができる。生の出力はメンテナーによって保持されている。尋ねるか、自分で再実行してほしい。
VulnHunterは、完全で自動化された修復ループを形成する3つの構成可能なエージェントスキルとして提供されます:
| スキル | フェーズ | 中核的な責務 |
|---|---|---|
/vulnhunt | ハント | エントリポイントを危険なシンクにマッピングします。多段階の反証パイプライン(偵察 → 並列ハント → 敵対的反証 → 機能フィルタ)を通じて発見をフィルタリングします。実行可能なエクスプロイトと提案された修正を伴う、検証済みの問題のみを出力します。 |
/vulnhunter-fix | 修正 | 開発者主導のテスト駆動型修復。エクスプロイトのデモを作成し、失敗するセキュリティテスト(RED)を作成し、コード修正(GREEN)を実装し、リグレッションなしでエクスプロイトがブロックされることを検証し、レビュー可能なPRを作成します。 |
/vulnhunt-fix-verify | 検証 | 発見が正常に修復されたかどうかを独立して検証する、完全に別個の読み取り専用エージェント。発見ごとの判定を出力するため、修正は信仰に基づくのではなく証明されます。 |
注: このループを大規模に無人で実行する場合、
vulnhunter-agent/はスキャナをヘッドレスランタイムでラップし、harness/は複数のリポジトリにわたってバッチで駆動します。
命名について: スイートはVulnHunterですが、コアスキャナコマンドは
/vulnhunt(および検証者/vulnhunt-fix-verify)です — 短い形式は意図的なものであり、タイプミスではありません。/vulnhunter-fix修復スキルとvulnhunter-agent/ランタイムは完全な綴りを保持します。
各コンポーネントは自己完結型のサブツリーに整理されています: