补丁通常以编译后的更新形式到达用户手里:系统软件包、固件镜像、闭源或第三方软件的发布版本。但补丁发布与部署之间往往隔着很长一段时间,关键系统在修复发布后数月甚至数年仍未升级。这段窗口里,对比打过补丁与未打补丁的两个二进制,足以把攻击者引向一个可用的漏洞——这就是1-day 场景。

Berkeley RDI 近日发布了一篇草稿论文的博客,介绍新基准 CyberBinGym,作者来自新加坡国立大学、UC Riverside、UC Berkeley 与 UC Santa Barbara。它要回答的问题是:只给一个漏洞版二进制和它的补丁版,AI 智能体能不能自己恢复漏洞并真正利用它。结论是能力已经出现,但「找到」与「打穿」之间仍有巨大鸿沟。

为什么只测二进制

此前的基准各测一段:CyberGym 在有源码的条件下测漏洞复现,CyberGym-E2E 延伸到发现与修复,ExploitGym 则提供已知漏洞与触发输入,问智能体能否做出可用利用。CyberBinGym 把源码与初始输入都拿掉,只留下编译产物。

编译会抹掉变量名、类型、注释与程序结构,strip 再删去符号与调试信息;反编译器能给出近似结果,但可能不完整甚至误导。智能体只能把反编译结果与实际执行反馈互相印证。

CyberBinGym 的评测结构:智能体在隔离工作区做静态分析、动态执行与差分推理,提交 PoC 后由隐藏的插桩构建验证「恢复」,再把利用 PoC 发往独立的目标服务比对 flag 验证「利用」。

基准怎么搭:604 对二进制里选 100 题

研究从 CyberGym 的实例与配套的 OSS-Fuzz、ARVO 产物出发,重建漏洞版与补丁版,去掉提供给智能体的二进制中的 sanitizer 插桩、strip 符号与调试信息,再用内部参考输入验证每一对确实构成漏洞/修复关系。这样得到 604 对经过验证的二进制,再从中选出 100 题作为评测集。

这 100 题来自 53 个开源项目,覆盖图像与文档处理、网络、压缩、密码学等场景,包含六类漏洞:空间内存错误(40 题)、时间内存错误、非法指针访问、非法释放、初始化错误与类型安全错误。题目体量不小:漏洞版二进制中位数 1.60 MiB,最大 38.04 MiB。按可达性、输入构造、崩溃可观察性、二进制复杂度与补丁复杂度打分,题目分为 20 道低、40 道中、40 道高复杂度。

两把尺子:恢复 ≠ 利用

CyberBinGym 把两件事分开计分,这是理解全部结果的前提。

漏洞恢复要求提交的 PoC 能在隐藏的漏洞版插桩构建里触发预期的 sanitizer 失败,同时补丁版构建不失败;一个普通的进程崩溃不算数。智能体拿到的二进制不含插桩,验证构建在它的工作区之外。

利用要求智能体通过与漏洞行为相关的方式,从独立的受害服务里取回一个新的 secret flag。flag 对上只是必要条件,轨迹还要人工审计;通过分析环境直接读取、或调用程序自带的命令执行功能,都不算利用成功。

两者回答的是不同问题:智能体可能利用了旧程序里的另一个漏洞;一次被认可的利用,也不必同时通过目标漏洞的差分崩溃测试。

主结果:恢复 64–88%,利用 0–20%

三个智能体—模型组合跑同一套 100 题,每条轨迹的名义预算为 1,000 次模型调用:

智能体模型漏洞恢复审计通过的利用每任务平均成本每任务平均耗时
CodexGPT-5.688/100(88%)20/100(20%)$28.112.13 小时
Claude CodeClaude Opus 585/100(85%)6/100(6%)$14.901.26 小时
Kimi CodeKimi K364/100(64%)0/100(0%)$38.345.80 小时

成本和耗时都是包含失败尝试的平均值。作者说明,主实验在关闭防护的可信访问环境下进行,测的是能力边界,而不是普通受防护部署的表现。

几点值得注意:Codex 与 Claude 的恢复率接近,但利用率差了 3 倍多;Claude 花的时间与钱最少;Kimi 平均花费最高、恢复率最低,而且没有一次利用成功——查得久不等于走得远。

作者又单独看了至少被一个智能体成功利用的 22 道题。在这些题上,Codex 仍有 2 道停在「只会崩溃」,Claude 有 13 道,Kimi 有 17 道。这些失败很难都归因于环境不可利用。轨迹对比指向一个共同难点:智能体要在第一次非法内存访问之后继续维持对程序状态的建模,跟着错误的后果走完后续执行,并在运行时证据与假设冲突时改主意;失败的轨迹往往止步于崩溃,或者继续去查受害服务根本到不了的路径。

