开源项目

security-audit-skill

面向 coding agent 的多阶段安全审计 skill,将一次代码审计拆成侦察、覆盖驱动挖掘、候选验证、结构化输出、独立复核、目标无关报告六个阶段,并由多个隔离子 agent 分工执行。亮点是流程约束做得细:发现漏洞的 agent 与验证漏洞的 agent 必须是不同实例,结论严格区分 confirmed / needsvalidation / rejected,findings.json 与 coverage-ledger.json 都配有零依赖校验脚本,多次运行结果可叠加用于补覆盖。它是 Cloudflare 漏洞挖掘 harness 的单仓库起点,要求宿主提供禁用外网的操作系统级沙箱,否则只输出 needsvalidation。MIT 许可。

README

security-audit

一个 coding-agent skill(编码 agent 技能),可将你的 agent 变成安全审计员。它编排相互隔离的 agent,依次完成侦察、以覆盖率为主导的猎取、候选验证、结构化输出、独立记录核验,以及与目标无关的报告生成。

正是这个 skill 孕育了 Cloudflare 的漏洞发现 harness(漏洞发现框架),详见 Build your own vulnerability harness。该 harness 后来发展成一套多阶段、覆盖整个机群的系统;而这个 skill 正是它演化前的单仓库起点。

它的作用

该 skill 以六个阶段运行结构化审计:

  1. 侦察(Reconnaissance) —— 在 architecture.md 和 coverage-ledger.json 中绘制架构、信任边界、输入面、既有证据以及确定性覆盖率。
  2. 以覆盖率为主导的猎取(Coverage-led hunting) —— 从 ledger(账本)单元中分配相互隔离的 hunter(猎手),记录它们的检查项,并用 coverage critic(覆盖率评审者)找出缺口。
  3. 候选验证(Candidate validation) —— 将每个唯一候选交给全新的 verifier(验证者),由其尝试证伪。
  4. 结构化输出(Structured output) —— 将 confirmed、needs_validation 和 rejected 记录写入 findings.json,并依据 report-schema.json 进行校验。
  5. 独立记录核验(Independent record verification) —— 由全新的 agent 核验最终的来源声明。实质性替换会交由另一位独立验证者处理。
  6. 与目标无关的报告(Target-neutral reporting) —— 从已核验的记录和覆盖率 ledger 衍生出 REPORT.md、FINDINGS-DETAIL.md 和 NEEDS-VALIDATION.md。

父级在创建 ledger 之后、以及后续每次 ledger 更新之后都会运行 validate-coverage-ledger.cjs。在第 4 阶段运行 validate-findings.cjs,并在每次第 5 阶段替换后再次运行。

三类判定彼此区分:confirmed 具有完整的来源追踪和边界明确的观察结果;needs_validation 具有一个确切未解决的事实且不含严重性评级;rejected 记录被证伪的候选。

对同一仓库的多次运行是累加式的。该 skill 会利用此前的 ledger 和 findings 来锁定缺口、重新验证已变更的来源,并沿用当前来源的证据,而不会把陈旧或未解决的工作视为已覆盖。

文件

