论文:Baselines Before Architecture: Evaluating Coding Agents for Autonomous Penetration Testing
链接:arXiv:2607.13085
Artifact:krodalabs/coding-agent-research-artifact
一个 Pentest Agent 论文报了 SOTA。它换了架构,也换了模型。如何知道 Bonus 是架构的功劳,还是模型的?
我个人的观点也许会比较激进:模型能力是真正主要的,harness能做的优化是极其有限且低复杂度的。
更第一性原理的path,是用模型吃掉好的 harness/skill,把暂时过渡的“桥”修成长期价值的“路”。
1. Attribution Gap
过去一年出现的一批自主渗透 Agent 论文,几乎都在做同一件事:把某个当下最强的 LLM 塞进一套多组件安全 harness 里,然后在 XBOW / CTF-style benchmark 上报一个漂亮数字,宣称自己的 architecture 带来了显著提升。MAPTA、PentestGPT V2、Red-MIRROR、AWE 都属于这个模式。
问题是——它们几乎从来不给一个”同模型、无架构”的对照组。
当 architecture 和 backbone model 同时变动时,观察到的性能提升在方法上是不可归因的。你没法把”模型自身变强”和”harness 设计巧妙”的贡献切开。
之前我们在 PentestGPT v2 那篇里讲过 TDA + EGATS,把 pentest 从线性 ReAct 抬升为攻击树搜索,这个抽象本身没问题。但这篇论文要问的是另一个层次的问题——如果什么都不加呢? 一个默认的通用 coding CLI,同样是 GPT-5,能走多远?
如果答案是”差不多远”,那 TDA + EGATS 的贡献就得重新称一遍重量。
2. 四个 RQ、四个“反直觉”答案
论文的四个研究问题(RQ,Research Question——把一个总目标拆成的、可以独立回答的具体问题)是一条链:
- RQ1:GPT-5 同模型下,Codex、OpenCode、Pi 谁最强 → 挑出 baseline
- RQ2:给 Codex 加安全领域 prompt 有没有用 → 负控制
- RQ3:Codex 默认 scaffold vs MAPTA vs PentestGPT V2,在最接近的模型上对比 → 主对比
- RQ4:同 Codex scaffold,把模型从 GPT-5 换到 GPT-5.2 / GPT-5.5 → 隔离模型缩放贡献
RQ1 挑出 baseline,RQ2 排除 prompt 变量,RQ3 拉真正的架构对比,RQ4 隔离模型进步的贡献——每一条都在削掉一个可能的混淆变量。四条 RQ 各自的答案,都是“反直觉”的。
RQ1|裸 Codex 已经 77.9%
同一个 GPT-5、同样的预算和 target interface,跑 Codex、OpenCode、Pi 三个通用 coding CLI 各两次。Codex 单次 pass@1 = 67.3%,两次 union coverage = 81/104(77.9%),另外两个明显落后。
这个数字意味着——任何 pentest agent 架构,在 GPT-5 时代的最低门槛就是 77.9%。低于这个数字,你的架构便不是”有点收益但设计精巧”的粉饰,而是一个减分项。
一个专门为渗透测试设计的多组件 harness,要证明自己配得上”architecture”这个词,第一件事得先站在这条线上。
RQ2|加安全专家 prompt 反而更差
同一个 Codex + GPT-5,只换 prompt:默认的通用 coding prompt、detailed 安全任务 prompt、whole-system 安全 prompt。结果是——两种自定义安全 prompt 都比默认更差还更贵。
这条负结果的杀伤范围比它看起来大。过去两年一大批”pentest agent”论文的贡献其实只是”我写了一份很详细的安全领域 system prompt”,然后套一个 ReAct 循环。论文用这一条直接把这类工作从架构类论文里除名——如果 prompt engineering 就够,那你比不上一个连”safety”两个字都没有的默认 Codex。
而”比不上默认”其实不奇怪——Codex 默认 prompt 是 OpenAI 用大量真实用户反馈迭代出来的产物,且是跟 Codex scaffold 与 GPT 模型协同调优的。研究者拍脑袋写的一份”安全专家 prompt”,本质上是拿一个还没经过严格反馈闭环的产物去挑战一个已经打磨过成千上万轮的产物;注入到 Codex 里可能反而破坏了默认 prompt 与 scaffold / 模型之间既有的默契。也许”加 domain prompt 更差”在某种意义上不是巧合,是必然会发生的适配退化。
RQ3|架构只赢了 5-10 个点,重跑几次还能被反超
Codex 默认 scaffold 对上 MAPTA 和 PentestGPT V2,用最接近的模型匹配。两组残差:

