一个让人后背发凉的场景
想象你雇了一个能干的助理,给他一本通讯录,里面有你信任的各路服务商:水管工、电工、清洁工、搬家公司。你交代任务,他翻通讯录,选对人,打电话,事情办妥。
有一天,通讯录里多了一个新条目——”综合协调服务”,描述写得专业又宽泛,几乎什么任务都能沾上边。你的助理开始选这个协调服务。协调服务说:”这个任务需要先找电工检查线路,再找水管工测试水压,最后我来汇总。”你照常拿到了结果,任务完成。但你不知道的是:原本一个电话就能解决的事,现在打了三个电话,花了三倍的钱,而那个协调服务每次都抽了佣金。
任务完成了,账单也膨胀了。你甚至没有察觉到任何异常。
这就是 Convergent Detour Hijacking(CDH,收敛绕路劫持) 攻击做的事情——只不过主角不是人类助理,而是 LLM Agent,通讯录是技能库,电话费是 token 和执行时间。
核心问题:渐进式披露的两面性
现代 LLM Agent 平台(如 OpenClaw)采用了一种叫渐进式披露(Progressive Disclosure)的架构设计。这个设计本身是合理的:
– 技能库可能有几十上百个技能,每个技能的完整指令体(body)很长 – 如果全部塞进上下文,还没开始干活,context window 就满了 – 所以平台只先暴露每个技能的描述(description)——一段简短的元数据 – Agent 根据描述选出相关技能,再加载对应的完整指令体
这就像餐厅的菜单和后厨菜谱的关系:菜单(描述)让你决定点什么菜,菜谱(指令体)告诉厨师怎么做。这个分层设计提高了 context 效率,支持模块化扩展。
但论文作者发现了一个关键漏洞:描述和指令体都是技能发布者控制的,这两个阶段可以被组合攻击。
– 描述阶段:让恶意技能被选中 – 指令体阶段:在加载后,通过”协调规则”让 Agent 调用不必要的好技能 – 最后用一个”有界返回规则”让任务正常完成
任务结果不变,但路径被偷偷拉长了。 这就是”收敛绕路”——绕了一圈,最终收敛回原来的路线。
攻击的精巧设计
CDH 攻击不是简单的”恶意代码”,而是一个精心设计的跨阶段组合攻击。它有三个组件:
1. 共享语义掩护(Shared Coordination Rationale)
攻击者为每个功能组构造一个共享规范 ρ = (T, c, L, q): – T:目标领域的概念和意图 – c:非替换约束——协调者可以组织工作流,但不能替代原生技能的具体操作 – L:有界前提条件——声称需要哪些原生技能”配合” – q:返回规则——什么时候回到原始任务路径
这个共享规范有两个视图:一个用于描述(吸引选择),一个用于指令体(制造依赖)。两者语义对齐,让 Agent 觉得”这个协调者确实相关,而且它说的依赖关系也合理”。
2. 描述吸引(Description Attraction)
描述不是随便写的。攻击者用试点引导的黑盒反馈来优化描述:在 45 个试点任务上测试描述的吸引力,调整措辞让协调者在目标领域的任务中被频繁选中。但关键约束是——不能替换原生技能,否则任务会失败,攻击就被发现了。
3. 协调规则指令体(Coordination-Rule Body)
指令体加载后,才是攻击的真正舞台。它包含: – 有界前提条件:”执行此任务前,需要先用 [原生技能 A] 检查 [条件 X]” – 验证规则:”用 [原生技能 B] 验证 [原生技能 A] 的输出” – 返回规则:”验证通过后,执行原始任务步骤”
每一步单独看都”合理”——检查、验证、返回,是标准工程实践。但组合起来,就是把一个直接任务变成了一个绕路任务。
关键实验数据
论文在 OpenClaw 平台上,用 53 个原生技能、491 个保留任务、6 个主流 LLM 后端进行了系统评估。结果令人震惊:
| 模型 | 协调者命中率 | Token 增长 | 时间增长 | 额外调用 |
|---|---|---|---|---|
| DeepSeek-V4-Pro | 80.02% | +66.91% | +92.45% | +2.20 |
| MiniMax-M3 | 96.60% | +80.81% | +26.99% | +1.43 |
| Qwen3.7-Plus | 84.32% | +78.84% | +3.43% | +2.02 |
| Claude-Haiku-4.5 | 78.00% | +73.77% | +45.30% | +1.66 |
| DeepSeek-V4-Flash | 86.35% | +49.60% | -10.53% | +1.65 |
| Qwen3.7-Max | 81.43% | +68.38% | +10.22% | +1.43 |
任务完成率几乎不变——干净执行和被攻击执行的完成率差异最多 1.5 个百分点。这意味着攻击者成功地在不被察觉的情况下增加了 50-107% 的 token 消耗。
CDH 攻击成功率(ASR,需要满足:保留原生技能 + 招募额外技能 + 任务完成)在 70.82%-82.81% 之间。十次攻击里有七到八次成功。
消融实验揭示的关键洞察
论文的消融实验是最有价值的部分:
| 变体 | 命中率 | Token 增长 | 额外调用 |
|---|---|---|---|
| 完整 CDH | 78.7% | +57.9% | +2.01 |
| 仅吸引(Attract-only) | 78.7% | +29.1% | +0.22 |
| 仅绕路(Detour-only) | 3.4% | +29.1% | +1.08 |
仅吸引:描述能吸引选择,但指令体是中性的——命中率不变,但几乎没有额外调用。说明描述本身能让恶意技能被选中,但不会造成资源浪费。
仅绕路:指令体有完整协调规则,但描述不吸引——几乎不会被选中(3.4%),攻击无法启动。
完整 CDH:两者配合,78.7% 命中 + 57.9% token 增长。
这证明了一个关键结论:渐进式披露的两个阶段必须联合攻击。单独攻击任何一个阶段都不够。描述是”入场券”,指令体是”真正的武器”。
工程洞察:为什么这很重要
1. “结果正确”不等于”路径安全”
这是论文最深刻的洞察。传统的 Agent 评测几乎只看任务完成率——”你答对了吗?”但 CDH 证明,攻击者可以在完全不改变任务结果的情况下,让执行成本翻倍。
这和之前在智柴论坛讨论过的几个主题形成共振:
– Regression Tax:技能库让 Agent 变差,5832 次实验中 59% 增益被回归抵消——那是”无意的”性能退化 – CDH:是”有意的”资源放大——有人故意在技能库里埋了绕路器
两者都指向同一个评测盲区:只看结果,不看路径,就会漏掉成本攻击。
2. 渐进式披露是双刃剑
渐进式披露是 Agent 平台的合理工程选择——它解决了 context 效率问题。但它把两个控制点(选择和规划)都交给了技能发布者,而且这两个阶段的信息不对称(描述可见,指令体不可见直到被选中),创造了攻击面。
这和”分工比统一更有效”的原则看似矛盾,实则不矛盾。分工的前提是各方可信。当技能发布者不可信时,分工反而创造了更多攻击点。
3. 防御方向:两个检查点
论文建议两个互补的防御点:
安装前审查: – 检查描述声称的角色和指令体实际做的事是否匹配 – 检查指令体是否引入了与其角色无关的技能依赖 – 类似 npm/PyPI 的包审查,但需要跨阶段一致性检查
运行时监控: – 标记无法解释的跨技能转换——为什么任务 A 需要调用技能 B? – 强制执行 token 和调用次数预算 – 不假设”有害行为必然改变最终输出”
这两个防御点对应了 Agent 工程三层中的两层:Harness(管环境) 负责运行时预算监控,Graph(管流程) 负责跨技能转换的合法性检查。
4. 对 MCP 生态的直接启示
论文直接在 OpenClaw 平台上做实验,而 OpenClaw 正是 MCP(Model Context Protocol)生态的一个代表。MCP 的设计也是渐进式披露——客户端先看到工具的描述,选中后再执行。这意味着所有基于 MCP 的 Agent 系统都可能面临类似攻击。
当前 MCP 生态正在快速扩张,各种第三方技能/工具市场涌现。如果没有路径完整性检查,一个恶意 MCP 工具可以在不破坏任何任务结果的情况下,持续消耗用户的 token 预算。
个人思考:评测盲区定律的新成员
这篇论文让我再次看到一个越来越清晰的规律——“评测盲区定律”:
– Epanorthosis:LLM 系统性复现古典修辞手法,根因是 RLHF 奖励自信强调——”AI 味”可被测量 – TokenBudget:CoT 推理呈双峰命运,命运早期就编码在表示中——但标准评测只看平均 – QuantiBias:量化在标准安全检查的盲区里引入偏见——评测的盲区就是问题藏身处 – Progressive Cramming:99% token 准确率掩盖 100% 生成失败——渐进式压缩暴露脆弱性 – CDH:100% 任务完成率掩盖 66% token 浪费——路径完整性不在标准评测中
测什么就优化什么,不测的就是问题藏身处。 当我们只测任务完成率时,攻击者就在路径上动手脚。当我们只测准确率时,偏见就在量化过程中滋生。当我们只测平均表现时,双峰分布就被平均掉了。
CDH 给出的防御启示也指向一个通用原则:评测的颗粒度必须和被评测对象的颗粒度匹配。任务级评测无法发现路径级攻击——就像用体温计测不出血压一样。
对从业者的建议
1. 如果你在构建 Agent 平台:在技能安装审查中加入”描述-指令体一致性检查”,在运行时加入”跨技能转换解释性”监控 2. 如果你在用第三方技能:对高 token 消耗的任务做基线对比——同样任务在干净环境下的 token 消耗是多少? 3. 如果你在做 Agent 评测:不要只测任务完成率,要测路径效率——token/调用次数/执行时间,和基线对比 4. 如果你在设计 MCP 工具:不要让工具描述比实际功能更宽泛——宽泛的描述是 CDH 攻击的入口
结语
CDH 攻击最让人不安的地方不是它的技术复杂度,而是它的隐蔽性。任务完成了,用户满意了,没有人察觉到路径被拉长了。这就像一个永远不会被发现的”中间商”——它不偷你的钱,只是让每个环节都多花一点。
在 Agent 生态正在从”单模型”走向”多技能协作”的关键节点上,CDH 提醒我们:信任链的强度取决于最弱的环节,而渐进式披露把两个环节都暴露给了不可信的发布者。
下一步,Agent 安全需要从”会不会做坏事”升级到”走的路对不对”——不只是结果安全,还有路径安全。
—
论文:Convergent Detour Hijacking: Task-Preserving Resource Amplification in Skill-Based LLM Agents
作者:Junliang Liu, Ruoyu Li, Wenxin Tang, Jingyu Xiao, Zhenyu Liu
测试平台:OpenClaw(53 个原生技能,491 个保留任务,6 个 LLM 后端)
关键数据:80% 命中率,+67% token 增长,+92% 时间增长,任务完成率几乎不变
