夜雨聆风学习资料网

ARTICLE · 1034658

AI 自查漏洞:Cloudflare 这个开源 skill 一天涨了 3000 星

AI 自查漏洞:Cloudflare 这个开源 skill 一天涨了 3000 星

早上刷 GitHub Trending,我以为今天又是模型的天下。

结果第一名不是模型,也不是推理框架,而是一个叫 security-audit-skill 的仓库,今日涨星 3019。它干的事只有一件:让 AI 编码助手学会查安全漏洞。

我把它装到本地一个放了很久的小项目上跑了一轮,中间被沙箱条件卡了一次。这篇就讲清楚三件事:它是什么、harness 是怎么把它跑起来的、你今晚能不能用上。

一、先说清楚它是什么

它是一个 skill,也就是"技能包"。

插件和工具是 agent 的——读文件、跑命令、调 API。技能是 agent 的操作规程:一大段写给模型看的流程说明,外加一堆配套文件。工具决定它能不能干,技能决定它按什么顺序干、干到什么程度才算完。

这个技能把一次安全审计拆成六个阶段,每阶段都往磁盘上落产物,而不是只在对话里聊。

阶段干什么落盘产物
1 侦察摸清架构、信任边界、输入面、已有证据architecture.md、coverage-ledger.json
2 覆盖驱动狩猎按账本分配隔离的 hunter,记录检查项,用 critic 找覆盖缺口覆盖账本增量
3 候选验证每个候选交给一个全新的 verifier 去证伪候选记录
4 结构化输出写出三档裁决并做 schema 校验findings.json
5 独立记录复核新 agent 复核最终结论;有替换就再找一个独立 verifier复核后的记录
6 目标中立报告从已验证记录和账本推导报告REPORT.md、FINDINGS-DETAIL.md、NEEDS-VALIDATION.md

图源:GitHub 仓库卡片(自动生成)

三档裁决是这个技能里最值得抄的设计:

裁决含义硬性要求
confirmed确认的边界失效必须带完整来源追溯和有界的观测结果
needs_validation悬而未决的线索必须写明确切的未解决事实,且不许给严重级别
rejected被证伪的候选记录它是怎么被推翻的

"不许给严重级别"这一条很关键:没验证的猜测,不该被渲染成"高危漏洞"。

二、它值钱的地方不是模型,是流程

大模型查代码漏洞,第一版通常很难看:它会确认自己刚说过的话。

这个技能的解法很土,也很有效——找漏洞的 agent,和验漏洞的 agent,永远不是同一个。每个候选都交给一个全新的、干净的 verifier 去证伪,而不是去复现。

严重性必须有影响。 用的是可能性乘以影响,而不是"和检查表不一致就算高危"。

纵深防御的缺口不算漏洞。 如果 A 层已经挡住了攻击,那么 B 层缺失只能写成加固建议。这一条能砍掉大量看着吓人、实际上没人能利用的报告。

它还有一份覆盖账本。哪些模块查过、哪些没查过,一眼能看见;下一轮再跑,就用旧账本盯缺口、重新验证改动过的源码,而不是从头再猜一遍。

作者自己说了一句实话:在他们的测试里,单次运行大约只找到重复运行所发现漏洞总数的一半

潜台词是:单次结果不能当结论。

三、怎么装、怎么用

安装就一行命令:

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

用法更简单。把 agent 开在要审的代码库里,然后说人话:

security audit this codebasefind security vulnerabilities in ./src

请求命中触发词,技能自动激活。问一个具体的安全问题,它只给建议;让它审整个代码库,才走完整流程。跑完默认落在 ~/security-audit-skill/<仓库名>/run-<序号>,除非你另指定目录——而且它只在你指定的、被版本控制忽略的目录里写文件。

前置条件有三条,第三条最容易翻车:

  1. 一个支持工具调用、能并行开子代理的编码 agent

  2. Node.js,用来跑那两个零依赖的校验脚本

  3. 一个操作系统级的沙箱

第三条要看仔细:禁外网、白名单环境、资源限额、只允许写指定临时路径。

我就是在这里卡住的。我没配沙箱,结果它很"守规矩"——不去执行目标代码,把所有线索都留在 needs_validation 里。你拿到的不是审计报告,而是一份待办清单。想要它真的去跑构建、跑测试、跑 fuzzer,沙箱得先配好。

