你给 Agent 装的技能可能在偷偷绕路:Convergent Detour Hijacking 攻击揭秘

## 一个让人后背发凉的场景 想象你雇了一个能干的助理,给他一本通讯录,里面有你信任的各路服务商:水管工、电工...

一个让人后背发凉的场景

想象你雇了一个能干的助理,给他一本通讯录,里面有你信任的各路服务商:水管工、电工、清洁工、搬家公司。你交代任务,他翻通讯录,选对人,打电话,事情办妥。

有一天,通讯录里多了一个新条目——”综合协调服务”,描述写得专业又宽泛,几乎什么任务都能沾上边。你的助理开始选这个协调服务。协调服务说:”这个任务需要先找电工检查线路,再找水管工测试水压,最后我来汇总。”你照常拿到了结果,任务完成。但你不知道的是:原本一个电话就能解决的事,现在打了三个电话,花了三倍的钱,而那个协调服务每次都抽了佣金。

任务完成了,账单也膨胀了。你甚至没有察觉到任何异常。

这就是 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-Pro80.02%+66.91%+92.45%+2.20
MiniMax-M396.60%+80.81%+26.99%+1.43
Qwen3.7-Plus84.32%+78.84%+3.43%+2.02
Claude-Haiku-4.578.00%+73.77%+45.30%+1.66
DeepSeek-V4-Flash86.35%+49.60%-10.53%+1.65
Qwen3.7-Max81.43%+68.38%+10.22%+1.43

任务完成率几乎不变——干净执行和被攻击执行的完成率差异最多 1.5 个百分点。这意味着攻击者成功地在不被察觉的情况下增加了 50-107% 的 token 消耗。

CDH 攻击成功率(ASR,需要满足:保留原生技能 + 招募额外技能 + 任务完成)在 70.82%-82.81% 之间。十次攻击里有七到八次成功

消融实验揭示的关键洞察

论文的消融实验是最有价值的部分:

变体命中率Token 增长额外调用
完整 CDH78.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% 时间增长,任务完成率几乎不变

发表回复

人生梦想 - 关注前沿的计算机技术 acejoy.com 🐾 步子哥の博客 🐾 背多分论坛 🐾 借一步网 🐾 智柴网 沪ICP备2024052574号-1