- MAPTA(GPT-5):76.9% vs Codex 平均 67.3%,残差 +9.6 pp。有货,但只有 10 点
- PentestGPT V2(GPT-5.2-thinking):85.0% vs Codex 平均 79.8%,残差 +5.2 pp
- 两组的 Plain P@2 都反超了公开分(77.9% vs 76.9%、88.5% vs 85.0%)
也就是说——架构相对 baseline 只赢在”单次尝试的效率”上,而单次尝试的差距,可以被”多跑一次”的裸 baseline 抹平。MAPTA 唯一真正的护城河其实在 cost(0.206 美元/case vs Codex 的 0.266 美元),不在 pass rate。
或许会有质疑:”P@2 允许多跑一次,是不是在钻空子?” 论文里的另一个数据回应了这条——同一套 Codex + GPT-5 + 默认 prompt 跑两次,第一次 solve 70 道、第二次也 solve 70 道,但两次都 solve 的只有 59 道——22 道题在两次之间来回翻,21% 的 flip rate。
这意味着单次 pass@1 排行榜本身就是不可信的:你报的 pass@1 = 75%?其中可能有 15% 是”这次运气好蒙对了”;论文之间比 pass@1 差 2-3 个点,很可能只是抖动,不是能力差异。由此推出的新评测范式:pass@1 只是能力下限,reliable solves 才是稳定性指标,pass@2 union 才是能力上限。
P@2 反超公开分不是”钻空子”,而是”用一个更诚实的指标去看,架构的优势本来就没那么稳”。
RQ4|GPT-5.5 光换模型就打到 95.2%,反超 PentestGPT V2
固定 Codex 默认 scaffold,只换模型:

从 GPT-5 → GPT-5.2 → GPT-5.5,pass@1 从 67.3% → 79.8% → 92.3%,P@2 union 从 77.9% → 88.5% → 95.2%。
光换模型,就干翻了 PentestGPT V2 在 Opus 4.5 上报的 91% headline。 这个”覆盖”过程没有引入任何安全领域的知识、没有任何 pentest-specific 的设计,就是套一层通用 coding CLI。
结合 RQ3 的 5-10 点残差看这条:架构派论文的整个进步幅度,可能一次模型升级就能吞掉。你去年发的架构论文,今年只要有人拿更新的模型套一层默认 CLI,你的 SOTA 就没了。
这也预告了一件事——pentest agent benchmark 的精度赛道正在快速关闭。GPT-5.5 已经把 XBOW 打到 95.2%,只剩 5 道题(99/104),未来一两代模型就会让 XBOW 变得和早年的 SQuAD 一样,所有系统都在 96-99% 之间,看不出谁强谁弱。到那时候 architecture 论文要么去找更难的 benchmark,要么把评测轴从 accuracy 换到 cost / stability / generalization。
3. where & why harness works
harness 仍然有价值,只是并不需要多么精妙的设计,It’s ez to reach.
论文给出了一份 residual 判读标尺:

