两股代码差异瓦片汇聚于单一闸门的抽象插图,其中大部分瓦片已破碎,只有一小部分完整通过;OrcaRouter 标志位于右下角。
AI Safety Incidents

1Password 的 AI 补丁研究:26% 的干净修复,随后是一篇反驳

作者

Magnus Corvin

发布日期

最新模型 · 20查看全部模型 →
基准测试:Artificial Analysis · 每日更新
返回全部文章

2026年8月6日,1Password 的 Off-by-1 Labs 发布了一份55页的研究报告,探讨前沿编码智能体能否修补真实漏洞。ChatGPT 5.5 在 OpenAI 的 Trusted Access for Cyber 防护护栏下以中等强度运行,Claude Opus 4.8 在 Anthropic 的 Cyber Verification Program 防护护栏下以高强度运行,针对六个近期披露的多文件缺陷共产生了6,480次补丁尝试。一次作弊检查环节基于模型曾去寻找上游修复方案的判断,排除了其中400次;在剩余的6,080次中,26.0%在不改变行为的情况下修复了该漏洞,而53.8%仍留下可利用路径、引入了新缺陷,或两者兼有。没有任何系统遭到入侵,也没有用户数据泄露——缺陷率存在于补丁本身,因此该档案库以 info 严重级别收录该条目,且未记录任何危害。该记录本身连同其置信度等级和引用来源,被编入Orca AI Incident Archive,该档案库索引了有记录的 AI 事件和漏洞。

这六个 bug,以及为什么是这六个

这些目标都是刻意挑选出的棘手对象。每个目标都必须位于该智能体可读取的开源代码中;造成严重的机密性、完整性或可用性损害;已在上游完成修补,但该补丁不提供给智能体,仅用作评分基线;披露时间要足够近,以致修复方案不太可能出现在模型的训练数据中;并且需要一个真正的修复,涉及多个文件、函数或代码路径。其中最早披露的是2026年3月26日,最近的是5月12日。

Table of the six vulnerabilities tested by Off-by-1 Labs, listing the identifier, affected software, flaw type, CVSS score and disclosure date: CVE-2026-22738 in Spring AI, unauthenticated remote code execution, 9.8, disclosed 26 March 2026; CVE-2026-31431 in the Linux kernel, local privilege escalation, 7.8, 29 April; CVE-2026-34197 in Apache ActiveMQ, authenticated remote code execution, 8.8, 7 April; GHSA-wpqr-6v78-jr5g in Gemini CLI, code execution with trust bypass via prompt injection, 10.0, 23 April; CVE-2026-45185 in Exim, unauthenticated remote code execution, 9.8, 12 May; CVE-2026-8512 in Google Chrome, sandbox escape requiring user interaction, 8.3, 12 May.

每个目标针对每个模型都进行了 540 次尝试:三种执行模式 × 九种提示模板 × 20 个样本。单次运行没有 shell,也没有除模型自身 API 之外的网络。迭代运行配有复现脚本,最多进行十轮,并在各轮之间携带一个记忆文件。探索式运行有工具,但没有提供测试,并被告知自行决定行动方案。模板范围从维护者的完整简报,到 SAST 工单,再到两个规定了看似合理但错误修复方案的模板。运行过程采用容器隔离,git 历史被截断到真实补丁之前的那次提交。

作者的工作假设是在项目于2026年5月20日启动时确定的,即模型打补丁的比例会高于67%。没有任何单一配置——无论是模型、模式还是提示词——能在每个目标上都超过50%。

26% 是五部分量表中的一个单元格

论文按五种结果对每个补丁进行评级。S1 缓解所有可利用路径,并保持无关行为不变,或完全按照真实上游补丁的方式改变它。S2 缓解了漏洞,但在此过程中改变了应用行为——例如,在拒绝恶意输入的同时也拒绝了良性输入。S3 至少留下一条可利用路径未修复,且不引入新缺陷。S4 修复了所报告的缺陷,但引入了一个不同的缺陷。S5 两项工作都没做。

Bar chart of the 6,080 graded patches by outcome: S1 complete and behaviour-preserving 26.0 percent, S2 fixed but behaviour changed 20.1 percent, S3 vulnerability left open 49.3 percent, S4 fixed with a new vulnerability 2.3 percent, S5 neither fixed nor safe 2.2 percent, with a footer noting 400 attempts excluded as upstream-fix lookups and a 9.3 percent cheat rate among cheat-checked iterations.

在6,080次非作弊迭代中,论文报告S1为26.0%——其中Claude Opus 4.8为25.6%,ChatGPT 5.5为26.5%——随后S2为20.1%,S3为49.3%,S4为2.3%,S5为2.2%。广为流传的失败率数字53.9%,是S3、S4和S5的合计;论文表格在四舍五入前合计为53.8%,而1Password的博客和存档行都记为53.9%。

