ESC
开源 2 分钟阅读

Cloudflare 开源 security-audit 技能:让编码智能体变身多阶段安全审计员

Cloudflare 开源 security-audit 技能,可将编码智能体转变为安全审计员。该技能分六个阶段执行结构化审计:侦察、覆盖率驱动的漏洞挖掘、候选验证、结构化输出、独立记录复核与目标中立报告,曾催生 Cloudflare 内部的漏洞发现系统。发现结果为机器可读、经独立验证,项目已在 GitHub 发布,采用 MIT 许可证。

来源:GitHub日榜

security-audit

一个可将你的智能体变成安全审计员的编码智能体(coding-agent)技能。它通过协调多个相互隔离的智能体,完成侦察、覆盖率驱动的漏洞挖掘、候选验证、结构化输出、独立记录复核,以及目标中立的安全报告。

这正是催生 Cloudflare 漏洞发现系统(vulnerability discovery harness)的技能,相关内容见《Build your own vulnerability harness》一文。该系统已发展为多阶段、集群级(fleet-wide)的体系;本技能则是其演化起点的单仓库版本。

它做什么

该技能分六个阶段运行结构化审计:

  1. 侦察 – 在 architecture.md 和 coverage-ledger.json 中绘制架构、信任边界、输入面、既往证据与确定性覆盖情况。
  2. 覆盖率驱动的挖掘 – 从台账单元中分配相互隔离的 hunter,记录其检查项,并利用覆盖率批评者(coverage critics)找出盲区。
  3. 候选验证 – 将每个唯一的候选发现交给一个全新的验证者,由其尝试证伪。
  4. 结构化输出 – 将 confirmed、needs_validation 和 rejected 记录写入 findings.json,并对照 report-schema.json 进行校验。
  5. 独立记录复核 – 全新的智能体验证最终的来源声明。重大替换会再交由另一个独立验证者处理。
  6. 目标中立报告 – 从已验证记录和覆盖台账推导出 REPORT.md、FINDINGS-DETAIL.md 和 NEEDS-VALIDATION.md。

父流程在创建台账后以及每次后续台账更新后运行 validate-coverage-ledger.cjs,并在第 4 阶段以及第 5 阶段每次替换后运行 validate-findings.cjs。

判定结果是相互区分的:confirmed 拥有完整的来源追溯和有边界的观测结果;needs_validation 含有确切的未解决事实且不带严重级别;rejected 记录已被证伪的候选。

对同一仓库的多次运行是累加的。该技能利用先前的台账和发现来瞄准盲区、重新验证已变更的源码,并沿用仍适用于当前源码的证据,而不会将过时或未解决的工作视为已覆盖。

文件

文件用途
SKILL.md设置、核心原则、平台术语、工作流概述及审计反模式
RECONNAISSANCE.md第 1 阶段侦察提示词与综合指令
HUNTING.md第 2 阶段编排、挖掘方法论与验证规则
ATTACK-CLASSES.md核心、通配与显而易见问题的攻击提示词
MEMORY-SAFETY-AND-BINARY.md针对原生目标的内存安全、二进制与内核挖掘类别
AI-AND-LLM.md针对 LLM 支撑目标的提示词注入、智能体/工具与输出处理挖掘类别
WEB-PROTOCOL-AND-AUTH.md针对 HTTP 协议与认证目标的请求分帧、缓存与认证协议挖掘类别
CLIENT-SIDE.md针对客户端/浏览器目标的 DOM 注入、消息信任、UI 伪装与原型污染挖掘类别
SUPPLY-CHAIN-AND-RELEASE.md依赖、CI、发布、签名、更新、插件与扩展挖掘类别
CLOUD-AND-DEPLOYMENT.mdIAM、基础设施即代码、容器、无服务器、入口与运行时配置挖掘类别
PROTOCOLS-RPC-AND-MESSAGING.mdRPC、序列化、队列、消息代理、Webhook 与流式协议挖掘类别
RESOURCE-EXHAUSTION-AND-AVAILABILITY.md共享资源、配额、队列、worker 与运维支出挖掘类别
DATA-ISOLATION-AND-LIFECYCLE.md租户隔离、缓存、搜索、导出、备份、迁移、删除与恢复挖掘类别
DESKTOP-MOBILE-AND-LOCAL-IPC.md原生应用、深度链接、webview、导出组件、helper、守护进程与本地 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发现校验器测试及与生产者兼容的 fixture 检查
validate-coverage-ledger.cjs第 1–5 阶段使用的 coverage-ledger.json 零依赖校验器
validate-coverage-ledger.test.cjs覆盖台账校验器测试

安装

使用 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 查看智能体选择与非交互式选项。

用法

在你想要审计的代码库中(或将其指向该代码库)启动你的编码智能体,然后要求它进行安全审计:

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>。只有当你明确选择一个被版本控制忽略的目录时,工作流才会在目标仓库内写入。

要求

  • 一个编码智能体,其模型需支持工具使用和并行子智能体
  • Node.js,用于零依赖的发现与覆盖台账校验器
  • 一个由操作系统强制执行的沙箱,用于目标侧控制的构建、测试、进程、浏览器、模拟器、模糊测试工具与 fixture。沙箱必须禁用外部网络、使用经过清洗的白名单环境、强制资源限制,并只允许写入指定的临时路径。若缺少这些控制,工作流会将结论保持为 needs_validation 而不会执行目标代码。

设计原则

  • 只确认已确立的边界失败。 有来源依据但被阻断的线索保持为 needs_validation,并附上其确切的未解决事实。
  • 对抗式验证。 检查某个发现的智能体永远不会是发现它的那个智能体。
  • 严重级别需要影响支撑。 按可能性 × impact 评估,而不是对照清单看偏差。
  • 纵深防御缺口不是漏洞。 如果 A 层已能阻止攻击,缺少 B 层只是一条加固建议。
  • 多次运行可提升覆盖率。 在我们的测试运行中,单次运行发现的漏洞大约是多次运行总和的一半。

联系方式

关于 AI 驱动安全工具的疑问、反馈或经验交流:security-ai-research@cloudflare.com

许可证

MIT – 见 LICENSE。