前言

Cloudflare 开源的 Security-Audit-Skill 是一套面向 AI 编程 Agent 的安全审计工作流:它把「发现疑似漏洞」和「验证漏洞」拆给不同 Agent,并要求每个确认的漏洞都能在未经修改的原始代码上复现。这样既能降低 Agent「自造漏洞再上报」带来的误报,也能让每一条结论都有据可查。

Security-Audit-Skill 是什么?

你可以把它理解成:一份给编程 Agent 的安全审计工作说明。

它做的事情其实很简单:先看什么、怎样分配检查任务、候选由谁验证,以及最后交出哪些文件。而真正读代码、调用工具或启动子 Agent,仍然依靠承载它的 Coding Agent。

Security-Audit-Skill 工作原理解析

官方仓库:https://github.com/cloudflare/security-audit-skill


Security-Audit-Skill 解决了什么问题?

让 Agent 审代码,它可能列出不少疑似漏洞。但拿到这份列表后,我们还得逐条确认:问题是否真的存在、依据是什么、值不值得修。如果报告只有结论,没有验证过程,这些工作就得由接手的人重新做一遍。

Cloudflare 之前分享过一个很奇葩的现象:Agent 可能会为了跑通利用程序,先修改被审计的源码,再把自己刚造出来的问题当成漏洞上报。最后利用程序确实跑通了,但原来的代码有没有这个漏洞,并没有被证明。

Agent 安全审计中自证漏洞问题示意

Security-Audit-Skill 把查找、验证和记录串成一套流程:Agent 找到疑似漏洞后,要交给独立的 Agent 复核;确认成立的留下证据,不成立的说明原因,暂时确认不了的写清还缺什么。最后把这些结果保存成文件,方便继续检查和安排修复。

核心亮点:发现漏洞的 Agent 不能自己盖章

这套 Skill 要求:验证候选漏洞的 Agent,不能是发现它的那个 Agent。独立验证者要重新检查推理和证据,并尝试找出候选不成立的原因。

具体来说,验证者需要把候选里的源码依据和实际结果对上。每条疑似漏洞最终会得到一种判定,记录在 verdict 字段里:

判定值含义是否标严重程度后续动作
confirmed已确认,能沿源码说明问题如何发生,并有实际验证结果支持是,可标注保留证据,用于安排修复
needs_validation待验证,写明哪项事实还没查清否,不标说明还缺什么,继续补证验证
rejected已证伪,说明原来的判断为什么不成立否,不标说明原因,排除该候选

其中,needs_validation 这类还没查清、正在补证的事项,不会标注严重程度;只有能验证成立的条目,才需要进一步评估严重性并安排修复。

Security-Audit-Skill 功能

完整审计分六个阶段:了解项目、查找疑似漏洞、验证、保存结构化记录、独立复核记录,以及生成报告。

Security-Audit-Skill 六阶段审计流程示意

Agent 会先梳理项目架构、外部输入从哪里进入,以及哪些数据和操作需要经过校验才能被信任,写入 architecture.md;同时用 coverage-ledger.json 记录检查范围和进度,后续据此分配任务、补查遗漏。

验证结果会统一写入 findings.json。这些记录还要经过独立复核,才能用来生成三份报告:

  • REPORT.md:审计报告。
  • FINDINGS-DETAIL.md:发现的问题及详细依据。
  • NEEDS-VALIDATION.md:还需要继续验证的事项。

仓库还提供格式定义和校验脚本,用来检查记录是否符合要求。但脚本检查通过,不代表漏洞一定成立;源码和验证结果仍然要由 Agent 复核。

需要运行代码时,必须放进沙箱

安全审计可能需要构建项目、运行测试。被审计的代码本身就可能不可信,不能直接放到日常开发环境里执行。

这套 Skill 要求使用操作系统强制隔离的沙箱:

  • 目标进程不能访问外网;
  • 只能接收明确允许的环境变量;
  • 只能写入分配的 scratch 目录;
  • CPU、内存和运行时间等资源都要受限制。

没有满足要求的沙箱,就不执行目标代码;需要靠运行代码才能确认的问题,继续保留为待验证项。安装 Skill 并不会自动补齐这些隔离条件。

security-audit-skill 怎么使用?

如果你用的是 Codex 这类 Agent 工具,可以打开要审查的项目,直接让它安装并开始审计,输出以下指令:

帮我安装这个 Skill:https://github.com/cloudflare/security-audit-skill ,然后使用它对当前仓库执行安全审计。

安装后,确认 Codex 已识别并加载这个 Skill。换用其他编程 Agent 时,需要支持工具调用和并行子 Agent;运行校验脚本还需要 Node.js。

也可以通过 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

默认的 guidance mode 用来回答安全问题、检查某条漏洞线索,不会自动执行完整审计或生成报告。像上面这样明确要求完整安全审计并生成报告,才会进入 full audit mode。

没有指定输出位置时,完整审计的结果默认保存在仓库之外:

~/security-audit-skill/<repo-name>/run-<N>

结束后,到这个目录检查记录、三份报告和校验结果。

Logo

更多推荐