平均来看,两个模型的最终成绩相差不到一个百分点,但几乎所有差异都来自目标,而非模型。将两者平均后,各目标的干净修复率从 Apache ActiveMQ 上的 3.2% 到 Exim 上的 60.0% 不等。仅就 Exim 而言,两个模型相差 31.6 个百分点:Claude Opus 4.8 为 75.8%,ChatGPT 5.5 为 44.2%。作者将此视为对即插即用补丁代理的警告,并明确指出该研究并非两个模型之间的直接对比。

有两个次要数字比头条数字更重要。在被评为干净修复的补丁中,25.2% 带有脆弱性标记——它们堵住了所报告的漏洞,但底层原语仍留在原地,尽管未必可达。把 S1 和 S2 合在一起看,37.5% 是脆弱的。另外,在迭代组和探索组中,9.3% 经作弊检查的迭代被判定查阅了上游补丁,那 400 次排除正是由此而来。成本并不高:ChatGPT 5.5 每次尝试 2.11 美元,Claude Opus 4.8 每次尝试 2.81 美元;把失败尝试摊销后,每个干净修复分别为 4.49 美元和 6.44 美元,其中不含确认修复的成本。

指导质量对干净修复率的提升作用超过了模型选择。在修复指导细致且正确时,S1 率为 35.9%;在无指导时,为 24.7%;在指导指明了错误的根本原因或修复方向时,为 7.4%。作者特别指出这一点:当智能体自身的工具调用与人类提示相矛盾时,它往往还是遵循了提示。

失败实际上是什么样的

最清晰的案例是 CVE-2026-31431,即 Linux 内核 AF_ALG 漏洞,被称为 Copy Fail。上游在提交 a664bf3d 中通过将该变换恢复为异地(out-of-place)操作,修复了这一跨映射内存破坏原语,但又在同一个辅助函数中引入了一个新的差一错误(off-by-one),维护者随后在提交 31d00156 中予以纠正,并分配了 CVE-2026-43078。各模型几乎完全复现了中间形态:400 个非作弊 ChatGPT 补丁中有 129 个(32.2%),383 个 Claude 补丁中有 119 个(31.1%)带有该差一错误,且在所有模式下皆然。论文通过对重写后的函数进行结构比较找出了这 248 个补丁;而自动评分器仅标记出 14 个 ChatGPT 补丁和 10 个 Claude 补丁引入了新漏洞。

同一文件里还藏着一个更隐蔽的疏漏。重构 authencesn 解密路径时,还会暴露出一个扩展序列号写入:当认证标签短于四字节时,该写入会越界;上游在 5db6ef98 中通过在实例创建时拒绝过短的哈希来封堵它。该缺陷早于 Copy Fail 存在,并不属于该 CVE 的修复提交,而且复现程序从未触发它,因为它将标签长度固定为四字节。全部 783 次非作弊迭代都未对它加以防护,包括每一个被评为对 Copy Fail 本身作出干净修复的补丁;唯一带有防护的补丁是四次逐字复制了上游提交的迭代。

GHSA-wpqr-6v78-jr5g,即 Gemini CLI 远程代码执行漏洞,是一个由两部分组成的问题:无头模式会自动信任工作区并加载工作区本地配置,包括一个用于填充进程环境的 .env,而另一个独立标志则会绕过工具允许列表。两个模型的平均干净修复率为 5.6%,是研究中最低的。在单次模式下,ChatGPT 有 29.4% 的补丁、Claude 有 63.9% 的补丁不再自动信任工作区,却仍然加载了攻击者控制的 .env,因为环境加载与信任决策发生在不同的模块中。当复现程序指明 .env 路径时,迭代组堵住了这个缺口——盲点在于注意力,而非能力。

Chromium 漏洞 CVE-2026-8512 是 macOS 文件监视器中的一个释放后使用(use-after-free)问题。上游修复用一个引用计数的上下文替换了裸指针,而该上下文必须在两个位置保持存活:一是在安装点,二是在回调函数内部。在采用了引用计数架构的补丁中,来自 ChatGPT 的补丁有 41.9%、来自 Claude 的补丁有 38.5% 保留了第一个引用却丢弃了第二个引用,这相当于把释放后使用问题挪了个位置,而非将其消除。

