Cloudflare 安全审计 Skill:没证据的漏洞过不了校验

让 Agent「帮我查查安全漏洞」,常见的结果是一长串「可能存在 XSS」「建议加校验」,哪条是真的、哪条是瞎猜分不清。Cloudflare 开源的 security-audit Skill 换了个做法:每个疑似漏洞都要交给另一个 Agent 去推翻,推翻不了才算确认;结论写进一个格式固定的 JSON,再用两个零依赖的校验脚本检查格式。我们 10 月 21 日把它装进 OpenCode,跑了一遍校验器。
它是什么
一句话:把编程 Agent 变成安全审计员的 Skill,用一套固定流程跑审计:侦察 → 按覆盖清单挖洞 → 换一个 Agent 验证 → 写成结构化结果 → 再找人复核 → 出报告。
| 仓库 | github.com/cloudflare/security-audit-skill |
|---|---|
| 作者 | Cloudflare |
| 许可证 | MIT |
| 热度 | GitHub 34,365 星(截至 2026-10-21) |
| 语言 | Markdown 说明文件 + JavaScript 校验器(Node.js,零依赖) |
| 最新版本 | 没有发版号;最近一次提交 c1c8a8c,2026-09-15(北京时间),区分了「指导模式」和「完整审计模式」 |
解决什么问题
让 AI 做安全审计,最怕两件事:报一堆假阳性,以及每次跑结果都不一样。它的设计原则写得很直接:只确认真正越过了信任边界的问题;发现漏洞的 Agent 不能自己验证;严重程度要看实际影响,不能按清单打分;纵深防御里少了一层不算漏洞。README 还提到,Cloudflare 测试时单跑一轮只能找到多轮累计结果的一半左右,所以它允许多次运行,每次接着上次的覆盖清单补漏。适合的人:有自己代码库、想定期让 Agent 做源码审计的团队和安全工程师。
怎么用
npx skills add https://github.com/cloudflare/security-audit-skill --skill security-audit
# 加 --global 装到用户目录;需要 Node 22.20+(见本栏 npx skills 实测)
# 在 Agent 里对着要审计的仓库说:
security audit this codebase
find security vulnerabilities in ./src
do a security review, output to ~/audits/my-project
只是问安全问题时,它默认用「指导模式」,不建文件。明确说要审计或渗透测试时,才进入完整模式,结果默认写到 ~/security-audit-skill/<仓库名>/run-N,不会写进被审计的仓库。
实测:装上、跑测试、喂一份不合格的结果
环境:2026-10-21,Debian 13,Node.js 22.23.3,skills 1.7.4,OpenCode 1.19.3,仓库最新提交 c1c8a8c。
- 安装:上面那条命令加
-a opencode -y,20 个文件复制进./.agents/skills/security-audit/,opencode debug skill能看到它。 - 体积:说明文件加起来 183 KB,其中 SKILL.md 22 KB,按攻击类型拆成了十几份(Web 协议、云部署、AI 与大模型、供应链等),用到哪份读哪份。
- 校验器自测:
node --test validate-coverage-ledger.test.cjs31 项全过(0.57 秒),validate-findings.test.cjs34 项全过(0.74 秒)。 - 喂一份「AI 常见写法」的结果:一条 confirmed,只有标题、描述和
"severity":"high"。校验器报FAIL: 12 validation error(s),缺根因、预期行为、调用链 trace、证据、触发条件、复现步骤、修复建议、置信度,severity 必须是对象,退出码 1。只写标题和描述的 needs_validation 也报了 7 个错误,要求写清卡在哪个事实、怎么验证。空数组[]才通过。 - 未实测:完整的六阶段审计。README 要求模型支持工具调用和并行子代理,执行目标代码时还要有系统级沙箱:断网、环境变量走白名单、只能写自己的 scratch 目录、限制资源。没有沙箱时,它会把需要运行代码才能确认的线索都留在 needs_validation。我们本地的 4B 小模型带不动这个流程,也没开付费模型。
它最有用的是校验器那一关:没有证据和复现步骤的「漏洞」,连格式检查都过不了。
适合谁,不适合谁
适合:有完整源码、能提供沙箱、用的是 Claude、GPT 这类强模型的团队。只要它定好的结果格式,把 report-schema.json 和校验器接进自己的流程也行。不适合:想要「一键扫描马上出报告」的人,它故意慢、故意多轮;不适合用来测线上系统,它明确禁止探测已部署的服务和真实账号;用本地小模型也带不动。
替代品:Semgrep、CodeQL 这类规则扫描器(确定性强,但只能发现规则里写过的问题);Claude Code 等 Agent 自带的代码审查功能(更快,但没有这种对抗式验证)。两种可以一起用,先用扫描器扫一遍,再让这个 Skill 去确认。
最后
不跑完整审计也值得装:先把 validate-findings.cjs 拿来检查你现在 Agent 给出的安全报告,看有几条能通过。
- GitHub cloudflare/security-audit-skill:README(六阶段流程、安装、要求、设计原则、MIT 许可)
- security-audit SKILL.md:指导模式与完整审计模式、执行安全要求
- report-schema.json:三种结论的字段要求
- Cloudflare 博客:Build your own vulnerability harness(2026-06-18)
- 本文实测:仓库提交 c1c8a8c,Node.js 22.23.3,skills 1.7.4,OpenCode 1.19.3,Debian 13,2026-10-21