一款面向 AI 编程 Agent 的多阶段安全审计 Skill,封装了侦察、覆盖引导狩猎、候选验证、结构化输出等六阶段流程,可独立验证发现并输出标准化报告。
一个编程 Agent 技能,让你的 Agent 变身为安全审计员。它通过侦察、覆盖率驱动的漏洞挖掘、候选验证、结构化输出、独立记录核实和目标无关的报告,编排多个隔离的子 Agent 完成工作。
这个技能是 Cloudflare 漏洞发现框架的种子,最早出现在《Build your own vulnerability harness》一文中。该框架后来演进为多阶段、全Fleet的系统;而这个技能正是它演化而来的单仓库起点。
该技能按六个阶段执行结构化审计:
侦察(Reconnaissance) —— 映射架构、信任边界、输入面、先前证据和确定性覆盖率,输出 architecture.md 和 coverage-ledger.json。
覆盖率驱动的漏洞挖掘(Coverage-led hunting) —— 从账本单元分配隔离的猎手,记录他们的检查项,用覆盖率评审器发现缺口。
候选验证(Candidate validation) —— 将每个独特的候选漏洞交给一个全新的验证者,尝试推翻它。
结构化输出(Structured output) —— 将确认、需要验证和已拒绝的记录写入 findings.json,并对照 report-schema.json 进行校验。
独立记录核实(Independent record verification) —— 由全新的 Agent 核实最终的来源声明。涉及材料替换的记录会再经过一轮独立验证。
目标无关的报告(Target-neutral reporting) —— 从已核实记录和覆盖率账本推导出 REPORT.md、FINDINGS-DETAIL.md 和 NEEDS-VALIDATION.md。
父进程在创建账本后、以及每次账本更新后运行 validate-coverage-ledger.cjs。在第四阶段运行 validate-findings.cjs,并在每次第五阶段替换后再次运行。
裁决结果是明确分化的:confirmed 拥有完整的来源追踪链和有界的观察结果;needs_validation 有一个精确的未解决事实但无严重级别;rejected 记录的是一个已被推翻的候选漏洞。
对同一代码库多次运行是叠加的。该技能利用先前的账本和发现结果来瞄准缺口、重新验证已变更的来源,并在不将过时或未解决的工作视为已覆盖的前提下,将当前来源的证据向前延续。
用 Skills CLI 安装该技能:
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 选择和非交互模式选项。
在你要审计的代码库中启动你的编程 Agent(或将 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 等)时,技能自动激活。直接的代码库审计或渗透测试请求会启用完整审计模式。安全问题咨询和聚焦型漏洞工作默认使用引导模式,除非你明确要求产出报告制品。在完整审计模式下,未指定输出目录时默认使用 ~/security-audit-skill/<repo-name>/run-<N>。只有当你明确选择版本控制忽略的目录时,工作流才会在目标仓库内写入文件。
前置依赖
能够使用工具并支持并行子 Agent 的编程 Agent(模型层面需支持工具调用和并行子 Agent)
Node.js(用于零依赖的 findings 和 coverage-ledger 校验器)
操作系统强制的沙箱环境,用于目标控制的构建、测试、进程、浏览器、模拟器、模糊测试工具和 Fixture。沙箱必须禁用外部网络、使用经过清理的白名单环境、强制资源限制,并仅允许向指定的临时路径写入。若缺少这些管控措施,工作流会将主导结果保持在 needs_validation 状态,而非执行目标代码。
最佳实践
只确认已建立边界的故障。将基于来源的已阻止线索保留为 needs_validation 并标注其精确的未解决事实。
对抗性验证。检查某个发现的 Agent 绝不是发现它的那个 Agent。
严重级别需要影响力。需要的是"可能性 × 影响",而非偏离检查清单的程度。
纵深防御缺口不是漏洞。如果 A 层已阻止了攻击,则 B 层的缺失只是加固笔记。
多次运行提升覆盖率。在测试运行中,单次运行发现的漏洞约为重复运行累计发现总数的一半。
有问题、反馈或想交流 AI 驱动安全工具的心得:security-ai-research@cloudflare.com