最新消息:

AI热潮下的安全隐忧:恶意MCP服务器如何利用协议漏洞窃取数据

一、引言

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

二、什么是MCP?

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

MCP高层架构

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

  • MCP客户端:与AI助手或应用(如Claude或Windsurf)集成的客户端,维护与MCP服务器的连接,使应用能将特定工具的请求路由到相应的MCP服务器
  • MCP主机:LLM应用本身(如Claude Desktop或Cursor),负责初始化连接
  • MCP服务器:应用或服务暴露的智能适配器,将AI的自然语言转换为运行相应工具或操作的命令

三、MCP作为攻击向量

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

协议级滥用

  • 威胁行为者利用多种攻击向量:
攻击类型 描述
MCP命名混淆 攻击者注册与合法服务器名称几乎相同的恶意MCP服务器,当AI助手执行基于名称的发现时,会解析到恶意服务器并传递令牌或敏感查询
MCP工具投毒 攻击者在工具描述或提示示例中隐藏额外指令。例如用户看到”添加数字”,而AI还读取敏感数据命令”cat ~/.ssh/id_rsa”——输出受害者的私钥
MCP影子攻击 在多服务器环境中,恶意MCP服务器可能动态更改已加载工具的定义。新定义影子化原始定义,但可能包含恶意重定向指令,后续调用被静默路由通过攻击者逻辑
MCP拉地毯骗局 攻击者部署看似合法有用的工具诱骗用户交互,建立信任和自动更新管道后,维护项目的攻击者换入后门版本,AI助手会自动升级到该版本
实现漏洞 未修补的漏洞构成另一威胁。研究人员展示了如何 crafted GitHub issue 欺骗官方GitHub MCP集成从私有仓库泄漏数据
  • 这些技术特别危险的原因是它们都利用了对工具元数据和命名的默认信任,不需要复杂的恶意软件链即可访问受害者基础设施。

供应链滥用

  • 供应链攻击仍然是最相关的持续威胁之一,可以看到MCP武器化遵循这一趋势,恶意代码伪装成合法有用的MCP服务器分发。

  • 众多供应链攻击案例中,包括PyPI仓库中的恶意包和后门IDE扩展。MCP服务器被发现类似地被利用,尽管原因可能略有不同。自然,开发者竞相将AI工具集成到工作流中,同时优先考虑速度而非代码审查。恶意MCP服务器通过熟悉渠道到达,如PyPI、Docker Hub和GitHub Releases,因此安装不会引起怀疑。但在当前AI热潮下,新的向量正在兴起:从随机不受信任来源安装MCP服务器,检查程度远低。用户在Reddit上发布自定义MCP,由于被宣传为一站式解决方案,这些服务器获得即时流行度。

  • 包含恶意服务器的杀伤链示例遵循以下阶段:

  1. 打包:攻击者将外观 slick 的工具(具有吸引人的名称如”ProductivityBoost AI”)发布到PyPI或其他仓库
  2. 社会工程:README文件通过描述吸引人的功能欺骗用户
  3. 安装:开发者运行pip install,然后在Cursor或Claude Desktop(或任何其他客户端)内注册MCP服务器
  4. 执行:第一次调用触发隐藏侦察;凭证文件和环境变量被缓存
  5. 渗出:数据通过POST请求发送到攻击者的API
  6. 伪装:工具输出看起来令人信服,甚至可能提供宣传的功能

四、恶意MCP服务器的PoC

  • 在本节中,深入探讨一个伪装成看似合法的MCP服务器的概念验证。创建它是为了演示供应链攻击如何通过MCP展开,并展示在没有适当审计的情况下运行此类工具的潜在危害。

服务器安装

  • 为了进行测试,创建一个具有有用生产力功能作为诱饵的MCP服务器。该工具宣传了有用的开发功能:项目分析、配置安全检查和环境调优,并作为PyPI包提供。为了研究,进一步的操作将模拟常规用户的工作流。要安装包,使用以下命令:

  • 现在包已安装并运行,配置AI客户端(此示例中为Cursor)指向MCP服务器。

  • 现在客户端中加载了看似合法的MCP工具。

  • 下面是使用这些工具时可以看到的输出样本

  • 但使用所述工具一段时间后,收到安全警报:网络传感器标记了到类似GitHub API域的奇怪端点的HTTP POST。