- MAPTA 有 +9.6 点残差:76.9% vs Codex two-pass pass@1 平均 67.3%,差距落在 5-15 pp 档,”architecture 可能有用,但要看 category 和 trace”
- MAPTA 平均单挑战 cost 比 plain baseline 低:这个可能才是 architecture 真正的长期价值
architecture 真正可能加分的四条通道——这四条恰好是 plain coding CLI 在结构上就没有的东西:
State tracking——跨轮 credential / cookie / privilege 追踪。一个多阶段 exploit 链常常是:SQLi → dump hash → crack → login /admin → session cookie → 内网 endpoint → JWT → privileged API。这些”中间产物”全靠塞在 context window 里,轮数一多模型就会记混、忘记当前身份、拿到新凭据后不会回退去激活旧路径。显式的 state store 是传统 pentest 工具(Burp、Metasploit)里的基础设施,plain CLI 缺这一块。
Search control——防止在弱路径上死磕。模型有强烈的 sunk cost bias,已经在 SQLi 上试了 20 轮 payload,下一轮更倾向于”再改个 payload 试试”而不是”停下来换 IDOR”。attack tree + 显式路径打分 + 每条路径 budget cap 才能强制切换。这也是 PentestGPT V2 的 TDA 想解决的问题。
Verification loop——针对的是假阳性:模型主观确信”这里有 SSRF/IDOR/RCE”、每一步也都规规矩矩执行了,但客观上那个”exploit”根本站不住脚——可能只是把公开 endpoint 误认成越权、把某种响应差异过度解读成注入点、或者推理链自洽但结论跟事实对不上。独立 verifier 就是外部仲裁者,用客观标准(比如 XBOW 的 flag hash 匹配),把模型的主观确信按到客观事实上校准。
Browser-heavy tasks——DOM / JS / 视觉确认。现代 SPA、XSS 触发验证、点击后才发的 API 请求、需要看 DOM 状态判断”登录成功了没”、反爬 JS challenge——这些 curl + python requests 都是瞎打。Codex/OpenCode/Pi 默认的 shell + file editing 交互模型没有真实浏览器运行时,一个内嵌 Playwright + VLM 判定 DOM 状态是 architecture 能做而 plain CLI 做不到的事。
这四条的共同点是——它们不是 prompt 能补的,也是模型升级所较难获得的。
4. Harness 是拿灵活性换全自动的交易
我在 聊聊近况 里说过:Harness 的价值在于把重复任务交付给 Agent 全自动跑完,但纯以单任务效果为导向,一定跑不赢专家半自动用 Coding Agent 挖掘。这篇论文用 XBOW 的数据给了这个判断一个实证脚注。
Harness 本质上是把一套流程固化下来。它的隐含假设是:agent 面对的 meta 决策——什么时候切换假设、什么时候相信自己成功了、什么时候放弃当前路径——可以被枚举成规则。
这条假设在渗透场景里不完全成立。
pentest 里的知识层其实早就被 LLM 内化了——rememberMe 联想 Shiro 反序列化、错误栈见 PHP 联想 type juggling、看到 .gitlab-ci 想 Runner Token 泄露,这些 HackTricks 密度极高的联想任何一个当代模型纯 QA 都答得出。真正难被固化的是在长执行里做出正确的 meta 决策——同一个 SQLi payload 试了 20 轮该不该换 IDOR、拿到 low-priv shell 后该继续横向还是回去补侦察、返回的 HTML 到底算不算注入成功。这些决策没有稳定的先验规则可写,因为它们依赖当下这个 target 的具体上下文。
专家的 in-the-loop 价值不在知识本身,在做这些 meta 决策时的判断力——而这类判断力恰恰是最难写进 attack tree 的 score function 的。
Harness 的真实定位是——它用灵活性交换了全自动化:
- 换来的:7×24 无人值守、批量并发、成本可预估、结果可复现
- 让出的:专家 in-the-loop 时的临场 meta 决策
这也解释了为什么这篇论文里 MAPTA 的最强卖点不是 pass rate 而是 cost——harness 的正当理由本来就在”便宜且能规模化”,而不是”更聪明”。裸 Codex + 专家半自动督导,在单任务能力天花板上一定赢过任何 harness;harness 只能赢在”专家不在场时的底线保障”。
论文所提到 architecture 真正可能加分的四条通道——state tracking、search control、verification、browser——全是可以被写死的流程。反过来说,architecture 没有加分的地方,恰是最需要专家临场 Sense 的地方。Harness 能吃下的能力上限,就是”能被枚举成规则的那部分能力”。