Cloudflare security-audit-skill:用於編碼代理的開源多階段安全審計框架

TL;DR

Cloudflare 發布了一個開源的「security-audit-skill」,為編碼代理(coding agents)配備了六階段、經獨立驗證的安全審計流程,可產生機器可讀的調查結果和不可篡改的報告。 該框架專為代碼庫的可重複、增量審計而設計,可透過 Skills CLI 進行安裝。


該技能的功能 – 六個具體階段

該技能透過確定性審計來協調隔離的子代理,並以簽署報告作為結束。

  1. 偵察 (Reconnaissance) – 產生 architecture.mdcoverage-ledger.json,描述信任邊界、輸入介面和先前的證據。
  2. 覆蓋率導向的搜尋 (Coverage-led hunting) – 從分類帳中指派搜尋者,記錄每次檢查,並使用審查者來揭露未涵蓋的漏洞。
  3. 候選驗證 (Candidate validation) – 將每個唯一的候選漏洞發送給一個全新的驗證者,該驗證者會嘗試反駁它。
  4. 結構化輸出 (Structured output) – 寫入 findings.json,包含三個判定結果(confirmedneeds_validationrejected),並根據 report-schema.json 驗證該檔案。
  5. 獨立記錄驗證 (Independent record verification) – 新的代理會重新驗證最終的來源聲明;任何實質性的替換都會觸發另一次獨立檢查。
  6. 目標中立報告 (Target-neutral reporting) – 從驗證過的記錄和覆蓋率分類帳中導出 REPORT.mdFINDINGS-DETAIL.mdNEEDS-VALIDATION.md

每個階段都會執行一個零依賴的驗證器(validate-coverage-ledger.cjsvalidate-findings.cjs),以確保在繼續之前符合架構規範。


工作流程如何確保調查結果的可信度

  • 明確的判定結果confirmed 包含完整的來源追蹤和邊界觀察結果;needs_validation 記錄了一個確切但未解決的事實,且沒有嚴重性評級;rejected 標記了一個被反駁的候選漏洞。
  • 對抗性驗證 – 發現漏洞的代理永遠不會驗證它,從而消除了自我確認偏差。
  • 增量執行 – 後續的審計會重複使用先前的分類帳和調查結果,僅針對未涵蓋的漏洞,並在不將過時工作視為已涵蓋的情況下重新驗證變更後的代碼。
  • 獨立驗證 – 在第 4 階段之後,一個新的代理會重新檢查每一項聲明;替換會觸發另一輪驗證,確保沒有單一代理可以單方面宣稱存在漏洞。

安裝與使用(幾分鐘內完成)

# Install the skill globally (or per‑project) via the Skills CLI
npx skills add https://github.com/cloudflare/security-audit-skill \
  --skill security-audit \
  --global   # optional, for a user‑level install

在包含目標代碼庫的任何目錄中執行審計:

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

該技能會自動偵測觸發短語(例如「security audit」、「find vulnerabilities」)並啟動完整的六階段工作流程。在完整審計模式下,除非指定了明確的目錄,否則輸出預設為 ~/security-audit-skill/<repo-name>/run-<N>


安全執行的必要環境

  • 編碼代理 – 必須支援工具使用和並行子代理。
  • Node.js – 零依賴驗證器所需。
  • 作業系統強制沙盒 – 隔離建置、測試、瀏覽器、模糊測試器等,停用外部網路,強制執行資源限制,並限制對指定暫存路徑的寫入。如果沒有沙盒,該技能會將結果標記為 needs_validation 而不是執行目標代碼。

塑造審計的設計原則

  • 僅確認已建立的邊界故障 – 未解決的事實保留在 needs_validation 中。
  • 嚴重性需要影響力 – 可能性乘以現實世界的影響,而不是檢查清單的偏差。
  • 縱深防禦漏洞屬於加固說明 – 缺失的層級不會自動歸類為漏洞。
  • 重複執行可提高覆蓋率 – Cloudflare 的內部測試顯示,單次執行大約能發現多次執行總漏洞數的一半。

Hacker News 上的社群反應

"Shameless plug: in case someone finds this requiring too many tokens, we shared the recipe on how we built our own in‑house audit skill so that it can easily be replicated and tuned to different environments" – gbrindisi

"I threw 1M tokens for nothing in a medium codebase." – drchaim

"Tip for security professionals using LLMs: audit skills that explicitly frame the task as security research sometimes trigger refusals from the top OpenAI and Anthropic models because they guard against misuse. What works for me: separate skills for bug classes (and bugs in general) without the security framing, plus another skill that combines their findings to spot security bugs." – wslh

"Dumping 14 full schemas into the prompt is just lazy design. You burn tokens, spike latency for no reason" – qsbuilder

這些評論突顯了實際的擔憂:Token 成本、模型拒絕處理,以及豐富的架構定義與提示效率之間的權衡。


何時使用(以及何時不使用)該技能

  • 理想情況 – 需要可重現、可審計結果的大型代碼庫,且可以配置沙盒執行環境。
  • 較不理想的情況 – Token 成本超過效益的小型專案,或 LLM 提供者封鎖安全相關提示的環境。

如何獲得協助或貢獻

對於 AI 驅動的安全工具的問題、回饋或合作,請發送電子郵件至 security-ai-research@cloudflare.com。該儲存庫採用 MIT 授權,允許不受限制的修改和重新發布。

Sources

相關

  • 專案
  • Dispatch
  • 專案
  • Dispatch
  • 專案