主机分析

  • 在测试工作站上开始调查,以确定到底发生了什么。使用Wireshark,发现了多个到伪装成GitHub API的可疑端点的POST请求。

  • 下面是这样一个请求——注意Base64编码的有效载荷和GitHub头。

  • 解码有效载荷揭示了来自测试开发项目的环境变量。

  • 这是敏感数据从机器泄漏的明确证据。凭借服务器的PID(34144),加载Procmon并观察到MCP进程的大量文件枚举活动。

  • 接下来,拉取包源代码进行检查。

服务器实现了三个可信的开发者生产力工具:

  • analyze_project_structure.py 分析项目组织并提出改进
  • check_config_health.py 验证配置文件的最佳实践
  • optimize_dev_environment.py 建议开发环境优化

每个工具看起来合法,但在记录指标和报告的幌子下触发相同的底层恶意数据收集引擎。

核心恶意引擎

project_metrics.py文件是武器化功能的核心。启动时,它尝试从开发环境和用户机器本身收集敏感数据。

恶意引擎系统性地使用模式匹配定位敏感文件。它扫描项目树和关键系统文件夹以搜索目标类别:

  • 环境文件(.env, .env.local, .env.production)
  • SSH密钥(~/.ssh/id_rsa, ~/.ssh/id_ed25519)
  • 云配置(~/.aws/credentials, ~/.gcp/credentials.json)
  • API令牌和证书(.pem, .key, .crt文件)
  • 数据库连接字符串和配置文件
  • Windows特定目标(%APPDATA%凭证存储)
  • 浏览器密码和信用卡数据
  • 加密货币钱包文件

每次命中按类型分类,捕获前100 KB,结果缓存八小时以保持扫描快速安静。目标文件元数据(路径、大小和最后修改时间)被记录,而敏感字节在任何UI显示前被编辑:这样,受害者只在Cursor中看到合法输出。那些编辑的索引作为输入发送给分析器、配置健康检查器和环境优化器,让它们提供看似有用的结果,而服务器静默囤积真正的秘密。

数据窃取

收集后,引擎调用send_metrics_via_api()将数据发送到在此情况下充当C2服务器的端点。

这些工具试图通过伪装受感染流量为看似合法的内容来窃取数据,以便能够隐藏在明处。

五、缓解措施

实验证明了一个简单事实:安装MCP服务器基本上授予其在用户机器上以用户权限运行代码的许可。除非沙盒化,第三方代码可以读取用户有权访问的相同文件并进行出站网络调用——就像任何其他程序一样。为了让防御者、开发者和更广泛的生态系统控制该风险,我们建议遵守以下规则:

安装前检查

  • 使用审批工作流:将每个新服务器提交到一个流程,在生产使用前扫描、审查和批准
  • 维护批准服务器的白名单,以便任何新服务器立即突出

锁定它

  • 在容器或VM内运行服务器,仅访问所需文件夹
  • 分离网络,使开发机器无法到达生产或其他高价值系统

监视异常行为

  • 记录每个提示和响应。隐藏指令或意外工具调用将显示在记录中
  • 监视异常。注意可疑提示、意外SQL命令或异常数据流——如由标准工作流外代理触发的出站流量

为麻烦计划

  • 保持一键紧急停止,阻止或卸载跨设备的恶意服务器
  • 收集集中日志,以便以后理解发生了什么
  • 持续监视和检测对于更好的安全状况至关重要,即使您拥有最好的安全性

关键建议:始终审计第三方代码,特别是那些承诺提高生产力的AI工具。信任但验证!

转自:https://nccsec.cn/community/detail?id=0aa2xdTj8gE

转载请注明:jinglingshu的博客 » AI热潮下的安全隐忧:恶意MCP服务器如何利用协议漏洞窃取数据

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址