Cloudflare 开源 security-audit:发现者不能验证自己的审计技能
Cloudflare 的 security-audit-skill(MIT 许可,约 50.1k 星,本周新增约 16,593 星)把代码审计拆成侦察、覆盖导向的猎取、候选验证、结构化输出、独立记录验证和报告六个阶段,并称它启发了 Cloudflare 自己的漏洞发现系统。核心做法是:检查发现的 Agent 绝不是提出发现的那个,每个候选都由一个全新的验证者去尝试推翻。
能做什么
- 映射架构、信任边界和输入面,生成 architecture.md 与 coverage-ledger.json
- 按覆盖台账分派相互隔离的猎取 Agent,并用覆盖评审找遗漏
- 对每个候选发现由全新的验证 Agent 尝试推翻
- 生成 findings.json、REPORT.md 和 NEEDS-VALIDATION.md
好在哪里
- 提出者与验证者分离,确认结论需要完整源码追踪
- 零依赖的 Node.js 校验器检查 findings 和覆盖台账是否符合 schema
- 没有沙箱时不执行目标代码,只保留为待验证线索
安装 / 启用
npx skills add https://github.com/cloudflare/security-audit-skill --skill security-audit(加 --global 为用户级安装)
要点
- `confirmed` 必须有完整的源码追踪和有限的观察结果;证据不足的写成 `needs_validation`,且不给严重度
- 目标仓库的构建和测试要在能禁网、限资源的操作系统级沙箱里执行;没有沙箱时只记线索、不执行目标代码
- 默认输出到 `~/security-audit-skill/<repo-name>/run-<N>`,不会写进被审计的仓库
- 要求模型支持工具调用和并行子 Agent;页面没有写版本号和发布日期,仓库只有 14 次提交
为什么值得关注
「提出者与验证者分离、结论必须带证据」的做法与模型无关,可借鉴到团队的代码审查 Agent 上;技能自身要求并行子 Agent,在自部署模型上效果需要自行验证,并务必先准备沙箱。
配套实验
已验证
检查 8/8 通过
GitHub Actions 实际运行 · Python 3.12.15 · 耗时 不到 0.1s
离线校验审计发现记录:confirmed 须有证据且不能自己验证自己
参考 Cloudflare security-audit-skill README 描述的规则,用 mock 数据演示一个校验器:confirmed 必须有完整源码追踪和有限的观察结果,needs_validation 不得带严重度,验证者不能是发现者。
结论8 条 mock 记录全部判定正确,其中 5 条违规被指出具体原因
[PASS] F1 (confirmed): 违规=无 [PASS] F2 (confirmed): 违规=['self-verified'] [PASS] F3 (confirmed): 违规=['missing-trace'] [PASS] F4 (confirmed): 违规=['missing-observation'] [PASS] F5 (needs_validation): 违规=无 [PASS] F6 (needs_validation): 违规=['severity-on-unvalidated'] [PASS] F7 (needs_validation): 违规=['missing-unresolved-fact'] [PASS] F8 (rejected): 违规=无 METRIC: 校验结论与标注一致 = 8 条 METRIC: 被标出违规的记录 = 5 条 RESULT: 8 条 mock 记录全部判定正确,其中 5 条违规被指出具体原因
python main.py
查看代码与内网复现步骤 →
来源
原文
cloudflare/security-audit-skill README
GitHub · github.com
原文
GitHub Trending(本周)
GitHub · github.com
### [Cloudflare 开源 security-audit:发现者不能验证自己的审计技能]({{URL}})
Cloudflare 的 security-audit-skill(MIT 许可,约 50.1k 星,本周新增约 16,593 星)把代码审计拆成侦察、覆盖导向的猎取、候选验证、结构化输出、独立记录验证和报告六个阶段,并称它启发了 Cloudflare 自己的漏洞发现系统。核心做法是:检查发现的 Agent 绝不是提出发现的那个,每个候选都由一个全新的验证者去尝试推翻。
- `confirmed` 必须有完整的源码追踪和有限的观察结果;证据不足的写成 `needs_validation`,且不给严重度
- 目标仓库的构建和测试要在能禁网、限资源的操作系统级沙箱里执行;没有沙箱时只记线索、不执行目标代码
- 默认输出到 `~/security-audit-skill/<repo-name>/run-<N>`,不会写进被审计的仓库
- 要求模型支持工具调用和并行子 Agent;页面没有写版本号和发布日期,仓库只有 14 次提交
**为什么值得关注**:「提出者与验证者分离、结论必须带证据」的做法与模型无关,可借鉴到团队的代码审查 Agent 上;技能自身要求并行子 Agent,在自部署模型上效果需要自行验证,并务必先准备沙箱。
来源:[cloudflare/security-audit-skill README](https://github.com/cloudflare/security-audit-skill);[GitHub Trending(本周)](https://github.com/trending?since=weekly)