security-audit-skill — AIコーディングエージェントで脆弱性を多段階検証する監査スキル
cloudflare/security-audit-skill
★ 69,353 ・ JavaScript ・ MIT
概要
cloudflare/security-audit-skill は、コーディングエージェントを自律的なセキュリティ監査者(セキュリティオーディター)として動作させるためのスキルセットです。Cloudflare の公式ブログ記事「Build your own vulnerability harness」で紹介された脆弱性検出ハーネスの起点となったリポジトリであり、単一のリポジトリを対象とした監査ワークフローがまとめられています。
ソフトウェア開発において、LLM(大規模言語モデル)を活用したコードレビューや脆弱性検出の試みが増えていますが、誤検知(フォールスポジティブ)や推測に基づく指摘が課題になりがちです。本スキルは、調査から探索、独立したエージェントによる反証検証、構造化レポートの出力までを段階的に実行することで、確証の得られた脆弱性のみを厳密に抽出します。自社のコードベースに対して信頼性の高い自動セキュリティレビューパイプラインを構築したい開発者やセキュリティエンジニアに適しています。
主な特徴
- 6段階の体系的な監査プロセス: 偵察(Reconnaissance)、カバレッジ主導の探索、候補検証、構造化出力、独立レコード検証、レポート作成という明確に分離されたフェーズで監査を進行します。
- 発見者と検証者を分ける敵対的検証: 脆弱性候補を見つけたエージェントとは別の新規エージェントが「反証(候補が誤りであることの証明)」を試みることで、思い込みによる誤検知を低減します。
- 3つの明確なステータス分類: 結果は完全な追跡と影響が確認された
confirmed、未解決の事実が残るneeds_validation、反証されたrejectedに厳密に分類されます。 - 多様な攻撃クラスを網羅した定義ファイル: Webプロトコルや認証、メモリ安全性、AI/LLM特有のプロンプトインジェクション、サプライチェーンなど、対象領域ごとの監査プロンプトがファイルごとに用意されています。
- 追加実行によるカバレッジ拡大: 過去の監査台帳(ledger)と検出結果を引き継ぐ設計になっており、再実行時には差分やカバレッジの隙間を優先して効率的に探索できます。
使い方
インストール手順
本スキルは 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
監査の実行
対象のコードベースを開いた状態でコーディングエージェントを起動し、チャットや指示プロンプトでセキュリティ監査を依頼します。監査のトリガーとなるキーワード(security audit、find vulnerabilities など)を検知すると、自動的に本スキルが有効化されます。
security audit this codebase
特定のディレクトリに絞り込んで監査を依頼することも可能です。
find security vulnerabilities in ./src
出力先を指定する場合は、以下のようにプロンプトに含めます。
do a security review, output to ~/audits/my-project
出力先が指定されていないフル監査モードの場合、デフォルトでは ~/security-audit-skill//run- に成果物が出力されます。なお、監査対象リポジトリの内部へファイルを出力するのは、バージョン管理(.gitignore等)で明示的に無視されているディレクトリが指定された場合のみに制限されています。
技術的なポイント
6つのフェーズによる厳格なパイプライン
本スキルのワークフローは、以下のフェーズ順に進行します。
- Reconnaissance(偵察): アーキテクチャ、信頼境界、入力インターフェース、過去の証拠を分析し、
architecture.mdおよびcoverage-ledger.jsonに deterministic coverage(確定的カバレッジ)をマッピングします。 - Coverage-led hunting(探索): 台帳のユニットごとに隔離された探索エージェント(hunter)を割り当ててチェックを記録し、カバレッジ批評者(coverage critics)が未探索のギャップを特定します。
- Candidate validation(候補検証): 発見された候補それぞれを、文脈を共有しない新鮮な検証者(verifier)に渡し、反証を試みさせます。
- Structured output(構造化出力): 結果を
confirmed、needs_validation、rejectedとしてfindings.jsonに記録し、付属のスキーマ(report-schema.json)に適合しているか検証します。 - Independent record verification(独立レコード検証): 別の新規エージェントが最終的なソースコード上の主張を検証します。実質的な差し替えが発生した場合は、さらに別の独立検証者がアサインされます。
- Target-neutral reporting(レポート作成): 検証済みレコードとカバレッジ台帳から
REPORT.md、FINDINGS-DETAIL.md、NEEDS-VALIDATION.mdを自動導出します。
ゼロ依存のスキーマバリデータ
リポジトリ内には validate-findings.cjs と validate-coverage-ledger.cjs という Node.js スクリプトが含まれています。これらは外部依存パッケージを持たないゼロ依存(zero-dependency)で実装されており、フェーズ進行中や台帳更新時にデータ形式が破損していないかを即座に検証するために呼び出されます。
豊富な攻撃クラス別の定義ファイル
リポジトリ直下には、監査観点ごとに細分化されたMarkdownファイルが格納されています。
MEMORY-SAFETY-AND-BINARY.md: メモリ安全性、バイナリ、カーネルAI-AND-LLM.md: プロンプトインジェクション、ツール/エージェント悪用、出力処理WEB-PROTOCOL-AND-AUTH.md: HTTPリクエストスマグリング、キャッシュ、認証プロトコルCLIENT-SIDE.md: DOMインジェクション、メッセージング、プロトタイプ汚染SUPPLY-CHAIN-AND-RELEASE.md: 依存関係、CI/CD、署名、アップデートCLOUD-AND-DEPLOYMENT.md: IAM、IaC、コンテナ、サーバーレス
これらのプロンプトと手順書がモジュール化されているため、ターゲットに応じた攻撃手法をエージェントに正確に適用させることができます。
徹底した設計原則
README には以下の設計原則が掲げられています。
- 成立した境界侵害のみを confirmed とする: 完全に証明しきれないが疑わしいものは、未解決の事実を明記した上で
needs_validationに留め、安易に確定扱いしません。 - 敵対的検証: 脆弱性を発見したエージェント自身には検証を担当させません。
- 深刻度は影響度を伴う必要がある: チェックリストからの逸脱ではなく、発生可能性と実際の影響(Likelihood × Impact)に基づいて評価します。
- 多層防御の欠落は脆弱性ではない: 例えば上位レイヤーで攻撃が防御されている場合、下位レイヤーに対策がないことは「強化のためのメモ(hardening note)」であり、脆弱性とはみなしません。
注意点
- 実行環境の要件: 本スキルを動かすには、ツール利用(Tool Use)および並列サブエージェント(Parallel sub-agents)の実行に対応したモデルとコーディングエージェントが必要です。
- バリデータの実行要件: レコード検証スクリプトの実行に Node.js 環境が必要です。
- OSレベルのサンドボックス必須: ターゲットコードのビルド、テスト、プロセス実行、ブラウザ操作、ファジングなどを行うため、OSレベルで強制されたサンドボックスが求められます。具体的には、外部ネットワーク遮断、サニタイズされたホワイトリスト環境、リソース制限、指定された作業パス以外への書き込み禁止といった制約が必要です。これらの制約が満たされない場合、ワークフローはコードを実行せず、調査結果を
needs_validationのまま保持します。 - ライセンス: 本リポジトリは MIT ライセンスの下で公開されています。
まとめ
cloudflare/security-audit-skill は、LLMコーディングエージェントの強みを活かしつつ、複数エージェントによる反証や厳密なスキーマ検証によって信頼性を担保するセキュリティ監査フレームワークです。単なるプロンプト集にとどまらず、探索から検証までのワークフローが綿密に定義されており、本格的な自動脆弱性診断の導入を検討しているチームにとって有益なリファレンスとなります。