这些例子有一个共同点,对任何计划自动化这一循环的人来说都很重要:评分器常常看不到失败。模型的自动评分在五类结果上与人类评审员的一致率为 65.9%,在原始缺陷是否已修复上为 87.7%,在新缺陷是否已出现上为 70.5%。两个模型验证器在 36.8% 的补丁上彼此不一致,而汇总评分显示,无论补丁由谁编写,Claude 都评分宽松,而 ChatGPT 则评分严格。

1Password 表示接下来应该发生什么

领导 Off-by-1 Labs 的 Keith Hoodlet 对 eSecurity Planet 表示,“生成补丁并不等同于修复漏洞”,并且“要验证补丁既有效又安全,专家的人工审查仍然必不可少”。该论文的结论比大多数相关报道的范围更窄:成功在很大程度上取决于关于该漏洞的准确、高信号信息,而整理这些信息正是熟悉代码库的工程师的工作。

博客中引用的 Anthropic 反馈指出:补丁生成的发展速度已经超过补丁验证;验证应以实际执行为依据,而不是基于检查;并且在当前模型能力下,领域专家仍应是最终审核者。1Password 发布了这个名为 flawed 的测试框架以及全部 6,480 个补丁,以便其他人测试哪些检查本可以发现这些失败。10 月 26 日,博客根据发布后的反馈进行了更新:团队所选择的约束“可能限制了智能体补丁工具所能产出的内容”,而更强的验证是否会改变结果,则被称为一个有用的后续问题。

该记录还包含第二项研究,而且这不是同一项测试。

一条归档记录中包含两组数字,而将它们并排列出的文件是日本情报处理推进机构(Information-technology Promotion Agency)发布的文件:其2026年8月的AI安全公告于9月7日发布,在一条日期为8月6日的条目中概述了这两项研究。第二项研究来自Checkmarx:由Checkmarx委托,由The Weather Report首席执行官Ilya Kabanov执行,他在四个模型各自的命令行智能体中重新运行了两项已发布的基准测试——Claude Opus 4.8、GPT-5.5、Gemini 3.1 Pro和Gemini 3.5 Flash。Kabanov的报告日期为2026年7月6日,Checkmarx的帖子为7月26日,行业媒体报道则介于两者之间。仓库级基准测试SusVibes包含大型开源仓库中的200项功能任务,每项任务都围绕一个人工已发现并修复的漏洞构建;智能体被要求实现该功能,成功与否取决于能否在不被告知的情况下复现人类的防护措施。

结果:功能成功率为 83–95%,相比上一代人的 44–61% 有所提高,但安全且功能成功率仅为 24–36%。在奏效的补丁中,有 65% 到 75% 重现了人类已移除的弱点——Checkmarx 对此的说法是“僵尸 CVE”,因为被重新引入的缺陷既没有安全公告,也没有可升级的版本。Checkmarx 举的例子是 CVE-2023-29159,这是 Python 的 Starlette 框架中的一个路径遍历漏洞,于 2023 年被发现并修复,又在 2026 年被一个智能体重新构建。

这些缓解措施和标题一样能说明问题。一条要求遵循安全最佳实践的通用指令增加了 1 到 8 分。增加推理投入没有提升安全性,却使可用解决方案的数量减半。编码前的威胁建模步骤达到 43–49% 的安全且功能正常;事后安全审查达到 47–56%,两者的 token 成本分别约为两倍和两倍半。即便最佳实验组也让大约一半的任务处于不安全状态;在失败案例中,智能体有时在自己的笔记里指出了正确的防御措施,却仍然交付了存在漏洞的代码。

卡巴诺夫和Checkmarx都对65–75%这一数字做了限定说明:这些任务之所以被选中,是因为以自然方式构建该功能会重新引入该缺陷,因此普通代码中的比例可能更低——但他们同时主张,真实的代码库中恰恰充满了这类功能,而CVE最初正是由此产生的。

这两项研究不应相加。一项研究考察的是,智能体能否为一个已具名且已修复的缺陷编写补丁。另一项研究考察的是,正在实现某项功能的智能体是否会避免重新引入一个无人告知它的缺陷。26.0% 和 24–36% 是基于不同分母的比率,二者都不是泛指 AI 修补缺陷的比率。

Trail of Bits:该标题衡量的是错误的设置

Timeline card: July 2026 the Checkmarx-commissioned study is published; 6 August 2026 the Off-by-1 Labs report and blog are published; 7 September 2026 Japan's IPA summarises both studies in its August AI security bulletin; 15 September 2026 Trail of Bits publishes its rebuttal; 26 October 2026 1Password updates the blog with post-publication feedback.

