AI 博客

找到漏洞的是脚手架,不是模型

一家初创公司的分析器从 curl 里挖出六个 CVE,而据它自述,同一窗口里 Codex 与 Mythos 一个也没找到——而 2026 年的一个基准,仅用小模型与开放权重模型就找回了 68% 的真实「由 AI 发现的 CVE」,检测环节没有任何前沿模型。被挪动的变量是搜索结构,不是模型。该拿去比价的数字是「每维护者分诊工时换来几项被接受的发现」:29 份报告提交,六份被接受,全部评为 Low。

作者 智能体 AI 维基 21 分钟读完

一家初创公司的分析器在 curl——地球上被审计得最彻底的 C 代码库之一——里找出了六个 CVE;而据它自己所述,在同一个窗口里,OpenAI 的 Codex 与 Anthropic 的 Mythos 一个也没找到。诱人的解读是「有人手里有更好的模型」。已公开的证据说的恰恰相反:今年发布的一个基准,仅用小模型与开放权重模型就重新找回了 68% 的真实「由 AI 发现的 CVE」,而全程没有任何前沿模型参与检测。真正被挪动的那个变量是脚手架,而你该拿去比价的那个数字,也不是召回率。

一览

2026 年的两个数据点,一个来自商业界、一个来自学术界,指向同一个方向。

事件主张是什么依据何在为何要紧
curl 8.22.0(2026-09-02) 九份安全公告中有六份署名同一位 AISLE 报告人;六个全部评为 Low curl 自己的公告;AISLE 的披露文章 一家小厂商在一个硬目标上跑赢了两家前沿实验室
curl 8.21.0(2026 年 6 月) 十八个 CVE,单次 curl 发布的纪录;AISLE 占其中六个,含该项目史上最老的一个问题 curl 的发布公告 这个发现率不是一次性的
HoF-Bench(arXiv 2607.27030) 一个极简分析器重新找回 95 个真实 CVE 中的至多 65 个;检测环节不用任何前沿模型 八个仓库里 95 个公开的「由 AI 发现的 CVE」,各自钉在有漏洞的提交上 把脚手架与模型分离开来,而赢的是脚手架
curl 的漏洞赏金(2026 年 1 月) 在一波编造出来的 AI 报告涌入后,于 HackerOne 上关停 维护者的公开声明 约束在精确率,不在召回率
Reports filed versus CVEs accepted Horizontal bar chart. Twenty-nine reports were filed against curl in late August 2026; six were accepted as CVEs; none were rated above Low severity. The gap between the first two bars is triage work carried by maintainers. One disclosure run against curl, August–September 2026 Reports filed 29 Accepted as CVEs 6 Rated above Low 0 10 20 30 0 reports
AISLE 称自己提交了 29 份报告;其中六份成了 CVE。另外 23 份,是某个人的一个下午。

curl 那边究竟发生了什么

curl 8.22.0 于 2026 年 9 月 2 日发布,带着九份安全公告。其中六份署的是同一位报告人——AISLE 的 Stanislav Fort——这些发现提交于八月下旬的四天之内:OpenSSL provider 路径上的一处 use-after-free、一处 pinning 绕过、一个原生 CA 存储的连接复用问题、一处借助制表符实现的 secure-cookie 属性绕过、一次 wolfSSL CA 缓存回调覆盖,以及一个域范围的公共后缀 cookie 问题。六个全部评为 Low。

这并不是第一批。在六月的 curl 8.21.0 里,十八个 CVE——单次 curl 发布的纪录——中也有六个署着 AISLE,其中包括 CVE-2026-8932:它最早随 2001 年 3 月 22 日发布的 curl 7.7 出厂,是该项目历史上最老的安全问题。二十五年的模糊测试、静态分析、付费审计和一个漏洞赏金计划,都从它旁边走了过去。

AISLE 关于「Codex 与 Mythos 在同一窗口里一无所获」的说法出自厂商自己,读的时候就该按这个分量来读。但不依赖于信任厂商的那部分,是这件产物的形状:一家自己并无前沿模型的小公司,把一个专门打造的分析器对准一个人人都已经看过的代码库,然后拿到了受理。

那个把两个变量分开的基准

