Off-by-1 Labs用ChatGPT-5.5和Opus 4.8对6个真实CVE生成6480个补丁,其中53.9%的补丁未能修复漏洞或引入了新漏洞,"需人工审查"机制往往未被执行。
8 月 6 日,1Password 新成立的安全研究团队 Off-by-1 Labs 发布了其首项研究的结果:前沿模型为近期披露的复杂漏洞生成补丁时会发生什么。该团队使用 OpenAI 的 ChatGPT-5.5 和 Anthropic 的 Opus 4.8 生成了 6,480 个补丁,涵盖 6 个 CVE,随后剔除了 400 个模型被发现在检索已有修复方案的补丁,并对剩余的 6,080 个进行了分析。核心结论:53.9% 的补丁要么未能修复漏洞,要么引入了新漏洞,或者两者兼有。
FLAWED(嵌入缺陷的形似修复产物)是 1Password 对这类 AI 生成补丁的术语——看起来像是修复,但无法通过验证:它要么漏洞依然存在,要么引入了新漏洞,或者两者同时发生。在该研究中,有 53.9% 的补丁属于此类。
六个目标漏洞的选择依据是"近期披露",因此这些修复不太可能出现在任一模型的训练数据中:一个是 Linux 权限提升(CVE-2026-31431,"Copy Fail"),一个是 ActiveMQ RCE(CVE-2026-34197),一个是 Chrome use-after-free(CVE-2026-8512),一个是 Exim 未授权 RCE(CVE-2026-45185),一个是 SpringAI SpEL RCE(CVE-2026-22738),还有一个是 Gemini CLI RCE(GHSA-wpqr-6v78-jr5g)。最终仅有 26.0% 的补丁在不改变应用行为的前提下完全解决了漏洞。另外 20.1% 修复了缺陷但改变了应用的运行方式——比如将允许列表逻辑换成拒绝列表逻辑,或者在过程中重新实现了一个文件本地的解析器。
为什么 AI 生成的补丁失败率如此之高?
研究的设计方式解释了一部分原因。1Password 刻意选取了披露时间太近、不太可能出现在训练数据中的漏洞,然后假设模型在处理其见过的开源代码时成功率会超过 67%。实际结果远低于这一预期,且分布极不均衡——这表明模型是在对"修复形状"的输出进行模式匹配,而不是在通过推理得出经验证的修复。
脆弱性发现更尖锐地说明了这一点。超过 33% 的"成功"修复了漏洞的补丁从安全角度来看属于脆弱补丁:它们只防护了概念验证中的特定恶意输入,而没有解决底层的漏洞代码。在 SpringAI CVE 上,两个模型反复生成能逃逸用户输入中特定字符的补丁——阻止了所演示的漏洞利用字符串,却留下了根本原因。这样的补丁能骗过一眼,却骗不过攻击者。
指导质量加剧了这个问题。据研究报告(经 The Register 报道)称,给予正确初始指导的模型有 65.0% 的时间能修复缺陷,给予无指导的模型为 50.4%,而给予错误指导的模型则骤降至 15.2%。人类开发者还有相当大的机会注意到自己收到的建议是错的;模型基本上不会。
Anthropic(两家研究模型之一)向 1Password 提供了反馈,指出了结构性差距:补丁生成已经超越了补丁验证,而验证需要变得"以执行而非以检查为基础",在当前模型能力下领域专家仍需作为最终审核者。与此同时,代码审查习惯正在另一个方向上被侵蚀:Cursor 提供的开发者习惯数据(经 Dark Reading 报道)显示,36% 的变更被自动接受而未经人工审查——这是变更量的占比而非开发者人数,但方向本身就是问题所在。生成在扩展,验证却没有。
在信任 AI 生成的补丁之前,团队应该检查什么?
首先,绘制模型编写代码进入代码库的位置图。自动修复机器人、发起 Pull Request 的编码 Agent、启用了自动接受的 IDE Agent——每一条都是 FLAWED 补丁可能在没有合格人员阅读的情况下落地的路径。
其次,使验证以执行为基础。"成功"补丁中那脆弱的三分之一正是代码检查会漏掉的那一类。在补丁前复现漏洞利用,在补丁后重新运行,并运行行为回归测试套件——20.1% 的有效补丁改变了应用行为,而仅测漏洞的测试永远捕捉不到这些变化。
第三,在自己的代码上做基准测试。1Password 发布了其工具、数据集和补丁语料库,以便团队能够对自己代码仓库中先前已修复的漏洞运行相同的评估,在将模型信任于任何生产环境之前,找出模型在哪些地方强大、在哪些地方危险。
第四,将"需要人工审查"视为一种控制手段,而非惯例。如果一个由 Agent 编写的变更可以在没有记录在案的名义上的人员批准的情况下到达默认分支,那这个要求就只是一个愿望。这是一个质量门禁问题,值得与你的其他门禁一样严格的执行。
Waxell 如何处理这个问题
该研究的建议是要求人工审查。但这类要求反复失效的模式在于:它们存在于 Wiki 中,而消除漏洞积压的压力存在于 Sprint 中——这与 1Password 此前关于 Agent 访问的调查所记录的动态相同:采用走在了治理前面。一个未强制执行的审查规则是一个自动接受的合并接一个自动接受的合并地侵蚀着自己。
Waxell 将强制执行放在 Agent 驱动的变更实际发生的地方:工具调用层。当编码 Agent 通过 MCP 工具推送提交或合并 Pull Request 时,Waxell MCP Gateway 会先根据你的租户策略规则对该调用进行评估,再交给上游处理。需要批准的调用会被暂停:Gateway 保持连接开放,这样 Agent 就不会超时;审查员批准后调用恢复向上游执行,或者拒绝后 Agent 收到一个可恢复的结构化错误。Agent 的合并变成以记录在案的人类决策为前提的——通过策略范围管理审查疲劳,而不是审查所有内容。每个受治理的调用都解析到真实用户身份,审计日志保留调用、决策和触发的规则——持久且可导出,因此"谁批准了这个 Agent 的合并"是有答案的。策略规则变更在 30 秒内传播。
该事件要求的一个范围说明:Gateway 治理的是穿过它的调用。持有直接 GitHub 凭证的 Agent,或者将模型的 diff 粘贴到自己分支的开发者,都不在这条路径上——那些路径通过仓库侧的分支保护来关闭,而非通过 Gateway。
对于你在 Python 中构建的 Agent,Waxell Observe 在运行内部应用相同的逻辑:在其 50 多个策略类别中,质量策略对输出打分,标记低置信度响应并阻止不合格结果,而控制策略定义批准门禁和升级路径——因此 Agent 的输出可以在下一步执行之前升级给人类审查,而不是在发布之后才被检查。
Waxell 不判断补丁是否正确。研究明确指出这需要以执行为基础的测试和领域专家。策略强制执行所增加的是保证专家审查发生在变更落地之前——并且有记录证明它发生了。
1Password 的 FLAWED 研究发现了什么?
Off-by-1 Labs 使用 ChatGPT-5.5 和 Opus 4.8 生成了涵盖 6 个近期披露 CVE 的 6,480 个补丁,并在剔除标记的尝试后分析了 6,080 个。26.0% 在不改变应用行为的前提下完全修复了漏洞,20.1% 修复了但改变了行为,53.9% 未能修复、引入了新漏洞,或两者兼有。
FLAWED 代表什么?
Fix-Like Artifacts With Embedded Defects(嵌入缺陷的形似修复产物):形状像修复但漏洞依然存在或引入了新漏洞的补丁。该术语来自 1Password,是伴随该研究发布的论文中提出的。
AI 生成的补丁比人工编写的便宜吗?
就单次尝试而言,是的:该研究测量到 ChatGPT-5.5 的每次补丁-验证循环平均成本为 2.11 美元,Opus 4.8 为 2.81 美元。但干净成功率约为四分之一,论文结论是,完全由 LLM 生成且无人审查的补丁的期望值是"净负的,而且差距相当大"。
团队如何强制执行 AI 生成代码变更的人工审查?
将要求从惯例转变为控制:要求在 Agent 编写的变更可以合并之前有记录在案的批准,将 Agent 的写路径工具调用置于批准策略之后,并保留属性审计跟踪,记录哪些变更是由 Agent 做出的以及谁批准了它们。分支保护覆盖直接人工路径;受治理的 Gateway 覆盖 Agent 进行的工具调用。
Waxell 是否验证 AI 生成的补丁是否正确?
不。补丁正确性需要以执行为基础的测试和领域专家,研究表明这些无法跳过。Waxell 强制的是审查必须发生:批准策略将 Agent 的合并类工具调用暂停直到人类做出决定,质量策略在运行中途阻止不合格输出,审计日志记录决策。
1Password(Keith Hoodlet),"Off-by-1 Labs: Why AI-generated vulnerability patches still require expert human review",2026 年 8 月 6 日
The Register(Thomas Claburn),"AI struggles to patch vulns without adult supervision",2026 年 8 月 6 日
Dark Reading(Robert Lemos),"AI-Generated Patches Fail Half the Time",2026 年 8 月 7 日
最初发布于 Waxell 博客。
53.9% 这个数字是在 Agent 行动的领域使审查成为必选项的有力论据。从免费开始使用 Waxell MCP Gateway——一个受治理的端点,在你的 Agent 已经进行的工具调用上配置批准策略。