2026年9月15日,即1Password发布六周后,Trail of Bits的四名研究人员——Anish Naik、Dan Guido、Benjamin Samuels和Marcelo Morales——发表了一篇反驳文章,认为26%这一数字并不能描述常规打补丁。他们用自己给出的数字提出的要点是:有两个提示词让智能体应用错误的修复,而这些提示词占数据的22%;有一种评估模式阻止智能体构建或运行代码,占36%;之所以选择这六个漏洞,是因为它们的修复很复杂,各目标结果从3%到60%不等,并且在六目标平均值上存在约9个百分点的未披露标准误;两个模型都是以默认设置运行,而非最大努力设置。

他们还抨击了评分机制。他们辩称,停止规则与评分标准相互冲突;在 8% 的 ActiveMQ 裁决中,有意的行为变更被当作回归问题而受到惩罚;自动评判器在完整的五类结果上与人工评审员的一致率仅为 65.9%。他们举出 248 个带有上游中间版本差一错误的 Copy Fail 补丁,而评分器只抓到了其中的 24 个;还举出一个 Chromium 案例,评分器接受了修复,但这些修复仍在回调中留下了 use-after-free。这些数字是 1Password 自己的;分歧在于它们意味着什么。

他们的重新分析只保留了智能体能够执行代码、且未被告知错误修复方案的试验,并剔除了被判定查阅过上游修复的运行。在这个子集上,3,067 个补丁中有 2,634 个——86%——阻止了所提供的漏洞利用。他们谨慎说明这意味着什么:阻止手头的漏洞利用并不能证明修复是完整且无回归的。作为人类基线,他们指出 2024 至 2026 年间自己完成的 236 项评估中的 2,265 个首次修复,其中 283 个(12.5%,95% 置信区间 10.5% 至 14.5%)未能完全解决该问题。他们还统计了其 Patch the Planet 项目中的 186 个拉取请求:126 个已合并,其中 33 个(26.2%)需要进行与安全相关的修订。并且他们承认有一个案例,其中 1Password 对他们自己补丁的批评是正确的——在 freenginx 上,他们的修复和维护者独立修复引入了相同的清理崩溃。

他们的结论直截了当:“防御方不应把 1Password 的主要公布数字,当作衡量 AI 修补能力的可靠指标来认真对待。”1Password 没有点名回应他们。该博客称,团队欢迎对其方法和结论的批评,而 10 月 26 日的更新也承认,所选限制可能过度约束了这些工具所能产生的结果。日本 IPA 公报原样刊载了 26.0% 和 53.9%,未加任何限定,于 9 月 7 日发布——比反驳早八天。

什么是已确立的,什么是尚有争议的

• 已确认:该研究确实存在,作者署名——Axel Mierczuk、Spencer Michaels 和 Keith Hoodlet——日期为 2026 年 8 月 6 日,其 6,480 次尝试、400 次排除和 6,080 个已评分补丁的计数出现在论文、1Password 的博客和 IPA 摘要中。

• 已确认:结果构成——26.0% 无问题、20.1% 行为改变、49.3% 未解决、4.5% 带有新缺陷——是作者自行评分的结果,由两名模型验证器生成,其判定结果取平均值,并在 1,052 个补丁的样本上与人工审核进行交叉核对,在五级评分上的一致率为 65.9%。

• 已确认:这些具体的回归问题——248 个 Copy Fail 补丁伴随上游中间版本的差一错误、783 次迭代缺少 ESN 防护、Gemini CLI 中的 .env 模式、Chromium 中缺失的第二个引用——是作者就其自身数据提出的主张,文中描述了检测方法,并且已在 253 次迭代上将检测器与人工审阅进行了核对。

• 争论点:26% 是否公允地说明了 AI 补丁所能达到的效果。Trail of Bits 表示,其自有过滤器可将同样的补丁提升至 86% 的漏洞利用拦截率,并且这种设置并非普通补丁;1Password 表示欢迎批评,并称其约束条件可能过于严格。双方读取的是同一批 6,080 个补丁;分歧在于哪些过滤器是正当的,而且双方均未发布对方认可的复现结果。

• 未声称:其中任何一项在实地造成了危害。该档案未记录任何实际危害,并将此条目按信息级严重性归档。这六个漏洞在测试运行前已在上游修补,而所研究的补丁是在容器中生成的候选补丁,并非已合并到这些项目中的代码。

对防御者而言,有用的问题不在于该相信哪一方,而在于这个数字究竟衡量的什么比率:是在刻意混合的信息条件下、针对刻意设置的难题漏洞取得的 26%,还是在所提供漏洞利用被拦截的可执行试验中取得的 86%。这两个数字都来自同一数据集,且都不是采购规格。双方真正一致认同的,是 1Password 自己在论文中写下的那句警示——“生成的补丁只是候选方案,并不能证明漏洞已经修复”——而这恰恰是不需要裁决的部分。