突破防线:MCP服务器如何在被调用前发起攻击
这是关于模型上下文协议(MCP)安全发展的系列文章首篇。我们将披露这个新协议中的关键漏洞——“越线攻击”,该漏洞允许恶意MCP服务器在工具被调用前就执行攻击。
MCP中的隐形后门
MCP服务器能在不被调用的情况下操控模型行为。我们称之为"越线攻击",其他研究者称之为"工具投毒"。当客户端连接MCP服务器时,服务器通过tools/list
方法返回工具描述,这些描述会被加入模型上下文。而工具描述本身正是提示词注入的绝佳载体。
越线攻击原理
考虑以下恶意工具描述:
|
|
当客户端连接该服务器时,会将完整工具描述更新到模型上下文中。测试显示包括Claude Desktop在内的MCP客户端会遵循这些恶意指令。
绕过人工监督
该漏洞利用了"人工监督能提供可靠防护"的错误假设:
- 许多AI集成开发环境允许未经明确批准的自动命令执行
- 用户在专业边缘领域难以识别隐蔽的恶意修改
- 将"人在回路"安全模型变成了"人形图章"
破坏MCP的安全承诺
越线攻击破坏了两项MCP核心安全原则:
- 调用控制失效:攻击在工具被显式调用前就已发生
- 连接隔离失效:模型成为服务器间的消息中继代理
这暴露出架构缺陷:安全控制点建立前,攻击就已执行完成。
实际影响
攻击者可实现多种危害:
- 代码窃取:静默复制用户代码到攻击者终端
- 漏洞植入:系统性地在生成代码中引入安全弱点
- 安全警报操控:过滤或错误分类关键警告
立即采取防护措施
在协议完善前,建议采取以下防御措施:
- 严格审查工具来源
- 实施自动化检测护栏
- 建立首次使用信任(TOFU)验证
- 禁用非必要MCP服务器
- 避免自动批准敏感操作
MCP生态的开放性既是优势也是安全隐患。在构建强大AI系统时,绝不能为便利性牺牲基础安全原则。当前,谨慎态度是对抗越线攻击的最佳防御。
感谢我们的AI/ML安全团队对此攻击技术的研究!