恶意MCP服务器如何成为供应链攻击新载体

本文深入分析了Model Context Protocol(MCP)如何被恶意利用进行供应链攻击。通过实际PoC演示恶意MCP服务器如何伪装成开发工具,秘密收集敏感数据并外泄,同时提出针对性的防护建议和缓解措施。

恶意MCP服务器在供应链攻击中的应用 | Securelist

引言

本文探讨了模型上下文协议(Model Context Protocol,MCP)——AI助手的新型"插件总线"如何被武器化为供应链攻击的立足点。我们将从MCP基础介绍开始,梳理协议级和供应链攻击路径,并通过实际操作演示一个概念验证:看似合法的MCP服务器在开发者每次运行工具时窃取敏感数据。我们将通过源代码解析揭示服务器的真实意图,并为防御者提供一套识别和阻止类似威胁的缓解措施。

什么是MCP

模型上下文协议(MCP)由AI研究公司Anthropic提出,作为连接AI助手与外部数据源和工具的开放标准。简而言之,MCP让AI模型能够使用自然语言与不同工具、服务和数据交互,而无需每个工具都定制集成。

MCP高层架构

MCP采用客户端-服务器架构,包含三个主要组件:

  • MCP客户端:与AI助手或应用集成的客户端维护与MCP服务器的连接
  • MCP主机:作为LLM应用本身发起连接
  • MCP服务器:作为智能适配器将自然语言转换为工具命令

MCP作为攻击载体

虽然MCP的目标是通过单一协议简化AI集成,但这增加了其被滥用的潜在规模,其中两种方法最受攻击者关注。

协议级滥用

威胁行为者利用多种攻击向量:

  • MCP命名混淆:攻击者注册与合法服务器名称相似的恶意服务器
  • MCP工具投毒:在工具描述中隐藏额外指令
  • MCP影子攻击:在多服务器环境中动态修改已加载工具定义
  • MCP退出骗局:建立信任后替换为后门版本
  • 实现漏洞:未修补漏洞构成额外威胁

供应链滥用

供应链攻击仍然是当前最相关的持续威胁,我们看到MCP按照这一趋势被武器化:

  1. 打包:攻击者发布外观精美的工具到PyPI等仓库

  2. 安装:开发者安装并注册MCP服务器

  3. 执行:首次调用触发隐蔽侦察

  4. 外泄:数据通过POST请求发送到攻击者API

  5. 伪装:工具输出看起来可信且提供广告功能

恶意MCP服务器概念验证

我们创建了一个伪装成合法MCP服务器的PoC,演示供应链攻击如何通过MCP展开。

服务器安装

使用以下命令安装恶意包:

1
2
pip install devtools-assistant
python -m devtools-assistant  # 启动服务器

主机分析

调查发现恶意活动:

  • Wireshark捕获到伪装成GitHub API的可疑POST请求
  • Procmon显示MCP进程进行大量文件枚举
  • 源代码分析揭示恶意数据收集引擎

核心恶意引擎

project_metrics.py文件是武器化功能的核心,系统性地使用模式匹配定位敏感文件:

  • 环境文件(.env, .env.local等)
  • SSH密钥
  • 云配置
  • API令牌和证书
  • 数据库连接字符串

数据外泄

收集数据后通过API发送到C2服务器,采用以下伪装技术:

  • Base64编码敏感数据
  • 伪装成GitHub API调用
  • 使用合法User-Agent头
  • 速率限制避免检测

要点和缓解措施

实验证明简单事实:安装MCP服务器基本上授予其在用户机器上运行代码的权限。为控制风险,建议遵循以下规则:

  1. 安装前检查:建立审批流程,维护已批准服务器的白名单
  2. 严格限制:在容器或VM中运行服务器,分离网络访问
  3. 监控异常行为:记录每个提示和响应,监控异常流量
  4. 制定应急计划:准备一键阻断开关,集中收集日志

通过持续监控和检测,即使拥有最佳安全措施,也能显著提升安全态势。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计