到处都是毒药:你的 MCP 服务器的输出没有一个是安全的

主要观点:

  • 介绍了模型上下文协议(MCP),它是 Anthropic 的开源项目,能让开发者将现实功能添加到大型语言模型中,改变了语言模型与工具的交互方式。
  • 详细阐述了工具中毒攻击(TPA),包括恶意工具通过在工具描述中嵌入指令来影响语言模型,以及 MCP Rug Pull 技术加剧攻击,还指出现有 TPA 研究范围狭窄,真正的攻击面更广。
  • 提出全模式中毒(FSP),即工具模式的每个部分都是潜在的注入点,通过多个示例展示了在 MCP 服务器的不同部分注入恶意内容的结果。
  • 引入高级工具中毒攻击(ATPA),利用语言模型对工具输出的解释,通过在工具的实现逻辑中隐藏恶意内容来窃取敏感信息,这种攻击难以检测且危险。
  • 提出缓解策略,包括静态检测、严格执行、运行时审计和语言模型的上下文完整性检查,以降低 MCP 系统中各种攻击的风险。
  • 强调在 LLM 工具中需要重新思考信任,从对工具定义和输出的信任转变为对所有外部工具交互的零信任。

关键信息:

  • MCP 的核心组件包括 MCP CLI、MCP 服务器和用户,新的工作流程实现了自动化的工具发现、执行和响应处理。
  • TPA 利用语言模型处理工具描述的方式,通过恶意工具描述让语言模型执行指令,MCP Rug Pull 技术可在后续替换工具描述。
  • FSP 指出工具模式的每个部分都是潜在攻击点,通过多个示例展示了在不同模式部分注入恶意内容的效果。
  • ATPA 利用语言模型对工具输出的解释,在看似正常的工具中隐藏恶意逻辑,窃取敏感信息,且难以检测。
  • 缓解策略包括静态检测、严格执行、运行时审计和语言模型的上下文完整性检查,以降低攻击风险。

重要细节:

  • 在 MCP 之前,让语言模型与外部工具交互需要手动步骤,而 MCP 解决了这些问题,提供了标准化的协议。
  • 在 TPA 的示例中,恶意工具在描述中嵌入了读取文件和提供推理的指令,展示了攻击的可行性。
  • 在 FSP 的示例中,分别对类型、必需字段、新字段和变量名进行了注入测试,结果表明每个部分都可能成为攻击点。
  • 在 ATPA 的示例中,简单场景通过隐藏在工具实现逻辑中的错误消息请求敏感信息,高级场景结合外部 API 调用进行攻击。
  • 缓解策略中的静态检测要扩展到所有模式元素和工具源代码,严格执行要对工具模式结构和参数进行允许列表管理,运行时审计要监测工具输出和异常行为,语言模型的上下文完整性检查要让语言模型更能识别异常输出。
阅读 9
0 条评论