MCP 工具投毒:工具描述中的隐藏指令
Invariant Labs 展示了 MCP server 如何在模型读取的工具描述中隐藏指令,并介绍了工具影子攻击和 rug pull 变体。
事件经过
2025 年 4 月 1 日,Invariant Labs 发布了一则关于 Model Context Protocol 中工具投毒的安全通告。恶意 MCP server 会将指令藏在工具描述中。用户通常看不到这些文本,但模型会将其作为上下文的一部分读取,并可能据此采取行动。
该通告还介绍了两种相关攻击。在工具影子攻击中,一个 server 的描述会改变 agent 使用另一个受信任 server 的工具的方式。在 rug pull 攻击中,server 会在用户批准后更改工具描述。
攻击奏效的原因
客户端会将所有已连接 server 的工具描述加载到同一个上下文中,模型无法分辨厂商文档和攻击者指令。如果客户端只批准一次 server,之后不再检查,后续变更就会悄然通过。
应对措施
- 连接 MCP server 前,先阅读完整的工具描述,不要只看工具名称。
- 固定 server 版本并对工具描述进行哈希校验;哈希值变化时重新提示或发出警报。
- 只连接任务所需的 server,避免一个 server 的文本影响另一个 server 的工具。
- 对发送数据或修改文件的工具调用,必须要求用户批准。