SEC-bench Pro: Can Language Models Solve Long-Horizon Software Security Tasks?
本文介绍了 SEC-bench Pro,这是一个包含 V8 和 SpiderMonkey 中 183 个真实世界漏洞的严格基准,它揭示了当前基于语言模型的代码代理在处理长视野软件安全任务时存在困难,即使使用前沿模型,其成功率最高也仅为 38.8%。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你正在雇佣一支由超级智能、AI 驱动的侦探团队,去发现一个庞大而复杂的视频游戏引擎中隐藏的陷阱。这些引擎(称为 JavaScript 引擎)运行着让网站和应用程序得以工作的代码。如果侦探发现了一个陷阱,他们必须精确展示如何触发它(即“概念验证”或 PoC),以便游戏开发者能够修复它。
本文介绍了一项名为 SEC-bench Pro 的全新且极为严格的测试,旨在评估这些 AI 侦探在现实世界中发现此类陷阱的真实能力。
旧测试的问题
以往的测试就像给侦探一张已经标出宝藏位置"X"的藏宝图。它们可能会说:“前往第 500 行并按下这个按钮来破坏游戏。”
- 问题所在: 真实的漏洞挖掘并非如此运作。真正的侦探必须审视整个代码,推断陷阱可能位于何处,然后在不知道确切位置的情况下尝试触发它。旧测试并未衡量这种真实技能;它们仅仅衡量了 AI 能否遵循地图。
新测试:SEC-bench Pro
作者利用两个著名的游戏引擎构建了一项更困难的新测试:V8(由 Google Chrome 使用)和 SpiderMonkey(由 Firefox 使用)。
- 设置: 他们选取了 183 个由人类此前发现并确认的真实陷阱。
- 环境: 他们重现了陷阱存在的软件确切“时间机器”版本,以及已修复该陷阱的版本。
- 规则: AI 代理被提供原始代码和模糊的问题描述。它们必须:
- 找出通往陷阱的具体代码路径。
- 编写一个脚本(即 PoC)来触发崩溃。
- 证明该脚本仅破坏旧版本,且在修复后的新版本中已不再崩溃。
“三图”裁判
这是他们新测试中最重要的部分。过去,如果 AI 导致任何崩溃,它就能得分。但 AI 可能会意外破坏游戏中并非其目标的具体陷阱的其他部分。
SEC-bench Pro 使用了一个三图裁判(一个复杂的 AI 裁判):
- 图 1(陷阱): 该脚本是否破坏了旧版本?
- 图 2(修复): 该脚本是否停止破坏新版本(即已应用补丁的版本)?
- 图 3(最新): 该脚本是否破坏了最新版本(其中可能发生了其他修复)?
如果 AI 在旧版本中导致崩溃,但也导致已修复版本崩溃,裁判会说:“你没有找到特定的陷阱;你只是普遍地破坏了游戏。”这防止了 AI 因运气好而造成的无关错误获得分数。
结果:AI 侦探们举步维艰
本文测试了三个顶级 AI“侦探”(由 GPT-5.4、Opus 4.6 和 Kimi-K2.6 等模型驱动)。以下是发生的情况:
- 成绩单: 即使是最聪明的 AI 也只能解决约 32% 到 39% 的陷阱。这意味着它们在超过 60% 的案例中失败了。
- “开源权重”的新手: 一个更便宜、开源的 AI(Kimi-K2.6)仅解决了约 11.7% 的 V8 陷阱。
- 团队协作效应: 有趣的是,AI 侦探发现了不同的陷阱。当你结合两个最佳 AI 的结果时,它们共同解决了约 48% 的 SpiderMonkey 陷阱,但没有任何一个能独自完成。它们就像两个拥有不同专长的侦探;一个擅长发现一种类型的线索,另一个擅长另一种类型。
它们为何失败?
本文发现 AI 挣扎不前的两个主要原因:
- 过度猜测(“撒网式”方法): 一个 AI(Claude)试图生成数千个脚本。其中大多数实际上并未破坏任何东西,或者破坏了错误的东西。这就像向靶子投掷一百万支飞镖,希望其中一支能击中靶心。
- 过度谨慎(“过度思考者”方法): 另一个 AI(Codex)非常小心。它会分析代码,判断陷阱可能存在,但如果无法在提交前 100% 证实,它就会放弃并说“我做不到”。因为它太害怕犯错,从而错过了许多陷阱。
主要结论
本文得出结论,虽然 AI 在编写代码方面正变得更好,但在复杂、现实世界的软件中进行安全漏洞挖掘这一漫长且困难的过程方面,它仍然表现不佳。
目前最好的 AI 能找到少数陷阱,但会错过绝大多数。新的基准测试(SEC-bench Pro)证明,我们需要更好的工具来帮助这些 AI 建立代码与隐藏陷阱之间的联系,而不是仅仅指望它们靠运气引发崩溃。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。