資料一覧へ
security-audit

独立検証付きのセキュリティ監査を、コーディングエージェントに実行させる

Coding-agent skill for multi-phase security audits / cloudflare/security-audit-skill

1 — 概要

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.mdLLM を組み込んだ対象向けの、プロンプトインジェクション、エージェント・ツール、出力処理の探索クラス
WEB-PROTOCOL-AND-AUTH.mdHTTP のリクエストフレーミング、キャッシュ、認証プロトコルの探索クラス
CLIENT-SIDE.mdDOM インジェクション、メッセージングの信頼、UI リドレス、プロトタイプ汚染の探索クラス
SUPPLY-CHAIN-AND-RELEASE.md依存関係、CI、リリース、署名、アップデート、プラグイン、拡張機能の探索クラス
CLOUD-AND-DEPLOYMENT.mdIAM、IaC、コンテナ、サーバーレス、イングレス、実行時設定の探索クラス
PROTOCOLS-RPC-AND-MESSAGING.mdRPC、シリアライズ、キュー、ブローカー、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.json3 種類の判定すべてに対応する findings.json の JSON スキーマ
validate-findings.cjsフェーズ 4 と 5 で findings.json を検査する、依存なしの検証スクリプト
validate-findings.test.cjsfindings 検証のテスト
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 の記載ではありません)。