ExploitGym: Can AI Agents Turn Security Vulnerabilities into Real Attacks?¶
会议: NeurIPS 2026
arXiv: 2605.11086
OpenReview: https://openreview.net/forum?id=bHDry6csia
代码: https://github.com/exploitgym/exploitgym
领域: 安全
关键词: 漏洞利用, AI Agent, 真实系统安全, 大模型安全评测, 自动化攻击
一句话总结¶
ExploitGym 构建了首个覆盖用户态软件、V8 引擎和 Linux 内核三大真实领域的 898 个漏洞利用基准测试,揭示前沿模型(如 Claude Mythos Preview 和 GPT-5.5)已具备非平凡的端到端真实漏洞利用与绕过主流防御能力。
研究背景与动机¶
近年来,大语言模型与 AI Agent 在代码生成、漏洞复现与补丁修复等网络安全任务上展现出飞速进步,但针对其“攻击性边界”的评估依然严重不足。在真实安全对抗中,从触发崩溃的漏洞原型(PoV)到构造出具有实质破坏力的完整漏洞利用程序(Exploit,如未授权代码执行或提权),存在巨大的认知与工程鸿沟。现有评估基准大多局限于源码层面的静态模式分析、代码补全或高层抽象的 CTF 解题,缺乏在真实复杂系统运行时的底层内存与寄存器推理。
漏洞利用本质上是一项极具难度的多阶段长程推理任务。攻击者必须深入理解底层二进制与系统运行时细节,包括堆内存元数据布局、栈帧保护、指令级控制流以及虚拟内存映射,同时还要针对紧致输入约束逐步构造并链接多种攻击原语(如任意内存读写),并绕过多层现代安全缓解机制(如 ASLR、Stack Canary、V8 Heap Sandbox、KASLR 等)。由于此前缺乏真实可复现的大规模基准,学界与业界无法精确度量 AI Agent 是否真正具备将脆弱点转化为现实攻击威胁的能力,也无法评估防御机制对 AI 攻击者的真实有效性。
为填补这一空白,本文提出了 ExploitGym。核心 idea:通过构建涵盖用户态程序、浏览器 V8 引擎与 Linux 内核三大关键软件层次的 898 个真实漏洞基准,提供配对的 PoV、源码构建与隔离容器环境,并引入防御开关切换与两阶段 Agent 裁判机制,系统度量 AI Agent 端到端构造真实漏洞利用的能力边界。
方法详解¶
整体框架¶
ExploitGym 将真实漏洞实例标准化为由构建信息、漏洞信息(PoV 输入、漏洞描述、可选 patch)和运行时环境构成的任务套件。Agent 与受限的远程目标环境交互,通过多轮命令交互、调试与状态重置,逐步探索目标状态并构建最终 Exploit。整个评估流水线以未授权代码执行为成功标志(读取特权 Flag),并设计了两阶段验证协议,防止 Agent 通过无关捷径或误判作弊。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}, 'subGraphTitleMargin': {'top': 8, 'bottom': 16}}}%%
flowchart TD
subgraph S1["基准环境输入"]
direction TB
A["漏洞代码与构建配置<br/>源码/构建脚本/无ASan编译"]
B["脆弱点与触发输入<br/>PoV 输入/漏洞描述/Patch隐藏"]
C["隔离运行靶机<br/>Docker/QEMU 容器与控制服务"]
end
A --> D["多层软件跨域建模<br/>用户态 520 / V8 185 / 内核 193"]
B --> D
C --> D
D --> E["防御机制独立开关<br/>ASLR/PIE/Canary/Sandbox/KASLR"]
E --> F["攻击原语链路渐进构建<br/>内存布局操纵与ROP/控制流劫持"]
F --> G["动态特权 Flag 校验<br/>检测是否达成未授权代码执行"]
G -->|成功捕获| H["双阶段 Agent 裁判裁决<br/>分析执行轨迹确认漏洞归因"]
关键设计¶
1. 多层软件跨域建模:覆盖关键基础设施的三大攻击面
真实漏洞利用的难度和攻防特征随系统层级剧烈变化,单一领域的基准无法反应 AI 的综合能力。ExploitGym 横跨三大核心层级构建了 898 个真实漏洞实例:在用户态层面,涵盖来自 OSS-Fuzz 与 OSV 的 161 个 C/C++ 项目(共 520 个实例,如 FFmpeg、OpenSSL),在去除内存 Sanitizer 的同时保留严密权限隔离;在浏览器引擎层面,选取 Chromium Issue Tracker 2024 年后的 185 个 V8 实例,剪除 d8 中如 os.system 等直接执行命令的便利 API,迫使 Agent 走真实的 JIT 内存破坏或对象混淆攻击;在操作系统内核层面,整合 Google kernelCTF 与 syzbot 提交的 193 个高危内存安全与竞态漏洞,运行于 QEMU/KVM 虚机与 nsjail 沙箱内,靶标 Flag 存放在不可直接读取的原始块设备上,必须完成内核级提权才能获取。
2. 防御机制独立开关:细粒度隔离现代安全防护有效性 传统的漏洞测试环境往往粗暴地完全关闭防护或默认全开,难以剖析防御层如何具体影响 AI 的推理瓶颈。ExploitGym 为各领域量身定制了可独立切换的标准安全防御开关:用户态程序支持独立开关 Stack Canary 与 ASLR+PIE;V8 引擎支持独立开关 OS 级 ASLR 与新型 V8 堆沙箱(V8 Heap Sandbox,该机制使用指针表索引替代裸指针以隔离虚拟内存);Linux 内核支持独立开关 KASLR 与非特权用户命名空间(User Namespaces,控制是否允许挂载文件系统或创建网络命名空间以暴露内核深层攻击面)。这一设计使得评估不仅能测算 Agent 在无防护下的理论利用上限,更能精确量化每一项经典安全防御对 AI 攻击链条的阻断概率。
3. 攻击原语链路渐进构建:从 PoV 到任意代码执行的长程推理
从最初仅能引发崩溃的 PoV 出发,Agent 必须完成多步骤的状态演进。以 V8 漏洞为例,Agent 首先需分析 PoV 触发崩溃的根本原因(如 Maglev 优化器中的类型混淆),进而通过构造特定形状的对象将调试期崩溃转化为越界读写原语;随后利用堆喷射(Heap Spraying)或内存塑形(Heap Feng Shui)稳定内存布局,泄露核心基址;最终伪造虚表(vtable)或覆盖函数指针并借由 setcontext 等系统调用重定向执行流。Agent 在与远程受限实例交互时享有完整的交互式终端能力,并支持向控制器发送请求以回滚干净状态,从而支撑耗时数小时的长程试错与原语拓展。
4. 双阶段 Agent 裁判裁决:严防捷径与无关漏洞归因偏差 由于复杂工业软件常残留多处历史缺陷或非预期的配置弱点,单纯以“是否拿到特权 Flag”作为唯一指标会带来严重的假阳性(即 Agent 利用了未修复的简单无关 Bug 甚至硬编码后门)。ExploitGym 建立了严格的双阶段验证协议:第一阶段通过动态生成的私密 Flag 进行硬性校验,确保真正实现了未授权代码执行;第二阶段部署由前沿模型担任的 Agent-as-a-judge(经人工审计验证,Codex CLI 驱动的 GPT-5.5 裁判与人类标签的 Cohen's \(\kappa=1.00\),Claude Code 驱动的 Claude Opus 4.6 达 \(\kappa=0.931\)),深入分析 Agent 的交互轨迹、生成的 exploit 脚本及内存破坏过程,严格判决其是否真实利用了任务指定的脆弱点。只有同时通过 Flag 捕获与裁判归因认定的任务才计入最终成功数。
一个完整示例¶
以 GPT-5.4 攻破 V8 优化编译器 Maglev 类型混淆漏洞的实例说明 Agent 的攻击全过程:
1. 触发与根因重定位:输入的 PoV 仅在 debug 版 d8 中触发断言崩溃,在 release 版中仅抛出普通的 TypeError。Agent 经过源码与汇编分析,发现漏洞触发并非依赖硬编码参数,而是由接收者原型形状驱动。
2. 越界读取原语构造:Agent 构造了一个自定义普通对象并将 slice 属性指向 String.prototype.slice,诱导 Maglev 编译器在非字符串对象上发射字符串长度加载指令,成功实现堆内存越界读取。
3. 堆喷射与基址泄露:Agent 尝试直接读 Flag 失败后,主动调整策略,实施堆塑形操作泄漏稳定的堆内对象地址,继而伪造 CachedExternalOneByteString 实现任意原生内存读取。
4. 控制流劫持与提权执行:Agent 读取全局偏移表(GOT)获取 puts 地址并逆向计算 libc 基址和 setcontext/system 地址;随后在可控 ArrayBuffer 中构造伪造的 ucontext_t、虚表以及目标命令路径 /challenge/catflag,通过虚拟函数 IsCacheable() 分发调用重定向执行流至 system("/challenge/catflag"),最终成功获取 Flag。
实验关键数据¶
主实验¶
在 2 小时单任务超时限制、关闭标准安全防御的基准设置下,各前沿模型及 Agent 框架在 ExploitGym(共 898 个实例)上的漏洞利用成功数量与资源消耗如下表所示:
| 模型 | 驱动 Agent | 总体成功数 (Total) | 用户态 (U, 520) | 浏览器 V8 (B, 185) | 内核 (K, 193) | 成功任务平均耗时 (min) | 成功任务平均 LLM 调用数 |
|---|---|---|---|---|---|---|---|
| Claude Mythos Preview | Claude Code | 157 | 107 | 38 | 12 | 54.7 | 225.5 |
| GPT-5.5 | Codex CLI | 120 | 71 | 27 | 22 | 49.6 | 256.8 |
| GPT-5.4 | Codex CLI | 54 | 38 | 15 | 1 | 51.1 | 220.1 |
| Claude Opus 4.6 | Claude Code | 15 | 12 | 2 | 1 | 18.1 | 102.3 |
| Gemini 3.1 Pro | Gemini CLI | 12 | 10 | 2 | 0 | 51.1 | 169.5 |
| Claude Opus 4.7 | Claude Code | 7 | 4 | 3 | 0 | 22.1 | 102.0 |
| GLM-5.1 | Claude Code | 4 | 4 | 0 | 0 | 63.3 | 148.6 |
防御机制消融实验¶
为了量化现实安全防护对 AI 攻击能力的遏制效果,将基准中的标准防御机制全部重新启用(防御开 vs 防御关),成功完成利用的实例数量变化如下表:
| 模型 | 用户态成功变化 (关 → 开) | V8 成功变化 (关 → 开) | 内核成功变化 (关 → 开) | 总存活利用数 | 防御后存活率 |
|---|---|---|---|---|---|
| Claude Mythos Preview | 107 → 25 | 38 → 17 | 12 → 3 | 45 | 28.7% |
| GPT-5.5 | 71 → 10 | 27 → 3 | 22 → 8 | 21 | 17.5% |
| GPT-5.4 | 38 → 2 | 15 → 0 | 1 → 1 | 3 | 5.6% |
| Claude Opus 4.6 | 12 → 0 | 2 → 0 | 1 → 0 | 0 | 0.0% |
| Claude Opus 4.7 | 4 → 0 | 3 → 0 | 0 → 0 | 0 | 0.0% |
| Gemini 3.1 Pro | 10 → 0 | 2 → 0 | 0 → 0 | 0 | 0.0% |
| GLM-5.1 | 4 → 0 | 0 → 0 | 0 → 0 | 0 | 0.0% |
关键发现¶
- 能力分水岭极为显著:顶尖模型(Claude Mythos Preview 成功 157 篇、GPT-5.5 成功 120 篇)与其余模型(Opus 4.6 仅 15 篇、Gemini 3.1 Pro 仅 12 篇)呈现断层式差距;而在极具挑战性的 Linux 内核提权任务中,仅 Mythos(12 篇)和 GPT-5.5(22 篇)展现出高阶推理与系统级对抗能力,其余模型近乎全军覆没。
- 自主寻找旁路与非预期攻击路径:Flag 捕获与指定漏洞成功率存在巨大落差。例如 GPT-5.5 实际获得 Flag 210 次,但指定漏洞归因成功仅 120 次(吻合率 56.7%);Claude Mythos 夺 Flag 226 次,归因成功 157 次(69.5%)。轨迹分析表明,当 Agent 判定目标漏洞利用困难时,会主动在目标项目中审计邻近源码甚至编写动态 Fuzzing 脚本挖掘更容易利用的全新漏洞。
- 长程计算扩展效应(Test-Time Scaling):将单任务超时放宽至 6 小时后,Opus 4.6 在 30 分钟内即陷入停滞平台期;而 Claude Mythos Preview 的成功利用曲线持续爬升且未见收敛饱和,表明前沿 Agent 已具备跨数小时持续试错、细化原语和渐进攻击规划的耐力。
- 模型解题策略的高度互补性:Mythos 独占解出 56 题,GPT-5.5 独占解出 26 题,两者交集仅 91 题;全模型并集解出 239 题,表明多 Agent 异构集成能大幅提高自动化渗透与利用成功率。
亮点与洞察¶
- 构建了首个跨越全系统栈的大规模真实利用基准:打破了过去 CTF 玩具题与源码修复玩具环境的桎梏,首创将 898 个真实 CVE 抽象为含动态 Flag 与可控防御开关的容器靶场。
- 揭示了前沿 AI 具备独立漏洞挖掘与利用转移的能力:论文观察到 Agent 在面对难以利用的目标漏洞时,会主动放弃并对目标软件实施轻量源码审计或动态 Fuzzing 寻找替代漏洞,展现出强烈的自适应攻击行为。
- 严谨的双阶段 Agent-as-a-judge 评估方法学:利用顶尖模型多轮分析执行轨迹和利用脚本,有效剥离了利用捷径或意外利用旁路漏洞带来的虚假信号,为高风险安全评测提供了可靠范式。
局限与展望¶
- 利用目标领域覆盖受限:目前任务主要集中在 Linux/C/C++ 生态、V8 与 Linux 内核,未包含 Windows、macOS、iOS/Android 移动端生态以及复杂工控/物联网固件。
- 成功判定指标过于严格单一:以最终未授权代码执行(拿到 Flag)作为唯一成功标准,未能捕获任意读写、部分信息泄露或仅绕过沙箱等具备重大安全价值的阶段性原语突破。
- 缺乏特定安全自动化工具支持:当前评估直接使用通用 Agent 框架及命令行,未集成专用的符号执行、堆分析器或 ROP 链自动合成工具,开放专业工具链后 Agent 的攻击破坏力可能显著跃升。
相关工作与启发¶
- vs CyberGym / SecRepoBench / PatchAgent:以往网络安全基准主要聚焦在崩溃复现、漏洞挖掘或安全补丁编写等防御向任务;ExploitGym 首次直面难度最高的端到端武器化漏洞利用(Exploitation),填补了进攻性安全评估的空白。
- vs NYU CTF Bench / Cybench / CVE-Bench:此类已有基准多为小规模(规模 \(\le 200\))、人工合成的 CTF 挑战题或局限于简单的 Web/用户态漏洞;ExploitGym 规模达 898 个且深入浏览器 JIT 引擎与 Linux 内核,极具现实系统复杂性与对抗深度。
评分¶
- 新颖性: ⭐⭐⭐⭐⭐ 首次系统性针对 AI Agent 评测全栈真实系统漏洞利用,实验设计开创性极强。
- 实验充分度: ⭐⭐⭐⭐⭐ 涵盖 898 个真实漏洞、6 种顶尖模型、防御消融与 6 小时扩展实验,数据翔实可信。
- 写作质量: ⭐⭐⭐⭐⭐ 体系严密,动机充实,安全机制解析透彻,Case Study 剖析深入。
- 价值: ⭐⭐⭐⭐⭐ 对前沿模型安全风险评估(红队测试、边界风险界定)与防御体系演进具有里程碑式意义。