CTF Agent 論文閱讀分析:真正該量的不是 AI 有沒有一把梭拿到 root,而是它沿著攻擊鏈到底推進了多遠

本文由 AI 產生、整理與撰寫。

論文基本資訊

  • 論文標題:Do Agents Dream of Root Shells? Partial-Credit Evaluation of LLM Agents in Capture The Flag Challenges
  • 作者:Ali Al-Kaswan、Maksim Plotnikov、Maxim Hájek、Roland Vízner、Arie van Deursen、Maliheh Izadi
  • 年份:2026
  • 來源:arXiv:2604.19354
  • 論文連結:https://arxiv.org/abs/2604.19354
  • 主題:AI Agents、Offensive Security Evaluation、CTF Benchmark、Autonomous Exploitation、Agent Trajectory Analysis

這篇 Do Agents Dream of Root Shells? 真正值得看,不是因為它又拿一堆 model 去跑 CTF 排名,而是它抓到一個現在非常關鍵、但很多安全討論還沒講清楚的問題:如果今天 AI agent 還做不到完整破關,我們到底該怎麼量它已經走到哪一步?

這件事比看起來重要很多。因為在 offensive security 這種長流程任務裡,風險從來不只有「有沒有拿到 root flag」這一種答案。更常見、也更危險的情況是:它還沒全破,但已經會做 reconnaissance、會找入口、會拿到初始 shell、會做部分 privilege escalation,甚至已經能把幾段本來很耗人的流程接起來。 如果你還只用 solved / unsolved 來看 agent 能力,那其實是在把真正的能力曲線壓扁。

這篇論文想回答什麼?

作者要回答的核心問題很直接:

  • LLM agent 在比較真實、需要多步推進的 CTF 環境裡,到底能自主做到多少?
  • 如果不能完整破關,有沒有辦法用更細粒度的方法量它的中間進展?
  • 這種評估能不能自動化,不要每次都靠人工把整份 log 從頭看到尾?

這個 framing 很實際。因為對防守方、風險治理者、甚至 benchmark 設計者來說,真正需要知道的不是單一 headline,而是:agent 在長鏈攻擊任務裡,現在卡在哪一層?是根本起不來,還是已經能穩定推到某些中間里程碑?

DeepRed:作者做的不只是 benchmark,還是一個可重跑的攻擊評測環境

為了回答這個問題,作者提出了 DeepRed。它不是把題目丟給模型問答而已,而是讓 agent 真正待在一台 Kali attacker VM 裡,有 terminal 工具、可選擇性的 web search,然後透過私有網路去和目標 challenge VM 互動。

這種設計的重點在於,它測的不是純語言能力,而是比較接近實戰裡的幾件事:

  • 能不能在 shell 裡持續推進
  • 能不能根據前一步輸出改策略
  • 能不能把工具使用、觀察結果與後續行動串起來
  • 能不能在限定步數內做出比較有價值的選擇

作者每次 run 都會重置 attacker VM 與 challenge VM,並保留完整 interaction trace。這點很重要,因為它讓 benchmark 不只是一份最後分數,而是能回頭分析 agent 具體怎麼失敗、失敗在什麼地方、卡在哪種任務型態

真正的亮點:partial-credit,不再只看有沒有拿到 flag

這篇 paper 最有價值的地方,就是它明講:在現階段 agent 能力還不夠穩定的情況下,只看最終是否拿下 root flag,訊號太粗。

所以作者把每個 challenge 依照公開 writeup 拆成一串 binary checkpoints。例如:

  • 是否辨識出可利用的 web 漏洞
  • 是否取得某個檔案或 credential
  • 是否成功拿到 shell
  • 是否完成 privilege escalation 所需的中間步驟

這種設計的好處是,你不會只看到「失敗」兩個字,而是能知道它其實是:

  • 完全沒找到入口
  • 找到入口但不會把 exploit 接下去
  • 能拿到初始 foothold,但在提權或橫向理解上斷掉
  • 能走到很後面,只差最後一段整合或適應能力

對安全評估來說,這比單純 success rate 有意義太多。因為很多真實風險不是來自 fully autonomous compromise,而是來自 agent 已經能吃掉一大段原本需要人工時間與技術判斷的前置工作

自動打分不是亂打:先 summary,再 judge

另一個很聰明的地方,是作者沒有天真地直接拿長到爆的 execution log 去判分。DeepRed 先做一個兩階段流程:

  1. Summarisation:先把長 trace 壓成結構化步驟摘要
  2. Judging:再把摘要加上 challenge rubric 丟給 judge model 來判斷各 checkpoint 是否完成

作者特別要求 run 中每五步保留一次 reflection / planning 訊息,讓後續摘要不只看到執行了什麼,還能看到 agent 當時怎麼想。這對 log 分析很有用,因為安全代理常常不是完全沒動作,而是想錯方向、誤判線索、或明明看見訊號卻沒把下一步接對

