Cloudflare security-audit-skill: コーディングエージェント向けのオープンソース多段階セキュリティ監査フレームワーク

TL;DR

Cloudflareは、コーディングエージェントに6段階の独立検証型セキュリティ監査パイプラインを装備させるオープンソースの「security-audit-skill」を公開しました。これにより、機械可読な調査結果と不変のレポートが生成されます。 このフレームワークは、コードベースの反復的かつ追加的な監査を目的として設計されており、Skills CLI経由でインストール可能です。


このスキルが実行する6つの具体的なフェーズ

このスキルは、独立したサブエージェントを決定論的な監査プロセスで調整し、署名付きレポートで完了させます。

  1. 偵察 (Reconnaissance) – 信頼境界、入力面、および以前の証拠を記述した architecture.mdcoverage-ledger.json を生成します。
  2. カバレッジ主導のハンティング (Coverage-led hunting) – 台帳からハンターを割り当て、各チェックを記録し、クリティカルな視点から未カバーのギャップを浮き彫りにします。
  3. 候補の検証 (Candidate validation) – すべての固有の候補を新しい検証者に送信し、反証を試みます。
  4. 構造化出力 (Structured output) – 3つの判定(confirmedneeds_validationrejected)を含む findings.json を書き込み、report-schema.json に対してファイルを検証します。
  5. 独立した記録検証 (Independent record verification) – 新しいエージェントが最終的なソースの主張を再検証します。重要な変更があった場合は、別の独立したチェックがトリガーされます。
  6. ターゲット中立なレポート作成 (Target-neutral reporting) – 検証済みの記録とカバレッジ台帳から REPORT.mdFINDINGS-DETAIL.md、および NEEDS-VALIDATION.md を導出します。

各フェーズでは、ゼロ依存のバリデーター(validate-coverage-ledger.cjs または validate-findings.cjs)を実行し、進行前にスキーマ準拠を保証します。


ワークフローが信頼性の高い調査結果を保証する仕組み

  • 明確な判定confirmed には完全なソーストレースと境界付けられた観測結果が含まれます。needs_validation は未解決の事実を正確に記録し、重大度は付与されません。rejected は反証された候補にマークを付けます。
  • 敵対的検証 – 調査結果を発見したエージェントがそれを検証することはないため、自己確証バイアスが排除されます。
  • 追加的な実行 – 後続の監査では以前の台帳と調査結果を再利用し、未カバーのギャップのみを対象とし、変更されたコードを再検証します。古い作業をカバー済みとして扱うことはありません。
  • 独立した検証 – フェーズ4の後、新しいエージェントがすべての主張を再チェックします。置き換えが発生すると別の検証ラウンドがトリガーされ、単一のエージェントが独断で脆弱性を宣言できないようにします。

インストールと数分での使用方法

# Skills CLI経由でスキルをグローバル(またはプロジェクトごと)にインストール
npx skills add https://github.com/cloudflare/security-audit-skill \
  --skill security-audit \
  --global   # オプション、ユーザーレベルのインストール用

ターゲットコードベースを含む任意のディレクトリから監査を実行します:

security audit this codebase
# または
find security vulnerabilities in ./src
# または
do a security review, output to ~/audits/my-project

このスキルはトリガーフレーズ(例:「security audit」、「find vulnerabilities」)を自動検出し、6段階のワークフロー全体を開始します。フル監査モードでは、明示的なディレクトリが指定されない限り、出力はデフォルトで ~/security-audit-skill/<repo-name>/run-<N> になります。


安全な実行に必要な環境

  • コーディングエージェント – ツール使用と並列サブエージェントをサポートしている必要があります。
  • Node.js – ゼロ依存バリデーターに必要です。
  • OS強制サンドボックス – ビルド、テスト、ブラウザ、ファザーなどを分離し、外部ネットワークを無効化し、リソース制限を強制し、指定されたスクラッチパスへの書き込みを制限します。サンドボックス化されていない場合、スキルはターゲットコードを実行せず、リードを needs_validation とマークします。

監査を形作る設計原則

  • 確立された境界の失敗のみを確認する – 未解決の事実は needs_validation に留まります。
  • 重大度には影響が必要 – チェックリストの逸脱ではなく、現実世界への影響度を掛け合わせた尤度に基づきます。
  • 防御の多層化のギャップは強化メモ – 欠落しているレイヤーは自動的に脆弱性として分類されません。
  • 繰り返しの実行でカバレッジが向上 – Cloudflareの内部テストでは、1回の実行で複数回の実行で発見された脆弱性の約半分が見つかることが示されました。

Hacker Newsでのコミュニティの反応

"宣伝になりますが、もしトークンを消費しすぎると感じる場合は、私たちが社内で独自の監査スキルを構築した方法を共有しています。これにより、簡単に複製し、異なる環境に合わせて調整できます" – gbrindisi

"中規模のコードベースで100万トークンを無駄に投げ込みました。" – drchaim

"LLMを使用するセキュリティ専門家へのヒント:タスクを明示的にセキュリティ調査としてフレーム化する監査スキルは、OpenAIやAnthropicのトップモデルで拒否されることがあります。これは悪用を防ぐためです。私にとって有効なのは、セキュリティのフレームワークなしでバグクラス(および一般的なバグ)ごとにスキルを分け、それらの調査結果を組み合わせてセキュリティバグを見つける別のスキルを使うことです。" – wslh

"プロンプトに14個の完全なスキーマをダンプするのは怠慢な設計です。トークンを浪費し、理由もなくレイテンシを急上昇させています" – qsbuilder

これらのコメントは、トークンコスト、モデルの拒否対応、リッチなスキーマ定義とプロンプト効率のトレードオフといった実用的な懸念を浮き彫りにしています。


スキルの使用に適した場面(および適さない場面)

  • 理想的 – 再現可能で監査可能な調査結果が必要であり、サンドボックス化された実行環境をプロビジョニングできる大規模なコードベース。
  • あまり理想的ではない – トークンコストがメリットを上回る小規模なプロジェクト、またはLLMプロバイダーがセキュリティ関連のプロンプトをブロックする環境。

ヘルプや貢献について

AI主導のセキュリティツールに関する質問、フィードバック、コラボレーションについては、security-ai-research@cloudflare.com までメールでお問い合わせください。リポジトリはMITライセンスであり、無制限の変更と再配布が可能です。

Sources

関連

  • プロジェクト
  • Dispatch
  • プロジェクト
  • Dispatch
  • プロジェクト