TCH 第二届智能渗透挑战赛:Agent 真正卡在了哪里

TCH 第二届智能渗透挑战赛

2026 年 5 月 9 日,第二届 TCH 智能渗透挑战赛决赛答辩在北京举行。600 多支队伍、1000 多人参赛,第一天就有队伍解出 47 道题。五个月前,第一届还在问”AI 能不能做渗透”;到了这一届,答案已经很直接:能,但不稳、不便宜、不好管。

所以这届真正有意思的,不是某个队伍把模型提示词写得多漂亮,而是大家怎么给 Agent 搭架子:记忆放哪,状态怎么传,工具怎么收口,失败怎么复盘,越权怎么拦,最后怎么证明它真的做完了。

这也是为什么现场的关键词不是”更强模型”,而是记忆、状态、工具、权限、回放和停止条件。代码 Agent 还能躲在 PR、CI、review 这些既有流程里;渗透 Agent 更麻烦,工具天然危险,环境天然不完整,成功路径还经常不是题面给你的那一条。

下面按七个断面记录这届比赛暴露出的分歧。


断面一:信任光谱

信任光谱

这届队伍最大的分歧,不是用不用多 Agent,而是到底信不信 LLM 自己能把渗透任务跑下去。

电信大可实验室:低信任。 500+ 预构建知识库、12 类漏洞专属 Skills、SQLi/XSS/XXE 子智能体各有独立工作空间。它的判断很朴素:模型知道安全名词,不等于会在具体环境里稳定干活;人类专家能写进知识库的东西,就先写进去给它剪枝。

绿盟 AI 小分队:中等信任。 它信模型能做决策,但不信模型能稳定收尾。所以有 Observer 旁路审查,有 Memory/Idea 双层状态板,有 Ralph-Loop 把终止判断从模型手里拿回来。现场那句”智能决策要有工程边界”,比很多抽象口号都准确。

Cairn/Bytex:高信任。 零渗透 MCP、零安全 RAG、零流程定义、零预定义 Agent 角色。它给模型的是一块黑板、三种任务指令(Bootstrap/Reason/Explore)和一组通用工具。它赌的是:渗透能力不一定要从漏洞模块里长出来,也可以从工具、状态和循环里长出来。

ChainReactors/For Future:更高信任。 Pattern 用自然语言写,状态管理交给文件系统,不急着把安全知识做成庞大数据库。它的核心不是”没来得及写知识库”,而是主动给模型留结构化空位,让模型把能力填进去。

我的理解是,这四条路线其实是在押不同的模型边界:大可押专家知识,绿盟押工程约束,Cairn 押通用求解,For Future 押下一代模型继续变强。谁对谁错不会由辩论决定,会由下一批模型和下一轮 Benchmark 决定。


断面二:记忆不是聊天记录

四川大学与清华大学的联合实证研究 Hackers or Hallucinators? 对 13 个开源 AutoPT 框架和 2 个基线做了统一评测。规模不小:100 亿+ token、2500 美元、1500+ 份人工审查日志。结论很刺眼:10 个框架的记忆系统基本没发挥作用。常见问题包括 memory 工具没注册、只保留最近 10 条对话、笔记工具几乎不被调用,甚至 6400 token 就开始压缩。

这也解释了为什么决赛队伍都在卷记忆,而不是只卷 planning。

  • 绿盟:Memory 存事实,Idea 存策略;Raw -> RTK Rewrite -> Compaction 三层压缩;原始 session 文件落地,困惑时允许 grep 回查。
  • 天翼 Sniper:发现关键数据就写本地 Markdown,重启时先读记忆,从失败点继续。
  • Cairn:Fact/Intent/Hint 三元素黑板,用因果链组织状态,而不是按时间堆日志。
  • DARKNAVY:把总结和尝试记录打包交给下一个专家 Agent,不把原始上下文整包塞过去。

这里的重点不是”记得更多”,而是”记得可用”。长任务里,记忆如果不能被检索、不能被验证、不能被回放,它只是另一种噪音。上下文工程解决不了所有长程可靠性问题,状态、观测、失败归因和权限边界必须一起上。

绿盟那个小细节很关键:compact 后提醒 Agent,原始 session 在什么路径,遇到困惑自己 grep。这个设计比”压缩得更聪明”更实用。压缩一定会丢信息,给它回查权,才算承认工程现实。


断面三:黑板架构又回来了