难度不等于可利用性

三种智能体在低、中、高复杂度题目上的漏洞恢复率与利用率:Codex 的恢复率随难度下降,利用率反而在高复杂度题上最高。

Codex 的恢复率从低复杂度题的 95% 降到高复杂度题的 85%,利用率却从 15% 升到 27.5%。这组数据说明:一个漏洞可能很难定位,但找到之后能提供好用的控制;另一个可能很容易触发,却难以变成有效利用。作者也提醒,分组样本不大,复杂度评分测的是分析负担而不是可利用性,不能据此断言「程序越大越好打」。

补丁本身是线索

在 20 道匹配题上,作者比较了只给漏洞版与同时给两个版本的差异:

提供的二进制漏洞恢复审计通过的利用每任务平均成本
仅漏洞版11/20(55%)2/20(10%)$36.59
漏洞版 + 补丁版18/20(90%)5/20(25%)$31.42

补丁版提供了一个可比较的参照,既缩小搜索范围,也能让智能体验证候选行为在两个版本间是否有差异;在这组题里,成功率更高,平均成本反而更低。

作者还审计了 22 道题上的 26 条成功轨迹:17 条里补丁信息直接指向了后来被利用的漏洞,7 条只影响了搜索决策、没有指向最终目标,剩下 2 条无法从记录中确认关联。这个拆分避免了把「补丁即答案」说过头。

推理与多次尝试

在同样 20 道匹配题上,Codex 开启最大推理时恢复 18 道、完成 5 次利用;关闭推理只能恢复 6 道、零利用,平均成本从 2.33升到2.33 升到 31.42。轨迹显示强推理设置更能跨依赖阶段持续分析,不过工具调用失败也贡献了一部分差距。

多次尝试同样有效:另一组 20 题的扩展实验里,尝试 1 次到 3 次,恢复率从 68.3% 升到 83.3% 再到 90%,利用率从 11.7% 升到 20% 再到 25%,平均总成本为 35.53、35.53、71.06、$106.59。收益递减,且恢复与利用之间的差距始终存在。

加固之后:20 个利用只剩 2 个

研究把 Codex 在主实验中成功利用的 20 个目标,用栈保护(stack canary)、位置无关可执行文件、完整 RELRO、不可执行栈与 Fortify 重新编译:

Codex 的消融结果:最大推理与提供补丁版都显著提高恢复率与利用率;无推理时利用为零。

Codex 仍能恢复 15/20(75%)的漏洞,但只完成 2 次利用(10%)。作者强调这是「此前成功案例」的选定子集,不是全部 100 题在加固后的估计;观察到的下降也混入了智能体搜索波动与服务投递失败,不能单独归因于加固。存活的两次利用都作用于栈之外的可写状态,并复用了程序里已有的代码。

对攻防意味着什么

对攻击者,自动化这项工作的意义是降低门槛:不需要资深逆向工程师,也不需要数天到数周的手工分析,就可能把已发布的补丁变成针对未升级系统的武器。对防守方,真正关键的是「修复发布」与「部署完成」之间的间隔——补丁装上才提供保护,但在装上之前,它的发布本身就在泄露漏洞位置。

作者同时指出这项能力的防御用途:在没有源码的情况下评估第三方软件、给紧急更新排优先级、判断既有缓解措施是否足以阻止漏洞造成实际后果。把「恢复」与「利用」分开测量,有助于区分「容易复现的崩溃」与「已证明的安全后果」。

局限也很明确:实验用的是历史漏洞与受控受害服务,测不出真实环境的失陷率,也测不出针对刚发布补丁的利用需要多久。它证明的是能力存在,至于这段窗口会被压缩多少,作者认为仍需进一步评估。

核心总结

  • CyberBinGym 用 100 道来自 53 个真实项目的题目,测「只有漏洞版与补丁版二进制」时的漏洞恢复与利用能力
  • 最强组合 Codex + GPT-5.6 恢复 88%、审计通过的利用 20%;Claude Opus 5 为 85% 与 6%;Kimi K3 为 64% 与 0%
  • 恢复与利用是两件事:能触发崩溃的 PoC 不等于能控制程序并取出 flag,22 道可复现题目上多数轨迹仍停在崩溃
  • 补丁版是关键线索:20 道匹配题上恢复从 55% 升到 90%、利用从 10% 升到 25%,平均成本还降了
  • 标准加固把已成功利用的 20 个目标压到 2 个,但这是选定子集,作者提醒不能直接外推到生产环境

原文:CyberBinGym: Can AI Agents Turn Binary Patches into Real Exploits?(Berkeley RDI,草稿)