「Cloudflare开源安全审计Skill」AI代码审计+漏洞挖掘六阶段流水线全拆解
原创
句芒安全实验室
句芒安全实验室
句芒安全实验室
2026年10月10日 11:06
上海
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
让 AI 找漏洞不难,难的是后面那几步
用大模型扫代码找漏洞,这两年早就不是新鲜事了。真正自己搭过一遍的人都会发现一个尴尬的事实:让模型一口气吐出几十个\"疑似漏洞\"很容易,但要分清哪些是真的、哪些先修、修完到底有没有修干净,才是真正花时间的地方。
Cloudflare 在 2026 年 6 月开源了一份技能(cloudflare/security-audit-skill),把这件事拆成了六个阶段,做成一套可以直接装进编码 Agent 的工作流。我核实了一下(2026-10-10),这个仓库有 26,876 个 star、1,616 个 fork、56 个未关 issue,MIT 协议,JavaScript 写的,2026-06-18 建仓,最近一次推送在 2026-09-14。
它其实是 Cloudflare 那套\"漏洞挖掘流水线\"(VDH)的起点版本。官方在博客《Build your own vulnerability harness》里写得很直白:这个技能就是他们内部系统最初的样子,harness 后来长成了多阶段、覆盖全舰队的大系统,而这个技能是它能被复制的单仓库版本。
它到底是什么
一句话:Cloudflare 官方开源的\"让编码 Agent 变成安全审计员\"的技能。
它的核心不是让模型多找几个漏洞,而是把一次审计拆成六个有序阶段,每个阶段的产物都落盘、可校验、可复现。装好之后,你在一个代码仓库里对 Agent 说一句\"对这个代码库做安全审计\",它就会按流程跑起来。
安装很简单,走 skills 这套 CLI:
npx skills add https://github.com/cloudflare/security-audit-skill \\
--skill security-audit
加 --global 就装到用户级。用起来也朴素,在目标代码库里直接让 Agent 干活:
security audit this codebase
find security vulnerabilities in ./src
两种模式:默认只给建议,动手才全流程
这一点很关键,也是它比很多\"一键扫描器\"克制的地方。这个技能默认是\"指导模式\"(guidance mode):你问一个安全问题、做一次局部复查,它只调用相关的部分,不会自动跑满六个阶段,也不会创建输出目录。只有当你明确说\"审计这个代码库\"\"做一次端到端安全复查\"或者\"要报告产物\"时,才进入完整审计模式,跑完六个阶段并写出文件。如果一句话两边都能解释,它会先问一句,而不是擅自开工。
六个阶段:每一步都单独落盘
完整审计模式的六个阶段是:
- 侦察——先画架构、信任边界、输入面、历史证据和确定性的覆盖台账,落到
architecture.md和coverage-ledger.json; - 覆盖驱动的狩猎——按台账单元派出互相隔离的猎手,记录各自查了什么,再用覆盖批评者找漏掉的区域;
- 候选验证——每一个候选都交给一个全新的验证者,任务是尽力把它证伪;
- 结构化输出——把
confirmed、needs_validation、rejected三类记录写进findings.json,并用report-schema.json校验; - 独立记录复核——再用全新的 Agent 复核最终结论的来源声明,材料性替换还要再过一遍独立验证;
- 目标中立的报告——从已复核的记录和覆盖台账推导出
REPORT.md、FINDINGS-DETAIL.md、NEEDS-VALIDATION.md。
整个过程有两个零依赖的校验器会反复跑:validate-coverage-ledger.cjs 在台账创建后、每次更新后跑;validate-findings.cjs 在阶段四和阶段五每次替换后跑。换句话说,\"证据\"不是一句结论,而是一份能被机器校验的 JSON。
三种裁决:只有 confirmed 才有严重级别
它对结论的分级很克制,也很值得学:
confirmed——有完整的来源追踪和有界的观测结果,才配得上严重级别;needs_validation——有一个确切的、尚未解决的事实挡在那里(比如依赖某个仓库里看不到的部署事实),不给严重级别;rejected——被证伪的候选,也照样留下来,方便以后的跑批不再重复这个错误的声明。
严重级别的锚点也写得很具体:critical 是未认证的代码执行、全量数据访问或任意账户接管;high 是完整击穿某个明确的安全控制并造成真实后果,比如认证绕过、跨租户读写、存储型脚本影响他人;medium 是有边界违规但影响面有限或前置条件罕见。它还专门点了一句:\"要能说出具体损失,否则级别比你感觉的要低。\"
几条我觉得最该抄的设计原则
- 只确认已确立的边界违规——一个被挡住、但有来源支撑的线索,保持
needs_validation,附上那个确切的未解事实,而不是硬凑成漏洞; - 对抗式验证——检查一个发现的人,永远不是发现它的人;
- 严重级别必须有影响支撑——是\"可能性 × 影响\",不是\"和清单不符\";
- 纵深防御的缺口不是漏洞——如果 A 层已经挡住了攻击,那么缺 B 层只是一条加固建议;
- 多跑几遍能提高覆盖——官方在测试里发现,跑一遍大约只能找到反复跑能找出的漏洞总数的一半。
上面这张是 Cloudflare 官方博客里的桑基图,把整条漏斗画得很清楚:两万多个原始候选,经过验证、去重、分诊,最终送到各团队的七千多个,而被判定\"可被互联网利用\"的只剩几百个,其中 critical 只有 41 个。这张图最扎人的地方就在这——从\"候选\"到\"真洞\"的漏斗有多陡,决定了后面几步值不值得做。
沙箱与写隔离:约束要写进代码
这份技能在安全边界上写得很具体:所有能自主跑的 Agent 都要求跑在操作系统强制的沙箱里,必须同时满足——没有外网、从显式白名单加载的空环境、目标与工具链只读、目标进程只能写进分配的 scratch/,以及显式的 CPU、内存、进程、文件大小、磁盘和墙钟限制。它还特别强调:只有可信的父侧代码才允许把预声明的 scratch/ 文件\"晋升\"到保留的 artifacts/,晋升走的是不跟随符号链接、按目录描述符逐级打开、只接受普通文件、限制字节数的那套流程。任何一条控制做不到,就不执行目标代码,而是把缺失的沙箱能力记成 needs_validation 的阻断项,并给出安全的验证计划。
预算:花钱是可数的
它还罕见地把\"花钱\"写进了台账:一个单元约等于一次猎手派发,一个存活的候选约等于一到两次验证者派发。 规则是先给批评者和验证留够额度,再派猎手;如果预算连\"侦察 + 批评 + 验证\"的最低额度都覆盖不了,它就一个 Agent 都不派,直接把这次跑批记成 incomplete 并说明原因,而不是悄悄少派几个把证据稀释掉。
上手:装完先跑一遍已知有洞的目标
官方 README 给的上手路径很朴素:装好技能,在一个已知有漏洞的仓库上跑一次完整审计,看它怎么把\"候选\"一步步收敛到 confirmed;再拿一份自己的小仓库试,重点看它遇到仓库里看不到的部署事实时,是不是老老实实记 needs_validation,而不是硬编一个\"漏洞\"出来。
有个坑要提前知道:它需要目标与工具链只读、空环境、只写 scratch 的强沙箱。如果本地平台做不到这套控制,它就不执行目标代码,只给静态结论加验证计划——所以别指望它在没有沙箱的机器上给你跑出可复现的 PoC。
十个别踩的坑
它自己列了十条反模式,值得逐条对照:①把\"和清单不符\"当成漏洞;②只有纵深防御建议、没有可达的边界违规;③在有共享环境的地方做线上测试;④凭空猜测仓库里没有的 provider、代理、身份或部署行为;⑤把同一主体的权限或自我影响当成跨边界结果;⑥把解析器或运行时的效果报得比实际观测到的更强;⑦只给一段散文、无法去重也无法验证的猎手结果;⑧把上一轮同来源的 confirmed 当成范例去锚定这一轮的狩猎;⑨给 needs_validation 硬安一个严重级别;⑩在独立验证之前就写报告,或者让散文和 JSON 对不上。
它跟 AI 安全的大方向什么关系
它的 AI-AND-LLM.md 这个伴侣文件,专门给 LLM 支持的靶子准备了狩猎类:提示词注入、Agent/工具调用、输出处理。也就是说,这份技能不只是\"审计普通代码\",它本身就在教你怎么审计\"一个带模型的系统\"。对做 AI 安全的人来说,它同时是工具,也是一个可读的参考实现——\"约束写进代码、不写进提示词\"\"发现和验证分离\"\"给验证器加闸门\"这几条,正好是当下 AI Agent 安全最缺的工程习惯。
适合谁
- 想给自家代码搭一套\"AI 找漏洞\"流水线的团队:六个阶段的接口都摆出来了,覆盖台账和 findings 契约可以直接改;
- 做安全左移、想把扫描接进 SDLC 的团队:它把\"先建威胁模型、再分区狩猎、再独立验证\"的路径写得很细;
- 研究 AI Agent 安全边界的人:沙箱、写隔离、预算门、对抗式验证都落成了可读的实现;
- 想审计 LLM 应用的人:
AI-AND-LLM.md把提示词注入和工具调用当成一类可狩猎的攻击面。
不适合谁:想找一个\"一键扫全语言、开箱即用\"的商业扫描器的人——它是一套给编码 Agent 的技能,而且要你自己准备符合要求的沙箱。
最后
回到开头那句话:让 AI 找漏洞不难,难的是怎么证明它找到的是真的。
这份技能真正的价值,不是\"怎么让模型多找几个漏洞\",而是它把后面几步——覆盖台账、对抗式验证、三种裁决、可校验的 findings 契约、写隔离的晋升流程——拆成了能照着抄的模块。当 AI 找漏洞越来越便宜的时候,\"怎么证明它找到的是真的、怎么不把噪音当漏洞\"这件事,才是要花工程时间去做的地方。
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论