security-audit
独立検証付きのセキュリティ監査を、コーディングエージェントに実行させる
Coding-agent skill for multi-phase security audits / cloudflare/security-audit-skill
1 — 概要
Agent skill / Security audit
security-audit は、コーディングエージェントを監査担当として動かすためのスキルです。偵察、攻撃面ごとの探索、候補の反証、構造化された出力、記録の独立検証、報告書の生成を、分離されたエージェントに分担させて実行します。
Cloudflare の脆弱性発見ハーネスの出発点となったスキルで、README では単一リポジトリ向けの基礎版と位置付けられています。発見された候補は、発見者とは別のエージェントが無効化を試みます。判定は confirmed、needs_validation、rejected の 3 種類です。
偵察探索候補の反証findings.json記録の再検証報告書
6
監査フェーズ
15
指示用 Markdown(攻撃クラスを含む)
3
判定の種類
MIT
ライセンス
対象: 単一リポジトリの監査 · 対象コードを実行する場合は OS 強制サンドボックスが必要 · 作者: Cloudflare
2 — 6 フェーズの流れ
README に記載された順序です。フェーズ 4 と 5 では、同梱の検証スクリプトが成果物を機械的に検査します。
| フェーズ | 内容 | 主な成果物 |
|---|---|---|
| 1 偵察 | アーキテクチャ、信頼境界、入力面、過去の証拠、カバレッジを把握する | architecture.md、coverage-ledger.json |
| 2 カバレッジ主導の探索 | 台帳の単位ごとに分離された hunter を割り当て、カバレッジ批評役がギャップを探す | 台帳の更新 |
| 3 候補の検証 | 一意の候補ごとに新しい verifier が、候補の無効化を試みる | 検証結果 |
| 4 構造化出力 | confirmed、needs_validation、rejected を記録し、report-schema.json で検証する | findings.json |
| 5 記録の独立検証 | 最終的なソースの主張を新しいエージェントが検証する。重要な差し替えには、さらに別の検証者を付ける | 検証済みの findings.json |
| 6 報告 | 検証済みの記録とカバレッジ台帳から報告書を生成する | REPORT.md、FINDINGS-DETAIL.md、NEEDS-VALIDATION.md |
複数回の実行は追加的に働きます。 同じリポジトリへの再実行では、過去の台帳と findings を使ってギャップを狙い、変更されたソースを再検証します。古いソースや未解決の作業は「カバー済み」とは扱いません。
3 — 判定と設計原則
| 判定 | 意味 | 重大度 |
|---|---|---|
confirmed | ソースの経路が完全に追跡でき、観測された結果が範囲付きで記録されている | 影響の大きさから判定 |
needs_validation | 未解決の事実が 1 つ正確に示されている。ソース上は有望だが遮断されている候補を含む | 付与しない |
rejected | 候補が反証された | — |
設計原則
- 確認済みの境界破壊だけを
confirmedにします。 ソースに基づく有望な候補でも、遮断されている場合はneeds_validationに残し、未解決の事実を明記します。 - 発見者と検証者を分けます。 候補を検証するエージェントは、それを見つけたエージェントではありません。
- 重大度は影響で決めます。 発生可能性 × 影響で判定し、チェックリストからの逸脱では判定しません。
- 多層防御の欠落は脆弱性として扱いません。 レイヤー A が攻撃を防いでいれば、レイヤー B の欠如は hardening note として扱います。
4 — ファイル構成
スキル本体は Markdown の指示ファイルと、2 つの検証スクリプトおよびそのテストで構成されます。
| ファイル | 目的 |
|---|---|
SKILL.md | セットアップ、基本原則、プラットフォーム用語、ワークフローの概要、監査の反パターン |
RECONNAISSANCE.md | フェーズ 1 の偵察プロンプトと統合の指示 |
HUNTING.md | フェーズ 2 のオーケストレーション、探索の方法論、検証ルール |
ATTACK-CLASSES.md | コア、ワイルドカード、「明白なこと」の攻撃プロンプト |
MEMORY-SAFETY-AND-BINARY.md | ネイティブ対象向けのメモリ安全性、バイナリ、カーネルの探索クラス |
AI-AND-LLM.md | LLM を組み込んだ対象向けの、プロンプトインジェクション、エージェント・ツール、出力処理の探索クラス |
WEB-PROTOCOL-AND-AUTH.md | HTTP のリクエストフレーミング、キャッシュ、認証プロトコルの探索クラス |
CLIENT-SIDE.md | DOM インジェクション、メッセージングの信頼、UI リドレス、プロトタイプ汚染の探索クラス |
SUPPLY-CHAIN-AND-RELEASE.md | 依存関係、CI、リリース、署名、アップデート、プラグイン、拡張機能の探索クラス |
CLOUD-AND-DEPLOYMENT.md | IAM、IaC、コンテナ、サーバーレス、イングレス、実行時設定の探索クラス |
PROTOCOLS-RPC-AND-MESSAGING.md | RPC、シリアライズ、キュー、ブローカー、webhook、ストリーミングプロトコルの探索クラス |
RESOURCE-EXHAUSTION-AND-AVAILABILITY.md | 共有リソース、クォータ、キュー、ワーカー、運用者のコストに関する探索クラス |
DATA-ISOLATION-AND-LIFECYCLE.md | テナント分離、キャッシュ、検索、エクスポート、バックアップ、移行、削除、復元の探索クラス |
DESKTOP-MOBILE-AND-LOCAL-IPC.md | ネイティブアプリ、ディープリンク、webview、公開コンポーネント、ヘルパー、デーモン、ローカル IPC の探索クラス |
VALIDATION-AND-REPORTING.md | フェーズ 3〜6 の候補検証、構造化出力、記録の検証、報告 |
report-schema.json | 3 種類の判定すべてに対応する findings.json の JSON スキーマ |
validate-findings.cjs | フェーズ 4 と 5 で findings.json を検査する、依存なしの検証スクリプト |
validate-findings.test.cjs | findings 検証のテスト |
validate-coverage-ledger.cjs | フェーズ 1〜5 で coverage-ledger.json を検査する、依存なしの検証スクリプト |
validate-coverage-ledger.test.cjs | カバレッジ台帳検証のテスト |
5 — インストール
Skills CLI で導入します。
npx skills add https://github.com/cloudflare/security-audit-skill \
--skill security-auditユーザー単位で導入する場合は --global を付けます。
npx skills add https://github.com/cloudflare/security-audit-skill \
--skill security-audit \
--globalエージェントの選択や非対話オプションは npx skills --help で確認できます。
6 — 使い方
対象のコードベースをエージェントで開くか、対象を指定して依頼します。スキルは監査に関する依頼で自動的に起動します。
security audit this codebase
find security vulnerabilities in ./src
do a security review, output to ~/audits/my-projectモードの選択
| 依頼の内容 | モード | 出力 |
|---|---|---|
| コードベースの直接監査、ペンテストの依頼 | full audit mode | 出力先を指定しない場合は ~/security-audit-skill/<repo-name>/run-N |
| セキュリティの質問、特定の脆弱性の調査 | guidance mode | 報告書の出力を求めた場合のみ生成 |
対象リポジトリ内に書き込むのは限定的です。 出力先を対象リポジトリ内にできるのは、バージョン管理で無視されるディレクトリを利用者が明示的に選んだ場合だけです。
7 — 動作要件
- ツール呼び出しと並列サブエージェントに対応したコーディングエージェント
- Node.js(検証スクリプトは依存なし)
- OS 強制サンドボックス: 対象のビルド、テスト、プロセス、ブラウザ、エミュレータ、ファザー、フィクスチャを実行するために必要です。外部ネットワークの遮断、サニタイズされた許可リスト方式の環境変数、リソース制限、割り当てられた scratch パスへの書き込み限定を満たす必要があります。満たさない場合、リーダーの候補は
needs_validationのまま残り、対象コードは実行されません。
8 — 制約と注意
- サンドボックスが前提です。 対象コードの実行に必要な隔離を満たさないと、候補は検証されずに
needs_validationに留まり、confirmedは得られません。隔離条件を満たしているかは、実行前に利用者側で確認が必要です。 - インストールは
npxで外部パッケージを取得します。 実行前に、リポジトリの内容とSKILL.mdを確認することを推奨します(本ページの推奨であり、README の記載ではありません)。 - 効果の数値は作者の試験結果です。 README は「単一の実行で、繰り返し実行の合計で見つかった脆弱性のおよそ半分を見つけた」と述べています。本ページでは再現していません。
- 報告書は LLM の出力です。 修正や報告に使う前に、
confirmedの source trace を人間が読んで確認することを推奨します(本ページの推奨であり、README の記載ではありません)。
9 — 参考資料
- cloudflare/security-audit-skill — README、ソース、LICENSE(MIT)
- Build your own vulnerability harness — README に掲載された関連記事(本ページでは内容を未確認)
- Skills CLI (skills.sh) —
npx skills addの導入先 - 連絡先: security-ai-research@cloudflare.com(README 記載)