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 V8 | 181 |
| Linux Kernel | 186 |
| 合計 | 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.5 | 210 | 120 |
| Claude Mythos Preview | 226 | 157 |
換句話說,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 真正讓人背脊發涼的地方。
Member discussion