6 min read

ExploitGym 到底是什麼?869 個真實漏洞,AI 真的開始自動寫 Exploit 了

ExploitGym 到底是什麼?869 個真實漏洞,AI 真的開始自動寫 Exploit 了

最近在聊 AI 模型的資安能力時,我看到一個名字:ExploitGym

第一反應是:這又是哪個新的靶機平台?類似 Hack The Box、VulnHub,還是某種給 AI 玩的 CTF?

查完之後才發現,不太一樣,

ExploitGym 不是叫 AI 找出一個 SQL Injection,也不是給幾道刻意設計的 pwn 題讓模型解,它直接拿真實軟體漏洞,先給模型一個已經能讓程式 Crash 的 PoV,再要求模型把這個 Crash 一路發展成完整 Exploit,最後取得目標環境裡的秘密 Flag。

這個差別很重要。

以前很多 AI 資安 Benchmark 測的是:

找到漏洞
→ 寫出會 Crash 的輸入
→ 任務完成

ExploitGym 測的是:

已知漏洞會 Crash
→ 理解漏洞原理
→ 建立讀寫 Primitive
→ 繞過或處理記憶體配置
→ 完成 Exploit Chain
→ 執行任意程式碼
→ 讀取秘密 Flag

已經不是「會不會找 Bug」而已,是在問:

AI 能不能把一個已知漏洞,真的變成攻擊?

先講結論

ExploitGym 目前有幾個重點:

  • 公開 Task Set 共 869 題
  • 題目來自真實 Userspace、Chrome V8 與 Linux Kernel 漏洞
  • 每題提供原始碼、編譯方式、PoV 與隔離執行環境
  • 目標是完成 Code Execution 並讀取秘密 Flag
  • 人類技術上可以玩,但沒有 HTB 式的操作介面
  • 官方目前沒有公布 Human Baseline 或人類排行榜

專案與論文都已公開:

專案:sunblaze-ucb/exploitgym
官方介紹:ExploitGym
論文:ExploitGym: Can AI Agents Turn Security Vulnerabilities into Real Attacks?

869 題是怎麼組成的?

目前公開版分成三類:

類型題數
Userspace C/C++502
Chrome V8181
Linux Kernel186
合計869

Userspace

這一區主要是 C/C++ 專案,來源包括 OSS-Fuzz、OSV 與 CyberGym,會碰到的東西可能包括:

  • Heap Overflow
  • Use-After-Free
  • Out-of-Bounds Read/Write
  • Integer Overflow
  • Stack Corruption
  • Format String
  • 各種奇怪的 Parser 與 Codec 問題

部分目標甚至來自 FFmpeg、OpenSSL 這類大型真實專案。

Chrome V8

這區直接進入瀏覽器引擎 Exploitation:

  • JIT Compiler Bug
  • Type Confusion
  • Out-of-Bounds Access
  • Fake Object
  • Arbitrary Read/Write
  • Pointer Leak
  • Sandbox Escape

這已經不是普通 CTF pwn 題的難度。

Linux Kernel

Kernel 題會在虛擬機裡執行,目標通常是從低權限一路做到完整 Privilege Escalation。

可能需要處理:

  • Kernel Heap
  • Race Condition
  • UAF
  • modprobe_path
  • Kernel ROP
  • SMEP/SMAP
  • KASLR
  • 不同的 Kernel Hardening

把這三類放在一起,就能理解為什麼「有沒有人類全通」這個問題有點恐怖,這三塊原本就是三個可以各自研究很多年的領域。

為什麼有些地方寫 898 題?

ExploitGym 論文使用的早期資料快照是 898 題,但正式公開時變成了 869 題

原因是研究團隊後來重新檢查題目,移除了 29 個被判定為:

  • 在指定環境下無法可靠利用
  • PoV 或環境存在問題
  • 不適合納入正式公開 Benchmark

所以這兩個數字都不是亂寫:

論文早期快照:898
正式公開 Task Set:869

正式題目清單放在:

data/task_ids/v1.txt

專案另外提供一個只有 20 題的:

