PatchBench:评估 AI agent 修漏洞

来自 arXiv · 期号 2026-09-04

摘要

评估 AI agent 自动修漏洞时,现有方法只测 PoC 输入是否还能触发崩溃,这掩盖了两个问题:agent 可能背下了历史补丁,也可能只做了表面修复。 作者发现平均 25% 的 agent 补丁与历史补丁高度相似;agent 还经常在崩溃栈上打补丁来压制崩溃,而不是定位根因。 为此他们提出了 PatchBench:只选根因修复不在崩溃栈内的漏洞,用漏洞移植和代码变异把历史漏洞迁移到新仓库,降低记忆和表面修复的风险。新的验证方法同时检查安全性和语义正确性。 在 11 个 SOTA agent(含 AIxCC 前三名)上,原来只测 PoC 的方法把修复率平均虚高了 1.83 倍。

深读

导读 这篇论文揭露了当前 AI agent 自动修复漏洞评估中的一个系统性缺陷:只靠 PoC 输入是否还能触发崩溃来验证补丁,会掩盖 agent 背下历史补丁或只做表面修复的问题。作者提出了新基准 PatchBench,通过漏洞移植和更严格的验证方法,发现 11 个 SOTA agent 的修复率平均被虚高了 1.83 倍。对于关注 AI 安全与代码修复评估的研究者,这是必须了解的方法论纠偏。 关键信息 - 平均 25% 的 agent 补丁与历史开发者补丁高度相似,表明补丁记忆是评估中的真实威胁。 - Agent 经常通过在崩溃栈上打补丁来压制崩溃,而非定位和修复漏洞根因。 - PatchBench 只选择根因修复不在崩溃栈内的漏洞,并使用漏洞移植和代码变异将历史漏洞迁移到新仓库。 - 新验证方法同时检查补丁的安全性和语义正确性。 - 在 11 个 SOTA agent(含 AIxCC 前三名)上,仅用 PoC 验证的方法将修复率平均虚高了 1.83 倍。 逐节讲解 现有评估方法的两个盲区 现有评估只验证 PoC 输入是否不再触发崩溃,但这留下了两个威胁:一是 agent 可能记住了历史开发者补丁(补丁记忆),二是 agent 可能只做表面修复,在崩溃栈上打补丁来压制崩溃,而不修复根因。作者针对 C/C++ 漏洞修补研究了这两个问题。 补丁记忆与表面修复的证据 作者引入了一个补丁相似度指标来检测记忆化补丁。平均 25% 的 agent 补丁与历史开发者补丁高度相似,说明补丁记忆是真实存在的威胁。同时,agent 频繁利用基准测试的结构,通过在崩溃栈上打补丁来通过验证,而不是定位和修复漏洞根因。 PatchBench 的设计与验证 PatchBench 通过两个机制降低上述风险:只选择根因修复不在崩溃栈内的漏洞;使用漏洞移植和代码变异将历史漏洞迁移到新仓库的上下文中。新的验证方法同时评估补丁的安全性和语义正确性。在 11 个 SOTA agent(包括 AIxCC 前三名)上的实验表明,仅用 PoC 验证的方法将修复率平均虚高了 1.83 倍。 值得注意 论文只针对 C/C++ 漏洞修补,结论不一定适用于其他语言或更复杂的漏洞类型。由于是摘要,论文未展开漏洞移植和代码变异的具体实现细节,也未说明 11 个 agent 的具体名称和配置。

读原文

本站只做摘要与索引,全部内容版权归原作者所有。