第二个坑是版本。这个仓库没有 release,最近一次推送是 9 月 14 日,也就是说没有 v1.0 可以锁——要固定版本,只能按提交哈希来。

四、harness 到底是什么

标题里我说的"harness 把它跑起来",得解释一下。

harness 就是包裹模型的那层外壳:系统提示词、工具、权限、记忆、子代理,全在这一层。模型是发动机,harness 是底盘、变速箱和刹车。同一个模型,换一套 harness,结果可能完全不同。

系统提示词。 harness 给模型的常驻指令。这里就是那个 SKILL.md,规定它必须先侦察、再狩猎,最后才下结论。

工具调用。 模型没有手,读写文件和跑命令都得靠工具。六个阶段全靠它落地。

上下文窗口。 一次能塞进模型的文字量是有上限的。所以它把中间结果写成 architecture.md、coverage-ledger.json 落在磁盘上,而不是全堆在对话里。大项目塞不进上下文,而且每一轮都要重发一遍,都是钱。

子代理。 每个 hunter、每个 verifier 都是独立的子代理,各自有一份干净的上下文,互相不污染。这是"对抗验证"能成立的前提。

记忆。 候选、裁决、账本都落成文件,下一轮接着用——这才是"多次运行可累加"的基础。

权限与沙箱。 让 agent 执行陌生代码,是这套东西里风险最高的一步。所以它明确要求操作系统级隔离,只给一块临时写入区。这不是礼貌建议,是底线。

技能本身。 除了主文件,它还带了十类攻击面文件,从内存安全与二进制、AI 与 LLM、Web 协议与认证,一路覆盖到供应链、云与部署、数据隔离和桌面端本地 IPC。按目标类型加载,而不是一股脑塞进提示词。

五、泼冷水

它不替代谁。 这不是合规审计,也替代不了渗透测试。MIT 许可,没有 SLA,没有 release,出了问题没人对你负责。

needs_validation 会堆积。 沙箱不全、环境缺东西的时候,它只给你一堆"待验证"。这不算发现,更不算功劳。

成本是真的。 六个阶段、多个子代理,一次完整审计消耗的时间和 token 都很实在。在小项目上跑一次图新鲜可以,别指望它当 CI 日常任务。

今天的榜单不等于质量认证。 同一天在涨的同类仓库一堆,一周后可能只剩一半还活跃。Trending 反映的是注意力,不是工程质量。

六、你今晚能做的三件事

第一,找个不涉密的小项目跑一次。 重点不是找出几个漏洞,而是看它生成的账本和报告长什么样——这套结构本身值得学。

第二,把它的流程说明当清单读。 那十类攻击面文件本身就是一份整理得不错的安全检查表,不用 agent 也能拿去改自己的 code review 清单。

第三,看生态,别只看单个仓库。 今天同榜的还有 alibaba/open-code-review(今日 +2724)、Tencent/BrowserSkill(+1319)、addyosmani/agent-skills(+677)、anthropics/knowledge-work-plugins(+300)。

图源:GitHub 仓库卡片(自动生成)

图源:GitHub 仓库卡片(自动生成)

写在最后

三条判断原则,可以直接套:

看它把什么变成了流程。 模型能力是公共的,把某个环节约束成固定流程的,才是它真正加的那点东西。

看它敢不敢说"我不知道"。 一个工具能明确区分"确认"和"待验证",比它能报出多少个高危更值钱。

给执行权之前先配沙箱。 让 agent 在你机器上跑陌生代码,是所有自动化里最容易后悔的一步。

回到这件事本身:一个审计工具最反直觉的设计,是不让同一个 agent 既当运动员又当裁判。

安全领域早就有这条常识,只是在 AI 时代,我们太容易忘记它。

参考资料

  1. GitHub 仓库 cloudflare/security-audit-skill(一手 README,最近推送 2026-09-14):https://github.com/cloudflare/security-audit-skill

  2. Cloudflare 官方博客《Build your own vulnerability harness》:https://blog.cloudflare.com/build-your-own-vulnerability-harness

  3. GitHub Trending 日榜(2026-09-17 抓取):https://github.com/trending

  4. Hacker News 当日讨论:https://news.ycombinator.com/item?id=49736466

  5. 开源中国 2026-09-17 报道:https://www.oschina.net/news/502589

配图说明:三张配图均为 GitHub 自动生成的仓库卡片(远程 URL),版权归对应项目方。

相关学习资料