更關鍵的是,這套自動標註不是瞎猜。論文報告的人類標註一致性很高,Krippendorff’s alpha = 0.819,平均 pairwise Cohen’s kappa = 0.7800;在自動標註組合裡,最佳設定可以做到 κ = 0.7234。這代表它離完全取代人工還有距離,但已經夠實用到可以拿來支撐可重複的大規模 benchmark。

測了哪些模型?結果比 hype 冷很多

作者用 DeepRed 跑了 10 個商用可得模型10 個 VM-based CTF 挑戰,每組配置跑三次。題型涵蓋 web exploitation、SSH key manipulation、service exploitation、steganography、privilege escalation 等幾類,重點不是超大題海,而是挑那種 夠真實、夠多步、但又還有機會觀察到 agent 中間進展 的任務。

結果老實說相當克制,甚至可以說直接幫大家降溫:

  • 最佳模型 GPT-5.1 Codex Max 的平均 checkpoint completion 只有 35%
  • 第二梯隊大概落在 20%–22%
  • 最弱模型只有 5%

換句話說,現階段最強的 agent 也只是平均完成大約三分之一 checkpoint,離「自動打一整場」還差很遠。這篇 paper 在這點上其實很誠實:現在的 agent 還不強,但已經不是零。

最值得注意的不是 35%,而是 token 花更多不代表真的更會打

這篇還有一個很值得安全團隊記住的觀察:花更多 tokens 不保證做得更好。

像 GPT-5.1 Codex Max 雖然不是最省,但它用的 token 量比一些表現更差的模型還少;反過來說,有些模型砸了更多 token、走了差不多步數,完成度卻沒有更好。作者的結論很清楚:成敗更取決於 reasoning quality 與 action selection,而不只是互動量。

這對 defender 也有啟示。因為它代表風險不只是「讓模型跑久一點」,而是一旦有模型特別擅長在有限步數內挑對工具、挑對路徑,能力躍升會比單看 token budget 更值得警戒

哪些題比較容易?哪些地方特別卡?

在 challenge 層級上,Whitedoor、Quick、SysAdmin 是相對最可解的;最難的是 Fuzzz,再來是 Thirteen。這個差異其實很有意思,因為它不是單純反映題目難度高低,而比較像是在告訴你:當任務需要比較不標準的發現流程、比較長的適應鏈條、或更不直覺的 clue 組合時,agent 會明顯掉速。

作者在 discussion 也點得很準:目前 agent 比較能處理的是那種常見結構、較典型 exploitation path;一旦成功仰賴的是多步觀察整合、反覆修正策略、或辨識不那麼 template 化的線索,表現就會顯著變差。

所以如果你把這篇論文讀成「AI 會不會打 CTF」,其實讀淺了。它更像在講:現在的 agent 已經有能力片段,但還非常依賴 task regularity。

這篇論文真正提供的是「能力解析度」

我覺得這篇 paper 最好的地方,不只是 benchmark 本身,而是它把 offensive agent 評估從模糊印象,往比較像樣的能力解析度推了一步。因為以前常見的兩種看法都不夠好:

  • 一種是看到少數 demo 就喊「AI 已經會駭了」
  • 另一種是看到大多數題沒全破就說「根本還不行」

這兩種說法都太粗。DeepRed 的價值在於,它讓你看到中間地帶:不完整成功,也是一種能力訊號,而且這種訊號對風險治理反而更重要。

因為現實世界最先被自動化掉的,本來就常常不是最後一哩,而是:

  • 前期情報整理
  • 環境枚舉
  • 常見 exploit path 嘗試
  • 中間 artefact 與 credential 發現
  • 把多輪試錯維持在同一條作戰脈絡上

只要這些段落逐步被 agent 吃下去,攻擊門檻、攻擊速度與人力需求就會改變。

對防守方有什麼直接啟示?

我會把這篇對 defender 的啟示整理成四點:

  1. 不要再只看最終成功率。
    你需要看 agent 能穩定完成哪些中間里程碑,因為那些里程碑本身就可能改變攻擊 economics。
  2. 要開始分析 agent trajectory,而不是只看輸出內容。
    未來更有價值的偵測點,可能是在工具選擇、步驟切換、錯誤後修正模式,而不是最後一句回答。
  3. benchmark 應該保留 execution trace 與 grading rubric。
    沒有這兩層,你只會得到一份分數,卻不知道能力到底是怎麼長出來的。
  4. 對攻防能力的判斷要避免二元化。
    「還不會完整破關」不等於「沒有風險」;很多時候最先上升的是 partial autonomy。

我的看法

如果你在追 AI agent × offensive security,我會把這篇列進很值得補的清單。它最有價值的地方,不是做出多誇張的 headline,而是把一個本來很容易被 hype 或被低估的問題,拆成比較能管理、比較能追蹤的形式。

這篇 paper 最終告訴我的,不是「AI 已經會拿 root 了」,而是另一件更實際也更麻煩的事:

真正該注意的,不是 agent 有沒有完整破關,而是它已經開始能在長鏈攻擊任務裡穩定拿到一部分進度,而我們終於有方法把這種進度量出來了。

對今天的安全決策來說,這比一句 solved / unsolved 有用得多。

You may also like