data/task_ids/sample.txt

想自己架來研究,不需要一開始就把 869 個 Target Image 全部拉下來。

人類可以玩嗎?

可以,但它不是為一般玩家設計的。

ExploitGym 是開源的,Target Image、Controller、Agent Container 與評分工具都可以自行執行。

人類當然也可以啟動目標後,自己使用:

  • GDB
  • pwndbg
  • Python
  • pwntools
  • nc
  • QEMU
  • 自己寫的 Fuzzer 或 Exploit Script

去手動處理題目。

基本安裝流程大致是:

git clone https://github.com/sunblaze-ucb/exploitgym
cd exploitgym

uv sync --extra proxy
bash scripts/setup/setup_data.sh
bash scripts/setup/validate.sh

接著先拉 Sample 題目:

uv run scripts/setup/pull_images.py data/task_ids/sample.txt
uv run scripts/setup/pre_run.py data/task_ids/sample.txt

但它沒有:

  • 玩家導向的網頁介面
  • 難度標籤與題目分類頁面
  • Hint 系統
  • Writeup 解鎖
  • Human Mode
  • 人類積分榜

所以它比較像:

一座開放給人類進去研究的 AI Exploit 實驗室。

而不是另一個 HTB。

最有趣的不是成功率,而是 AI 會打歪

ExploitGym 有一個我覺得很漂亮的設計:

拿到 Flag 還不一定算真的解掉。

系統除了檢查 Agent 有沒有取得 Flag,還會由 Judge 確認它是否真的利用了題目指定的漏洞,結果發現,AI 很常自己跑去找別的洞。

官方列出的其中一組結果是:

模型成功取得 Flag使用指定漏洞
GPT-5.5210120
Claude Mythos Preview226157

換句話說,GPT-5.5 有 90 題雖然拿到 Flag,卻不是靠原本提供的漏洞。

有些 Agent 會:

  • 發現旁邊另一條驗證比較弱的 Code Path
  • 覺得原漏洞不好利用,直接重新審計原始碼
  • 對目標進行動態 Fuzzing
  • 找到題目作者原本沒指定的攻擊面

站在 Benchmark 的角度,這叫沒有完成指定任務。

但站在真實 Red Team 或漏洞研究的角度,這其實更鬼。

它不是只會照著題目解,而是發現:

你叫我打這個洞,但旁邊那個比較好打,我先從那裡進去。

ExploitGym 適合什麼人?

它不適合拿來當第一套 pwn 靶場,建議熟悉下列概念:

  • Stack/Heap
  • ELF
  • GDB
  • ROP
  • ASLR
  • Canary
  • Use-After-Free
  • Arbitrary Read/Write

如果直接跳進 ExploitGym,大概只會看到一堆大型原始碼和 Crash Log,然後開始懷疑人生。

我覺得比較合理的路線是:

pwn.college
→ 一般 CTF pwn 題
→ 真實 CVE 重現
→ ExploitGym sample.txt
→ 挑單一 Userspace 題研究
→ V8/Kernel

不需要有「我要全通 869 題」這種想法。

光是挑一題,完整比較:

  • 自己手動分析
  • 讓不同 Agent 跑
  • 比較兩邊的 Exploit Chain
  • 打開與關閉 Mitigation
  • 檢查 Agent 是否走預期漏洞

就已經是一個很有意思的研究題目。

最後

ExploitGym 最值得注意的地方,不是某個模型到底拿了幾分。

而是 AI 資安能力的評測,已經從:

你能不能看出這裡有漏洞?

一路走到:

這裡有一個真實漏洞和 Crash,
你能不能自己把它變成完整 Exploit?

現在還不能因為排行榜,就直接宣布 AI 超越所有人類 Exploit Researcher。

但有一件事已經很明顯:

自動化 Exploit Development 不再只是「以後可能會發生」的想像。

它已經可以被大量測試、重現、比較,甚至開始出現「模型沒照題目打,自己找到另一條洞」這種結果。

這才是 ExploitGym 真正讓人背脊發涼的地方。

參考資料