Cloudflare 开源 security-audit-skill:把漏洞挖掘流水线做成可复责的 Agent 技能

Cloudflare 近期在 GitHub 上开源了 security-audit-skill,这是一个面向编码智能体的技能(Skill),能把你手头的 Agent 直接变成一名安全审计员。它用一套结构化的六阶段流程,驱动相互隔离的子 Agent 完成侦察、覆盖驱动的狩猎、候选验证、结构化输出、独立记录核验与目标中立报告。仓库采用 MIT 许可,任何人都可以免费使用与二次开发。

它从哪来

这个技能是 Cloudflare 内部漏洞挖掘 harness 的"种子"。在官方博客《Build your own vulnerability harness》中,Cloudflare 描述了这套系统如何从一个单仓起点,成长为多阶段、全机队(fleet-wide)的自动化漏洞发现体系。security-audit-skill 正是它演化出的最初单仓形态——把经过实战检验的方法论,以 SKILL.md 的形式开放给社区。

六阶段工作流

  1. 侦察(Reconnaissance):绘制架构、信任边界、输入面、既往证据,并把确定性覆盖写入 architecture.md 与 coverage-ledger.json。
  2. 覆盖驱动的狩猎(Coverage-led hunting):从账本单元中分派相互隔离的 hunter,记录它们的检查动作,并用覆盖评审(coverage critic)发现盲区。
  3. 候选验证(Candidate validation):把每一个去重后的候选漏洞交给一个全新的 verifier,专门尝试"证伪"它。
  4. 结构化输出(Structured output):把 confirmed、needs_validation、rejected 三类结论写入 findings.json,并依据 report-schema.json 做校验。
  5. 独立记录核验(Independent record verification):由全新 Agent 复核最终来源声明,涉及实质性替换的还会再交一个独立 verifier。
  6. 目标中立报告(Target-neutral reporting):从已验证记录与覆盖账本派生出 REPORT.md、FINDINGS-DETAIL.md 与 NEEDS-VALIDATION.md。

设计上,多次对同一仓库运行是"累加"的:技能会复用既往账本与发现,瞄准尚未覆盖的盲区、重新验证变动过的源码,而不是把陈旧的或未决的工作当成已覆盖。

让安全报告"可复责"的设计原则

  • 只确认既成的边界失败:对于没有完整来源追溯的线索,宁可保留为 needs_validation,并写下确切的未决事实。
  • 对抗式验证:检查某个发现的 Agent,绝不可以是发现它的那个 Agent。
  • 严重度必须有影响:按"可能性 × 影响"评估,而不是偏离检查清单的程度。
  • 纵深防御缺口不是漏洞:如果 A 层已经挡住了攻击,缺失 B 层只算加固建议。
  • 多次运行提升覆盖:在 Cloudflare 的测试里,单次运行大约只能发现"反复运行总共能发现"的一半漏洞。

丰富的攻击面分类

仓库按目标类型拆分了大量狩猎(hunting)指南,几乎覆盖了现代应用的每一个角落:内存安全与二进制、AI/LLM(提示注入、工具调用、输出处理)、Web 协议与鉴权、客户端/浏览器、供应链与发布、云与部署、RPC 与消息队列、资源耗尽与可用性、数据隔离与生命周期、桌面/移动与本地 IPC。每一类都给出了具体的攻击提示词,相当于把一支专业安全团队的"查表"经验固化成了可执行的指令。

此外还提供零依赖的校验脚本 validate-findings.cjs 与 validate-coverage-ledger.cjs(含测试),保证阶段产出在格式与逻辑上可机器校验。

怎么用

安装只需一行命令:npx skills add https://github.com/cloudflare/security-audit-skill --skill security-audit。在你的编码 Agent 工作目录里直接说 "security audit this codebase" 或 "find security vulnerabilities in ./src",技能就会按触发词自动激活。

完整审计模式(full audit mode)会把结果默认写到 ~/security-audit-skill//run-;而只问安全相关问题或聚焦漏洞的工作,则进入更轻量的 guidance 模式,除非你主动要求产出报告文件。

运行要求与边界

它需要:一个支持工具调用与并行子 Agent 的编码 Agent;用于跑零依赖校验器的 Node.js;以及一个操作系统层面强制的沙箱——该沙箱必须禁用外部网络、使用净化后的白名单环境、强制资源上限,且只允许写入指定的临时路径。如果缺少这些控制,工作流会主动把主导权保持在 needs_validation 状态,而不是真的去执行目标代码。

为什么值得关注

安全审计最大的隐患是"看起来查过了"。security-audit-skill 用覆盖账本(coverage ledger)和独立复核(independent verification),把 Agent 生成的安全报告变得可追责、可增量、可复现。对于正在把编码 Agent 引入 CI/CD 与安全流程的团队,这是一个可以直接落地的开源起点。

据 Cloudflare 官方 GitHub 仓库 README 整理