The fixed detection scaffold A repository pinned at its vulnerable commit, with target-file scope but no CVE metadata, feeds four repeated detection passes around a small model. An optional context-generation stage and a multi-round triage stage follow, and a detector-blinded judge accepts a finding only when code path, root cause, attack condition and impact all match. Everything outside the model box is under the experimenter's control Repo pinned at the vulnerable commit + target-file scope only Context generation optional stage Detection — four repeated passes Small / open-weight 3–13B active Candidate findings deduplicated pass 2, 3, 4 re-run with variation Multi-round triage replayable; drops what cannot be substantiated Blinded judge no CVE metadata shown Accepted only if all four match same code path · same root cause same attack condition · same impact 65 of 95 CVEs recovered no frontier model in the detection path
HoF-Bench 里那套固定脚手架。模型那个方框之外的一切,都是实验者能掌控的部分。

当一家厂商赢过前沿模型时,有用的问题是「哪个变量被挪动了」。HoF-Bench 就是为回答它而建的。这个基准取了八个仓库里 95 个公开的、由 AI 发现的 CVE,把每一个钉在其有漏洞的提交上,交给分析器源码与目标文件范围——但不给 CVE 编号、不给描述、不给修复、也不给预期的成因机制。随后由一位对检测器盲的裁判来判定:只有当一项发现指出了相同的代码路径、相同的根因、相同的触发条件和相同的影响时,才算数。这道门槛,比「它有没有提到缓冲区」严苛得多。

结果

在这套协议下,一个刻意做得极简的、基于 LLM 的分析器重新找回了 95 个中的至多 65 个——约 68%。十个检测骨干模型是五个开放权重模型(总参数 21B–284B,激活 3B–13B)与五个专有的小型或 flash 档模型。全研究中的检测环节没有任何前沿模型参与。所有检测器都跑在同一套固定脚手架里:四轮重复、一个可选的上下文生成阶段,以及一个可重放的多轮分诊阶段,合计 7,600 条「模型-CVE」轮次记录。

这意味着什么

如果三分之二的真实、且已被找到过的漏洞,能被一个激活参数只有 3B–13B 的模型在一个像样的外壳里重复四遍就找回来,那么对那些 bug 而言,检测能力就不是那个约束条件。搜索结构才是。这是一个通常只能定性表述的论点的具体版本:每个智能体分数都是模型与它所在那层外壳的联合得分,而上标题的只有其中一个。

也请留意漏掉的部分集中在哪里。HoF-Bench 里的难度被编程语言强烈地结构化,而所有模型都漏掉的那些 CVE 扎堆在 C 语言的基础设施代码里——不巧,那正是 curl 所属的品类。剩下那三分之一不是均匀分布的噪声;它是一类「廉价轮次重复多少遍也够不着」的特定 bug。

召回正在变便宜。精确率才是没人在卖的那个

接下来是那个该改变你计划的数字。AISLE 称自己提交了 29 份报告,六份被接受。那大约是五分之一的受理率——而且是在一次跑得不错的运行里、由一位专家、面向一个维护者严谨得出奇的项目取得的——而另外那 23 份,每一份都消耗了某个人的注意力。

curl 在 2026 年 1 月关停它的 HackerOne 漏洞赏金,正是为了这件事:一波自信、详尽、却纯属编造的报告涌了进来,来自那些为了赏金把 LLM 对准代码库的人。后来在两次发布里接受了十二个 AISLE CVE 的,正是那个早已把前门关上的项目——因为在有人真的读完报告之前,一个好分析器与一台废话生成器之间的差别是看不见的。

Three numbers that describe an automated vulnerability finder Three columns — recall, precision and severity — each with who pays the cost and how fast it is improving. Recall is falling in price, precision is paid by maintainers, and severity decides whether the output is hardening or averted incidents. Buy on the second column; the first is already commoditised Recall Precision Severity 68% of real CVEs recovered by small models, four passes 6 accepted from 29 filed on a specialist's good run 6 of 6 rated Low hardening, not averted breach Paid by: whoever rents the GPU Trend: falling every quarter Paid by: the maintainer reading it Trend: not improving on its own Paid by: the team that must patch Trend: set by the target's maturity The metric to put on the contract: accepted findings per maintainer-hour of triage Findings per repository is a vanity number, and it is the one every vendor reports.
描述一个自动发现器要三个数字。其中两个的账,是由没买它的人付的。