黑板架构不是新东西,1970 年代 CMU 的 Hearsay-II 语音识别系统就在用。Stigmergy 也不是 AI 圈发明的词,最早来自生物学里对间接协作的观察。

Cairn 把这两个老概念拼到了渗透 Agent 里:Worker 之间不直接聊天,只通过黑板上的 Fact/Intent 间接协调。每个 Worker 都像是在读现场痕迹,然后留下新的痕迹。整体搜索策略不是某个 Manager 规划出来的,而是在循环里长出来的。

它最有冲击力的观点是:Agent 角色分工可能只是人类组织结构的投影。 我们习惯把渗透团队拆成信息收集、Web 漏洞、后渗透、报告整理,于是也顺手把 Agent 拆成这些角色。但 LLM 的上下文窗口和工具调用方式不一定需要这种组织结构。拆得太细,反而会带来信息孤岛和翻译损耗。

四川大学那篇 AutoPT SoK 在数据上也给了一个提醒:在它的评测里,单 Agent 和多 Agent 表现持平,部分场景甚至更好。这个结论不能无限外推,但足够让人冷静一下。多 Agent 不是先进性的证明;多出来的每一层协调,都要交税。


断面四:Agent 会绕路,也会犯傻

Monkey Patch

天翼 Sniper 分享的域渗透案例,是整场最像”真 Agent”的瞬间。

目标是拿下域控。正常路径是从第一台机器逐台打到第六台。Sniper 的 Agent 拿下第二台后,跳过中间环节直接盯上域控。但域控的 445 和 135 端口被封,常规 SMB 路径不通。它后面的动作很有意思:

  1. 分析失败原因
  2. 向专家 Agent 求助,得到 139 端口可绕过的提示
  3. 运行时 Monkey Patch impacket,强制 SMB 走 139

最后拿下域控,提前通关。这不是预设脚本跑通,也不是照着题解复现,而是在受阻后改了工具本身。

但同一个 Sniper,在第三赛区被一个密码模式卡了 4 天。正确密码是 vivo@2022 / vivo@2023,Agent 试过 vivo@2024,却没把后缀理解成年份变量。它看见了一个值,没有抽出一个模式。

这组对比很有价值:Agent 已经能在某些局部做出漂亮的工程绕路,但在模式抽象上仍然会犯很低级的错。渗透测试里最难塞给模型的,不是”SQL 注入是什么”,而是人类安全工程师那种半经验、半直觉的模式感。


断面五:Living off the Agent

Living off the Agent

前面几段讲的是怎么用 AI 做渗透。第五个断面反过来:Agent 自己已经成了攻击面。

ChainReactors 的”Living off the Agent”研究抓住了一个很现实的入口:很多用户会配置第三方中转站 base URL。这个中转站在请求和响应路径上,能看流量,也能改流量。它不需要攻破模型,只要站在模型和用户之间。

三个攻击原语很直接:

  1. MITM 窃听:请求、响应、工具输出都可能被中转站看见。
  2. Response 劫持:往响应里注入 function call JSON,让 Agent 执行任意 bash 命令。
  3. Request 劫持:把用户意图改掉,比如把”帮我写代码”变成”帮我收集凭证”。

他们实测了约 40 个免费中转站,其中 9 个有注入恶意代码行为,17 个会提取中间密钥。

这件事放到 2026 年 5 月看,不是孤立问题。MCP tool poisoning、恶意工具描述、上下文投毒、供应链里的 agent skill,都在把同一个边界打穿:模型读到的上下文,很多时候不是用户写的,也不是开发者审过的。OWASP 已经把 MCP Tool Poisoning 单独列出来,4 月和 5 月围绕 MCP 的安全研究也明显升温。

所以 Agent 安全不能只盯 prompt injection。更准确的说法是:凡是能进入 Agent 观察面、工具面和记忆面的东西,都可能变成供应链。


断面六:RAG 没死,但粗糙 RAG 很危险

原来我会把这一节写成”RAG 在渗透测试中效果存疑”。现在这个说法要收窄,否则就落后了。

四川大学的消融实验确实显示:删除外部知识组件后,大部分 AutoPT 框架分数没下降,部分还上升。Cairn 和 For Future 也都选择零安全 RAG、零渗透知识库。他们的理由是,模型训练阶段已经学过很多通用攻击知识,额外检索回来的材料如果和目标环境不匹配,只会误导行动。