文件 用途
SKILL.md 配置、核心原则、平台术语、工作流概览以及审计反模式
RECONNAISSANCE.md 第 1 阶段侦察提示词与综合指令
HUNTING.md 第 2 阶段编排、猎取方法论与验证规则
ATTACK-CLASSES.md 核心、通配以及 obvious-things 攻击提示词
MEMORY-SAFETY-AND-BINARY.md 面向原生目标的内存安全、二进制与内核猎取类别
AI-AND-LLM.md 面向 LLM 支撑目标的 prompt-injection、agent/tool 与输出处理猎取类别
WEB-PROTOCOL-AND-AUTH.md 面向 HTTP 协议与认证目标的 HTTP 请求分帧、缓存与认证协议猎取类别
CLIENT-SIDE.md 面向客户端/浏览器目标的 DOM 注入、消息信任、UI 诱骗(UI-redress)与原型污染猎取类别
SUPPLY-CHAIN-AND-RELEASE.md 依赖、CI、发布、签名、更新、插件与扩展猎取类别
CLOUD-AND-DEPLOYMENT.md IAM、基础设施即代码、容器、serverless、入口与运行时配置猎取类别
PROTOCOLS-RPC-AND-MESSAGING.md RPC、序列化、队列、broker、webhook 与流式协议猎取类别
RESOURCE-EXHAUSTION-AND-AVAILABILITY.md 共享资源、配额、队列、worker 与运营方支出猎取类别
DATA-ISOLATION-AND-LIFECYCLE.md 租户隔离、缓存、搜索、导出、备份、迁移、删除与恢复猎取类别
DESKTOP-MOBILE-AND-LOCAL-IPC.md 原生应用、深链、webview、导出组件、helper、daemon 与本地 IPC 猎取类别
VALIDATION-AND-REPORTING.md 第 3–6 阶段候选验证、结构化输出、记录核验与报告生成
report-schema.json 为 findings.json 全部三类判定定义的 JSON schema
validate-findings.cjs 在第 4、5 阶段对 findings.json 进行零依赖校验的验证器
validate-findings.test.cjs findings 验证器的测试以及生产者兼容的 fixture(测试夹具)检查
validate-coverage-ledger.cjs 在第 1–5 阶段对 coverage-ledger.json 进行零依赖校验的验证器
validate-coverage-ledger.test.cjs 覆盖率 ledger 验证器的测试

安装

使用 Skills CLI 安装该 skill:

npx skills add https://github.com/cloudflare/security-audit-skill \
  --skill security-audit

使用 --global 进行用户级安装:

npx skills add https://github.com/cloudflare/security-audit-skill \
  --skill security-audit \
  --global

运行 npx skills --help 查看 agent 选择与非交互式选项。

用法

在你的 coding agent 中打开(或将其指向)想要审计的代码库,然后要求它执行安全审计:

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

当请求匹配其触发条件(security audit、find vulnerabilities、pen-test the code 等)时,该 skill 会自动激活。直接的代码库审计或渗透测试请求会使用完整审计模式。安全问题和聚焦式漏洞工作则使用 guidance(指导)模式,除非你要求生成报告产物。在完整审计模式下,未指定输出目录时默认为 ~/security-audit-skill/<repo-name>/run-<N>。仅当你显式选择了一个被版本控制忽略的目录时,工作流才会写入目标仓库内部。

环境要求

  • 一个具备支持工具调用与并行 sub-agent(子 agent)的模型的 coding agent
  • Node.js,用于零依赖的 findings 与覆盖率 ledger 验证器
  • 一个由操作系统强制执行的沙箱,用于运行目标代码控制的构建、测试、进程、浏览器、模拟器、fuzzer 和 fixture。它必须禁用外部网络、使用经净化的白名单环境、强制资源限制,并仅允许写入分配的临时路径。若缺少这些控制,工作流会把线索保持为 needs_validation,而不执行目标代码。

设计原则

  • 只确认已确证的边界失效。 将有来源依据但受阻的线索保留为 needs_validation,并附带其确切未解决的事实。
  • 对抗式验证。 检查某个 finding 的 agent 绝不能是发现它的那个 agent。
  • 严重性需要影响支撑。 可能性 × 影响力,而非偏离清单的程度。
  • 纵深防御缺口不是漏洞。 如果 A 层能阻止攻击,那么 B 层的缺失只是一条加固建议。
  • 多次运行提升覆盖率。 在我们的测试运行中,单次运行发现的漏洞约为重复运行总计发现量的一半。

联系

问题、反馈,或就 AI 驱动的安全工具交流心得:security-ai-research@cloudflare.com

许可证

MIT —— 参见 LICENSE。

开源项目cloudflare2026-09-16原文

相关内容