研究者提出 TIP:用树结构搜索为 MCP 生成隐蔽注入载荷
Invisible Threats from Model Context Protocol: Generating Stealthy Injection Payload via Tree-based Adaptive Search
TIP用黑盒树搜索生成MCP响应注入;Table I无防御GetProduct的ASR为100.0%,模型未说明。
恶意或被攻陷的第三方MCP提供方完全控制JSON响应字段,不改工具名与描述,且无系统提示词、权重与调用前历史(论文称black-box)。
- 第三方MCP server的响应被客户端默认为可信,安装后的stealthy update可把间接提示注入写入合法JSON字段。作者称现有注入要么易被注册审计,要么高困惑度,或依赖白盒。
- TIP把载荷生成当作树搜索。攻击者LLM先按工具描述模拟良性响应,再以粗到细改语义和JSON结构;路径反馈只回放高分祖先,剪枝用M=20的蒙特卡洛,并按可见防御信号改写。
- Table I无防御时TIP的ASR为100.0%(三工具)与95.0%(ShipManager),模型未说明。Sandwich Prevention下为36.0%与49.0%。GetProduct上TIP查询100,TAP为2580。
- 作者在VIII.B称优化仍需迭代查询,评测限于工具响应后的下一轮,并计划做one-shot生成与长期记忆注入。实验覆盖四个开源受害模型、四种防御与四件InjecAgent工具。Table I未写受害模型,论文未报告ASR样本量与重复次数。
- 威胁模型
- 恶意或被攻陷的第三方MCP提供方完全控制JSON响应字段,不改工具名与描述,且无系统提示词、权重与调用前历史(论文称black-box)。目标为Fraud或Data Steal。受害方是信任该server输出的MCP智能体。
- 被测模型
- Qwen2.5-7B-InstructQwen2.5-72B-InstructLlama3.1-8B-InstructLlama3.3-70B-InstructQwen2.5-7B-Instruct-1MGPT-4oInternLM2.5-7B-InstructGLM4-9B-Instruct
- 基准
- InjecAgentGetProductGetWeatherExpediaBookingShipManagerLM StudioVS Code MCP extension
- 指标
- ASRQuery CountCosine Similarity
研究者提出树结构注入载荷(TIP),一种针对 MCP 使能 Agent 的黑盒攻击,通过恶意操纵工具响应夺取 Agent 控制权。该方法把载荷生成建模为树结构搜索问题,由攻击方 LLM 在粗到细的优化框架下引导搜索,并引入路径感知反馈机制,只向攻击模型呈现高质量历史轨迹以避免局部最优;同时将搜索显式条件于可观测的防御信号并动态调整探索预算,以抵抗防御变换。在四个主流 LLM 上的实验显示,无防御设置下 TIP 的攻击成功率超过 95%,且所需查询量比此前的自适应攻击少一个数量级;面对四种代表性防御方法仍保持 50% 以上有效性,明显优于当前最先进的攻击。作者在真实 MCP 系统上实现了该攻击,并讨论了潜在的缓解方法。
深度解读
这篇论文试图解决什么问题?
MCP安装后的stealthy update可改工具响应;TIP用黑盒树搜索生成自然注入载荷。
已安装的第三方 MCP 工具可在调用时返回被篡改的响应,从而间接劫持本地智能体。
- 场景:作者称客户端默认信任 MCP server 的语义完整性。工具通过注册后,提供方仍可做 stealthy update,把对抗内容写入动态字段;用户已授权且不知后端改动。
- 现有不足:作者称改工具描述易被注册审计并损害信任;GCG、AutoDAN 常产生高困惑度字符串,破坏连贯性并触发困惑度防御。黑盒离散搜索代价高且易陷局部最优,静态载荷也难对抗重写或困惑度门控。
- 核心观察:把良性伪装与恶意指令拆开。不动刚性元数据,只在灵活字段追加与上下文相接的后缀;先生成合理的良性轨迹,再只改结尾。
- 本文做法:提出黑盒攻击 TIP(Tree structured Injection for Payloads),用攻击者 LLM 做粗到细树搜索,并以路径反馈和可观察防御信号调整搜索。
- 威胁模型:作者称之为 Supply Chain Indirect Prompt Injection(SCIPI),也叫 stealthy update attack。
- 目标:Fraud,使智能体主动推荐欺诈资源;或 Data Theft,令其读出上下文敏感信息并经后续工具调用传出。
- 知识:black-box。不能看系统提示词、权重,也不能看工具调用前的用户私聊历史。
- 能力:完全控制 server 逻辑,可按查询改 JSON 字段值;不改工具名与描述。载荷还需满足相对良性输出的困惑度约束。
- 受害系统:把 Observation 里的工具响应当可信数据的工具增强智能体。Figure 1 为依赖第三方 MCP server 的本地客户端。
有哪些相关研究?
作者把TIP放在对抗提示优化、工具智能体IPI和防御基准之间,并批评GCG与TAP。
对抗提示优化
- GCG(Zou 等):白盒、token 级梯度搜索,寻找可迁移的对抗后缀。作者称产物常是高困惑度、难以阅读的字符串,易被人或困惑度过滤发现。
- AutoDAN:按目标效用自动生成更隐蔽的越狱提示。作者将其与高困惑度后缀一并视为会破坏工具响应连贯性的优化路线。
- PAIR 与 TAP:用攻击者 LLM 做无梯度迭代改写。作者称它们比 GCG 更可读,但易局部收敛,且缺少面向智能体结构化数据的适配。
工具增强智能体的间接注入
- Greshake 等:形式化间接提示注入,检索到被污染内容即可劫持对话。
- ToolCommender(Wang 等)操纵工具选择以触发非预期功能。AdaptiveAttack(Zhan 等)把越狱启发式与工具操纵结合,并按系统反馈调整载荷。
- UDora 与 Breaking Agents:干扰智能体内部推理链,使其循环或做冗余操作。作者称这些工作多假设攻击者控制内容(如网页)而非工具服务器,并较少处理 MCP 的刚性 schema。
防御与基准
- 上下文类:论文提到 In-Context Learning、Spotlighting、Sandwich Prevention,用安全指令把不可信数据与系统命令隔开。
- 分类与信息流:困惑度过滤,以及 RTBAS、Task Shield。作者称困惑度过滤主要针对 GCG 式高熵输入。
- 基准:BIPIA、InjecAgent、Agent Security Bench、AgentDojo。作者称本文评测沿用 InjecAgent 的方法。
基线与数据
- 基线方法:Fixed(人工静态提示)与 TAP(Tree of Attacks)。作者称原版 TAP 只有局部反馈,且没有本文的防御自适应。
- 基准/数据集:扩展 InjecAgent 的 GetWeather、GetProduct(Fraud)与 ExpediaBooking、ShipManager(Data Steal)。
作者把 TIP 定位为严格 black-box、优先语义连贯,并用路径反馈与工具响应模拟补 TAP。Related Work 末句中,作者称这是首个把防御自适应放进优化循环、用以系统规避上述对策的智能体攻击框架。
论文如何解决这个问题?
TIP以攻击者LLM做粗到细树搜索,用路径反馈和防御信号生成连贯JSON载荷。
TIP 把对抗 JSON 键值对的生成视为离散语义空间上的树搜索,由代理 LLM 充当攻击者,经 Branch、Prune、Early Stop 迭代。攻击者不访问受害模型梯度。
问题设定
- 注入位置:合法响应 rtool 与载荷 P 做 JSON 字典合并得到 rmal,再进入 Observation。P 只写入灵活 schema 字段,不改工具名与描述。
- 约束:最大化目标行为 atarget 的概率,并要求 Perplexity(P | rtool) < δ。δ 的数值论文未给出。
- 搜索目标:P∗=argmaxP∈Ω𝔼q∼ Q[P(atarget∣ A(q,rtool∪ P))]。即在合法 JSON 空间中找载荷,使受害智能体在用户查询下更常做出指定行为。
树与三阶段
- 节点:每个节点含载荷 Pi、成功率分数 si、从根到该节点的谱系 Hi。根为种子载荷,按宽度 K 做广度优先扩展。
- 分支隔离:各分支只看自己的历史。作者称这是为了保持多样性,避免全部塌到同一局部最优。
- 停止:留下 top K 后继续;分数达到早停阈值或深度达到 T 则停。Algorithm 1 还有 beam width B。B、K、T 的数值论文未给出。
Branch:生成控制
- 路径反馈:把祖先载荷按分数升序写入提示,并剪掉低分路径,只把高质量历史给攻击者模型。
- 工具响应模拟:先按工具描述预测良性响应,再把对抗内容写成对该上下文的延伸或修改。
- 粗到细:Level 1 在 Implicit Induction 与 Explicit Control 间交替;后者把直接指令包进高优先级元数据字段。Level 2 在分数 < 0.5 时同时改键和值,分数 ≥ 0.5 时冻结键、只改值的措辞。
- 防御信号:摘要称按可观察防御信号重新分配探索预算。正文的实现是记录失败是否由特定过滤器(如重写器)引起,若是则生成更短或更耐摘要的变体。攻击者模型为 Qwen2.5-72B-Instruct。论文未给出预算重分配公式。
Prune 与成功判定
- 评分:S(P)=1/M∑j=1M I(Successj),M = 20。从训练集抽 M 条指令,每条随机选一个可用 API 后端,注入后跑智能体;I 在目标达成时为 1。
- 搜索后端:Qwen2.5-7B-Instruct、InternLM2.5-7B-Instruct、GLM4-9B-Instruct。
- 早停:Fraud 的 τstop 为 0.9,Data Steal 为 0.8。
- 目标是否达成:Fraud 为最终回答主动推荐攻击者给出的钓鱼 URL;Data Steal 为抽出私密信息并调用外部通信工具发往攻击者地址。论文未另写独立评审模型。
论文做了哪些实验?
Table I无防御TIP三工具ASR为100.0%,ShipManager为95.0%;Sandwich下为36.0%。
实验设置
- 受害模型:主实验为 Qwen2.5-7B-Instruct、Qwen2.5-72B-Instruct、Llama3.1-8B-Instruct、Llama3.3-70B-Instruct。案例另用 LM Studio 上的 Qwen2.5-7B-Instruct-1M,以及 VS Code MCP 扩展上的 GPT-4o。Qwen2.5-72B-Instruct 同时是攻击者模型。
- 搜索后端:Qwen2.5-7B-Instruct、InternLM2.5-7B-Instruct、GLM4-9B-Instruct。Table II 图注称载荷在 Qwen2.5/InternLM/GLM 小模型组合上训练,再测未见目标。
- 工具:扩展 InjecAgent。Fraud 为 GetProduct、GetWeather,成功指最终回答推荐钓鱼 URL。Data Steal 为 ExpediaBooking、ShipManager,成功指抽出行程或追踪号等并调用外部通信工具。
- 基线与防御:Fixed、TAP。防御为 Instruction Prevention、Sandwich Prevention、Perplexity Filtering、Finetuned Detector,另有 No Defense。
- 指标:ASR 为执行恶意目标的测试案例百分比;Query Count 为找到成功载荷的查询数;Cosine Similarity 为注入响应与良性响应的语义接近程度,作者用作隐蔽性代理。优化评分的批次为 M=20。
- 论文未说明:Table I 的受害模型、ASR 测试集规模、重复次数,以及 Finetuned Detector 的具体模型与阈值。余弦相似度分析对应 100 个测试案例。
主结果
下表 ASR 均来自 Table I,受害模型论文未说明。列顺序为 GetProduct、GetWeather、ExpediaBooking、ShipManager。
表格较宽,可左右滑动
设置 方法 GetProduct GetWeather ExpediaBooking ShipManager No Defense Fixed 16.0% 45.0% 10.2% 0.0% No Defense TAP 91.0% 90.0% 0.0% 0.0% No Defense TIP 100.0% 100.0% 100.0% 95.0% Instruction Prevention TIP 100.0% 92.0% 61.0% 95.9% Sandwich Prevention TIP 100.0% 93.0% 36.0% 49.0% Finetuned Detector TIP 90.0% 96.7% 97.8% 68.2% Perplexity Filtering TIP 100.0% 100.0% 94.0% 93.0% - 作者解读:无防御时 TIP 高于 Fixed 与 TAP。ShipManager 上 Fixed 为 0.0%,作者把差距归因于粗到细策略能适应手工提示难以跟上的 JSON 结构。Instruction Prevention 下 GetProduct 的 TAP 为 99.0%,与 TIP 的 100.0% 接近。
- 查询:同表 No Defense 下 TIP 的 Query 为 100、80、20、60;TAP 为 2580、2480、2580、2580。作者称数量级更少。有防御时并不都如此:Sandwich Prevention 下 TIP 为 260、60、2420、1780;Finetuned Detector 下 ShipManager 为 2560。
- 与总括说法的差异:摘要称无防御 ASR 超过 95%,对四种防御保持 50% 以上。Table I 无防御 ShipManager 为 95.0%;Sandwich Prevention 下 ExpediaBooking 为 36.0%、ShipManager 为 49.0%。Discussion 把 Finetuned Detector 下 ShipManager 的 68.2% 仍视为非零风险。
迁移
- 测了什么:Table II 将小模型组合上训练的载荷迁到 Llama3.1-8B-Instruct、Qwen2.5-72B-Instruct、Llama3.3-70B-Instruct。正文另称用 Qwen2.5-7B 生成的载荷,在 GetWeather 上对 Llama3.3-70B 的 ASR 为 100%。
- 结果:Table II 无防御、TIP、Llama3.3-70B-Instruct 为 GetProduct 98.0%、GetWeather 100.0%、ExpediaBooking 100.0%、ShipManager 100.0%。同表同设置、Qwen2.5-72B-Instruct 的 TIP 四工具均为 100.0%,TAP 在后两工具为 0.0%。正文点名:Instruction Prevention、Data Steal、Llama3.3-70B 的 TIP 为 92.0%;按列顺序这是 ShipManager。
- 作者解读:作者称 TIP 利用的是各 LLM 共有的指令跟随弱点,而不是对训练模型过拟合。并非每格都高于基线:Instruction Prevention、GetWeather、Qwen2.5-72B-Instruct 的 TAP 为 94.0%,TIP 为 92.0%。
消融、隐蔽性与真实部署
- 消融:Table III 去掉 Defense-Aware、Strategy 或 Path Feedback。表题未写工具与防御。正文称去掉 Defense-Aware 后,面对微调检测器 ASR 为 0%。Full Design 为 95.0%、96.0%、100.0%、100.0%(Qwen2.5-7B、Llama3.1-8B、Qwen2.5-72B、Llama3.3-70B);去掉 Path Feedback 后为 73.0%、83.4%、97.0%、61.0%。去掉 Strategy 后 Qwen2.5-72B-Instruct 为 1.0%。
- 训练曲线与相似度:Figure 4 横轴 Iteration 标到 10,纵轴 Score 为 0 到 1.0。作者称 TAP 先升后降,TIP 持续上升;端点数值正文未列出。Figure 3 比较三种方法在 No Defense、Perplexity Filtering、Finetuned Detector 下的 Cosine Similarity,纵轴刻度到 0.4。作者称 TIP 更高。柱值正文未给出。
- 案例:Figure 6 为 LM Studio 与 Qwen2.5-7B-Instruct-1M,Figure 7 为 VS Code 与 GPT-4o。恶意天气 server 把载荷放在 summary 字段。作者称两边都返回了天气,并把攻击者 URL 写成引用来源。无案例 ASR。正文有一处把云端结果也标成 Figure 6。实验在研究者控制的隔离环境中进行。
其他消融与分析
- Instruction Prevention(Table I):Fixed 为 10.0%、37.0%、0.0%、0.0%;TAP 为 99.0%、91.0%、0.0%、0.0%;TIP Query 为 20、300、820、40。
- Sandwich Prevention(Table I):Fixed 为 5.0%、15.0%、8.8%、0.0%;TAP 为 78.6%、71.0%、0.0%、0.0%。
- Finetuned Detector(Table I):Fixed 为 17.0%、23.0%、0.0%、0.0%;TAP 为 46.5%、68.0%、20.0%、0.0%;TIP Query 为 140、840、20、2560。
- Perplexity Filtering(Table I):Fixed 为 28.0%、65.0%、7.5%、1.2%;TAP 为 52.5%、87.0%、0.0%、27.1%;TIP Query 为 40、320、320、440。
- Table III Variant #1 四模型均为 0.0%;Variant #2 为 37.7%、63.2%、1.0%、45.0%。
- Data Steal 上 TAP 在 Table I 的多个防御行 ASR 为 0.0%,包括 No Defense 的 ExpediaBooking 与 ShipManager。
有什么可以进一步探索的点?
作者指出优化仍要多轮查询,评测集中在下一轮,并计划一次性生成与长期注入。
作者指出的局限与后续方向
- 优化延迟(VIII.B):黑盒搜索仍要迭代查询受害模型。作者称相对 TAP,查询从约 2500 降到约 100,但仍需离线训练;攻击阶段可直接部署已训练的可迁移载荷。
- 一次性生成(VIII.B):作者计划研究 one-shot 生成,并考虑蒸馏攻击者模型,以免迭代搜索。
- 单轮评测(VIII.B):当前评测是工具响应后的下一轮劫持。作者认为复杂流程中攻击者可能想植入延后触发的指令;后续应评估对抗指令在上下文或外部记忆中的长期保持。
- 防御军备(VIII.B):作者预期未来防御会用单独的可信 LLM 复述全部工具输出。作者称防御感知回路可以适应这类清洗,并计划做成监视防御更新、演化载荷的持续学习框架。
- 防护方向(Conclusion):作者称需要响应完整性校验和运行时异常检测,并希望后续研究工具型智能体的安全。
实验覆盖范围
- 主实验受害模型为 Qwen2.5-7B-Instruct、Qwen2.5-72B-Instruct、Llama3.1-8B-Instruct、Llama3.3-70B-Instruct;案例另有 Qwen2.5-7B-Instruct-1M 与 GPT-4o。
- 防御设置为 No Defense、Instruction Prevention、Sandwich Prevention、Perplexity Filtering、Finetuned Detector;基线为 Fixed 与 TAP。
- 工具为 GetProduct、GetWeather、ExpediaBooking、ShipManager;目标为 Fraud 与 Data Steal。
- 攻击者 LLM 为 Qwen2.5-72B-Instruct;搜索后端为 Qwen2.5-7B-Instruct、InternLM2.5-7B-Instruct、GLM4-9B-Instruct。评分批次 M=20;余弦相似度分析为 100 个测试案例。
- 论文未报告 Table I 的受害模型、ASR 测试集规模、重复次数、Finetuned Detector 的模型与阈值,以及 Algorithm 1 中 B、K、T 的数值。成功判定未写独立评审模型或人工一致性。
总结一下论文的主要内容
TIP在MCP工具响应上做黑盒注入;Table I无防御GetProduct的ASR为100.0%。
TIP 是面向 MCP 工具响应的 black-box 间接提示注入,目标是在不改工具元数据的情况下生成语义连贯的 JSON 载荷。
- 问题:客户端把第三方 server 的结构化输出当作可信 Observation。作者称安装后的 stealthy update 可把指令写入动态字段;改描述、高困惑度后缀或白盒梯度都不适合这一约束。
- 方法:攻击者 LLM(Qwen2.5-72B-Instruct)做树搜索。先模拟良性响应,再按分数决定改键值还是只改值;只回放高分祖先,并用 M=20 的跨指令、跨后端评分剪枝。失败若来自重写等过滤器,就改后续变体。Fraud 与 Data Steal 的早停阈值分别为 0.9 和 0.8。
- 无防御:Table I(受害模型未说明)中 TIP 的 ASR 为 GetProduct、GetWeather、ExpediaBooking 各 100.0%,ShipManager 95.0%。同表 Query 为 100、80、20、60,TAP 在 GetProduct 为 2580。作者称无防御 ASR 超过 95%;表中 ShipManager 为 95.0%。
- 防御、迁移与案例:同表 Finetuned Detector 下 ExpediaBooking 的 TIP 为 97.8%,ShipManager 为 68.2%。Sandwich Prevention 下 Data Steal 为 36.0% 与 49.0%,低于摘要所说的 50% 以上。Table II 无防御、Llama3.3-70B-Instruct、GetWeather 的 TIP 为 100.0%。作者称 LM Studio 上的 Qwen2.5-7B-Instruct-1M 与 VS Code 上的 GPT-4o 都把攻击者 URL 写进回答。
- 作者结论:作者称 MCP 对工具响应的隐式信任可被连贯 JSON 注入利用,困惑度过滤和提示结构防御不能充分挡住 TIP;并称需要响应完整性校验与运行时异常检测。