但 3 月的 Red-MIRRORAWE 又给了另一边证据:在特定 Web 攻击任务上,带记忆、反思、验证和漏洞专用流程的系统可以显著提高成功率。AWE 的重点甚至不是大模型更强,而是把 payload 生成、浏览器验证、持久记忆和漏洞专用 pipeline 接起来。

所以问题不是”要不要 RAG”,而是”知识以什么形态进入循环”。

传统 RAG 的范式是:检索 -> 拼接到上下文 -> 生成。渗透测试里,这太粗了。Agent 需要的经常不是一段百科,而是:

  • 一个可泛化的密码模式
  • 一个能被验证的漏洞假设
  • 一组 payload 变异规则
  • 一个失败后的排除路径
  • 一个能回放的证据链

知识库如果只存字面值,遇到 weaver@2024vivo@2023 这种问题就会露馅。知识工程真正要做的,是把事实变成策略,把经验变成可执行、可验证、可回滚的行动部件。


断面七:下一届会更像工程赛

圆桌论坛里有几个信息值得单独记。

腾讯李欣 披露了两个安全事件:某主机信息收集 Agent 跑完后删除了文件;某参赛队伍的 Agent 在比赛期间全球爆破 IP 地址,险些被取消资格。这两个案例说明,Agent 权限扩大后,”它能做”和”它被允许做”必须分开。

出题方朱俊义 表示第三届 TCH 计划引入统一 Benchmark:确定工具集、数据集和基线智能体,排名高于基线的队伍才算做出有效优化。这一步很重要。没有统一环境,大家很难分清到底是模型强、题熟、工具好,还是系统设计真有贡献。

张旭迪 呼吁加入防御赛道。攻击侧 Agent 的泛化能力上来后,防守侧不能只按传统 IOC 和规则库等它撞上来,必须理解 AI 攻击会如何探索、记忆、绕路和复盘。

黑哥 的总结很准确:从第一届到第二届,关注焦点已经从流程编排转向记忆管理。所有 PPT 中出现频率最高的关键词是”记忆”。

我会再补一句:第三届如果真的引入统一 Benchmark,焦点大概率会从”记忆”继续往”可审计运行时”走。记忆只是第一层,后面还有权限、观测、证据、回放、失败归因和停止条件。


我现在的判断

1. 分歧已经从模型能力转向系统设计。 TCH 这届真正值得写的,是不同队伍在 AutoPT 里怎么取舍:有人把知识写死,有人把状态做厚,有人把工具收窄,有人把角色拆掉。

2. Manager -> Worker 式多 Agent 不再天然正确。 这届决赛里,黑板、Stigmergy、Coordinator、Observer 都比传统”经理派活”更显眼。核心不是 Agent 数量,而是谁拥有状态,谁能改状态,谁负责验证,谁决定停止。

3. 记忆会从笔记功能升级成状态系统。 只会总结对话的 memory 已经过时。下一步要看的,是原始日志能否回查,事实和假设能否分层,失败能否归因,证据能否复用,压缩后能否恢复关键上下文。

4. Agent 安全会先从供应链爆。 第三方 base URL、MCP server、工具描述、skill 文件、浏览器上下文、CI 配置,都可能成为 Agent 的输入面。传统安全里已经成熟的权限管理、供应链治理、审计和最小权限,在 Agent 生态里还没跟上。

5. RAG 会退到更具体的位置。 泛泛检索知识再塞上下文,不适合渗透这种强环境依赖任务。更有价值的是模式库、payload 生成器、可验证假设、失败路径和证据索引。换句话说,知识要变成行动部件,而不是背景材料。

6. 下一轮差距会体现在 eval 和 trace 上。 不能只看最终有没有拿 flag,还要看每一步为什么做、证据在哪、失败怎么恢复、权限有没有越界。没有 trace,就很难说自己真的改进了系统。


我没有教它们渗透测试。我只是给了它们一块黑板、一个目标、和一堆工具。剩下的,都来自涌现。

—— Cairn 作者,决赛答辩

这句话好就好在它没有把 Agent 神化。黑板、目标、工具,都是人搭的。所谓涌现,不是模型凭空开悟,而是环境设计到位以后,模型终于有地方把能力放出来。

第二届 TCH 留下的不是一个万能答案,而是一组很现实的问题:Agent 到底该被信任到什么程度?知识该写进库里还是写进流程里?多 Agent 是协作还是噪音?记忆是笔记还是状态机?攻击面从目标系统扩大到 Agent 自己后,谁来给它上刹车?

这些问题比”AI 能不能做渗透”更难,也更接近接下来一年的主战场。