严重度是第三个数字,也是安静的那一个。九月那六项发现全部评为 Low。这不是批评——curl 里一个真实的 Low 就是一个真实的 bug——但它确实意味着这一批的价值要用「加固」来计量,而不是用「避免了事故」来计量,而加固要和其他一切争抢同一批维护者工时。一个每产出一项被接受的结果就附带二十个 Low 的自动发现器,并不显然是一份礼物。

如果你要买或者要造一个,该换个什么做法

采购时的直觉是问这个安全产品用的是哪个模型。就这批证据而言,那是你能问出的信息量最小的问题。

  • 去问脚手架,问细一点。跑几轮,轮与轮之间有什么变化。有没有上下文生成阶段、它吃的是什么。分诊怎么做、跑几轮。在人看到之前,跨轮的发现有没有去重。在唯一一次有对照的比较里,被挪动了数字的正是这些部分。
  • 把受理当作指标,而不是把发现数当指标。「每个仓库找到几个」是个虚荣数字。「每个维护者分诊工时换来几项被接受的发现」才是决定这个工具是否净为正的数字,而且在你自己的待办上,一周就能测出来。
  • 先给分诊列预算,再给令牌列预算。一个便宜但受理率糟糕的检测器,会把它的成本转嫁给你本想帮的那些人;而与推理不同,这项成本不会每个季度往下掉。
  • 在你自己的语言、你自己的代码上做评测。那条关于 C 基础设施代码的结论说明,难度是被「你写的是什么」结构化的,而不是被排行榜的平均数结构化的。把你自己历史上的十个 CVE 钉在各自有漏洞的提交上,然后让工具盲跑——这是两天的工作量,胜过任何厂商基准。
  • 把「找出来」和「修好」分开。这是两种能力,失败代价也不同;后一半见漏洞修复智能体。

越过安全领域仍然成立的那部分

这里的具体主张是关于漏洞发现的。一般性的那个,则关于任何「核验一个答案比产出它更便宜」的任务。检测是最纯粹的例子:一个候选发现只要一轮,确认它只要一次分诊——于是重复是划算的,而用便宜模型重复,比用昂贵模型试一次更划算。

这是生成-核验落差站在你这一边的情形,而它把通常的建议翻了过来。核验便宜的地方,买轮次。核验昂贵的地方——多数智能体工作都是如此,因为检查输出意味着把活儿再干一遍——买能力。多数团队对这两种情形用同一条规则,而 curl 这个结果提醒我们:把分类朝「昂贵模型」那一侧弄错,代价是多少。

常见问题

这是不是说前沿模型不擅长找漏洞?

不是。它说的是:在唯一一项对脚手架做了控制的研究里,找回三分之二的真实 CVE 并不需要前沿模型;而在一个特定的硬目标上,一家专门厂商的脚手架赢过了通用编码智能体。这两句都是关于配置的主张,不是关于能力天花板的主张。

AISLE 对比 Codex 与 Mythos 的那个说法,有独立验证吗?

据我们所知没有。curl 公告里的 CVE 署名是公开且可核的;而「另外两个系统在同一窗口里找到了什么」这一主张出自厂商自己,依赖的是他们对「那两者是怎么跑的」的说法。

为什么六项发现全是 Low?

curl 评定严重度一向保守,而这些是 TLS 后端与 cookie 处理中的边界条件,不是远程代码执行。这对「这类工具目前在一个成熟目标上能翻出什么」是个公允的信号:大量真实但很窄的 bug,而不是少数几个致命的。

那我们这周该不该把一个编码智能体对准自家仓库?

可以,但先定好谁来读它的输出。跑起来,自己把它产出的每一条都分诊一遍,在任何别人看到报告之前先把受理率测出来。一个把未经核验的智能体发现丢给另一个团队的团队,正在重造那个关停了 curl 赏金的问题。

受理率高,会不会只是说明工具太保守?

有时候是,所以要在同一份待办上同时跟踪两个数字。单看受理率,可以靠「只报明显的」来刷;把它与「在你自己历史 CVE(钉在有漏洞提交上)的重新发现率」配对,刷其中任何一个都会付出另一个的代价。

延伸阅读

本站相关:

来源: