









2024 · PentestGPT 一代(USENIX),人机协同任务树 → 2025 · MAPTA 三角色架构,76.9% → 2026 · PentestGPT V2 全套机制,85.0% → 2026 年中 · 裸 Codex + GPT-5.5,零架构零安全 prompt,95.2%。
三年架构演进线被一次模型升级拦腰截过。krodalabs 的 arXiv 2607.13085 用同模型对照实验证明:专用架构的真实增益只剩个位数百分点,安全 prompt 是负资产,而模型自己长一岁就把所有脚手架甩在了身后。本文拆这篇论文的实验设计和它给整个 AI 安全评测领域上的方法论课。
关键词:AI 渗透测试 | XBOW | Codex | PentestGPT | 基准评测 | 架构残差 | LLM 代理
前两天刷 arXiv,推荐流里又冒出一篇标题带 autonomous penetration testing 的论文。这个方向一年能出十几个新框架,我条件反射地把它归进"又来报分的"那一类,手指已经划到一半。标题前半句让我停了下来:Baselines Before Architecture,基线先于架构。点开才看清,krodalabs 这篇论文的主角压根不是什么新框架:三个跟安全不沾边的裸编码 CLI,其中一个把一票专用渗透框架引以为傲的 benchmark 成绩追平、反超了。
最扎眼的一行数字:GPT-5.5 驱动的裸 Codex,两轮成绩取并集 95.2%,而 PentestGPT V2 全套架构配 Opus 4.5 的头条成绩是 91%。一个为写代码而生的命令行工具,安全知识零注入,打 Web 靶机比专用框架还准。看到这两行并排的时候我停了半秒,然后才往下翻。翻到实验设计部分才意识到,这篇论文掀的不是哪一家框架的台,它质疑的是整个领域算成绩的方式。
这件事顺着两条线讲最清楚。一条是专用架构线:三年里脚手架越叠越厚,每一代都报更高的分。另一条线什么都没做,只是安静等着模型自己升级。两条线在 2026 年年中交叉,交叉点就是开头那个 95.2%。下面先把架构线捋出来,再看那条沉默的线是怎么追上来的。
专用架构这条线有个清楚的起点。PentestGPT 一代发表在 USENIX Security 2024,核心是 PTT 渗透任务树:把一次渗透拆成树状任务节点,模型负责推理和建议,人负责扣扳机,典型的人机协同设计。放在当时它解决的是真问题。那两年通用模型打靶机的原始短板非常具体:上下文一长就忘了前面做过什么,同一个请求重复发,或者在一个死胡同里来回打转。任务树相当于给失忆的代理配了一本工作手册,每一步做完都钉在树上。第一代脚手架的全部诉求就这一件事,把状态管住。
往后机制开始加码:MAPTA 拆三角色配独立容器强制 PoC 验证,V2 叠了 38 类工具接口加蒙特卡洛树搜索加记忆子系统。机制列表一代比一代长,分数一路走高,V2 用 GPT-5.2 跑到 85.0%。
同期还有几路人马:AWE 走记忆增强(Claude Sonnet 4,自选子集),Red-MIRROR 叠检索加反思验证(50 题子集),xOffense 微调开源模型换基准验证。机制清单各有侧重,抽共性全是同一类事:让代理记得住、不跑偏、给结论附证据。每一项都对症也真实有效,问题从来不在机制本身,在报分的方式——跟上一代比成绩时,模型、工具面、预算、题目子集四个变量一起动,AWE 分数低一截,读者说不清是架构弱还是底座拉胯。行业内不是没人看出问题,是没人愿意花算力给别人的架构当陪跑,直到 krodalabs 把基线做成了论文的主角。
于是榜单的读法慢慢变了味。分数在涨,可比性在跌。A 家换新模型跑旧基准,B 家换个更小的子集,C 家预算翻倍再报均值,成绩单越来越像各自的开卷考试。架构增益和模型进步搅在同一个数字里,谁也说不清那十几个百分点里有几个来自新机制、有几个只是换了更强的底座。把这归为哪一篇论文投机都冤枉了它,毛病出在领域共同的习惯上:没有一条"同模型裸代理能打多少分"的参照线,所有"我们的架构涨了 X%"都悬在半空。要把这个结解开,不需要再造一个更厚的架构,需要的是一个诚实的对照组。krodalabs 做的全部事情,就是把这条参照线补上。
上一节末尾说的那条参照线,骨架一句话能讲完:同一模型、同一预算、同一环境,跑三个没做过任何安全改造的默认编码 CLI,Codex、OpenCode、Pi,prompt 也全用默认的。基准选 XBOW,104 道容器化 Web 漏洞题,覆盖 26 个漏洞类别。每题预算封顶 0.75 美元,环境统一 Kali Linux,每套配置完整跑两轮。
这里说的"裸"要在操作层面讲清楚,不然容易低估这个对照的分量。三个被试全是工程圈日常写代码用的命令行代理:Codex 是 OpenAI 的编码 CLI,OpenCode 和 Pi 是开源的编码代理,安装完开箱即用那种。它们没有渗透工具编排,没有 nmap/sqlmap 之类的工具注册表,没有攻击树规划器,没有记忆模块,连"你是渗透测试专家"这句话都没说。给它的全部输入就是题目描述和靶机地址,代理自己决定装什么工具、发什么请求、怎么读响应。换句话说,这个对照组逼近的是一个思想实验的下界:如果通用编码代理的工作循环已经够用,专用安全架构的增量还剩多少。
预算封顶这步设计得也聪明。不卡预算的话,比较会滑向烧钱竞赛,谁花得多谁有理,成绩就没法看了。0.75 美元这个数卡得不高不低:够一个代理做几十轮工具调用和推理,又不够它把每道题当深洞死磕。所有配置在同一个天花板下跑,成本才和正确率放进了同一张可比的账。
判分方式是评测类论文的命门,值得单独说。代理类安全评测有个老大难:代理嘴上说"漏洞存在",到底算不算解出?有的论文靠人工复核,主观成分大;有的直接采信代理自述,误报没人单独报。这类灰区在 benchmark 榜上表现为虚高的解出率,读者却无从分辨。XBOW 的设计绕开了整个问题:flag 藏在靶机里,只有真把洞打下来才拿得到,判分退回到"拿没拿到那串字符",机器可验,没有假阳性歧义,也没有扯皮空间。选它当裁判,论文的结论才有分量。
两轮设计同样不是仪式感。104 题的盘子上,单轮成绩天然带着几个百分点的抖动,跑两轮才能看出哪些解出是真本事、哪些是撞大运。这个设计还顺带托住了论文一个不太显眼但很有分量的观察:裸 Codex 说解 70 题,两轮就都解 70 题,这种前后一致性,不少专用框架都未必拿得出来。
刚看到"裸代理打赢专用框架"的走向时,我头一个反应是怀疑作者挑了弱陪衬,评测文最爱干这种事。翻完实验设计才放下:变量卡得很死,模型、预算、环境全部对齐,显著性检验也没省,作者还把对自家不利的局限摆在明面上,比如只测了 GPT 系模型、可能偏向 Codex 这一条。肯把不利条件写出来的团队,不太像玩挑软柿子把戏的。
RQ1 的结果先给了个小意外:三个裸 CLI 之间就分出了明显高下。GPT-5 下,Codex 两轮各解 70 题,pass@1 平均 67.3%;OpenCode 两轮 57 和 54;Pi 两轮 58 和 46。McNemar 检验对 OpenCode 和 Pi 分别给出 0.015 和 0.023 的 p 值,这个量级,抽样抖动解释不了。这个检验的思路用白话讲:它只关心两边表现错开的那些题,A 解出而 B 没解出的,和反过来的,两类错位题的数量差异够大才判显著;两边都成或都败的题目不参与计算,因为它们区分不了两个系统。
# McNemar 检验只看错位格子:
# a = Codex 解出而对手没解出的题数,b = 反过来的题数,两边都解出/都没解出的不参与
from statsmodels.stats.contingency_tables import mcnemar
# 2x2 表按 [[都解出, 仅codex], [仅对手, 都没解出]] 摆
result = mcnemar([[both, a], [b, neither]], 此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。