流行MCP服务器中发现新的关键RCE漏洞

Imperva威胁研究团队在Framelink Figma MCP服务器中发现了一个关键的远程代码执行漏洞(CVE-2025-53967)。该漏洞存在于命令注入机制中,攻击者可利用此漏洞在主机上执行任意代码,威胁开发者机器和设计数据安全。

流行MCP服务器中发现新的关键RCE漏洞

人工智能开发的速度已经超过了安全编码实践的速度,攻击者正在注意到这一点。Imperva威胁研究最近发现并披露了Framelink Figma MCP服务器中的一个关键远程代码执行漏洞(CVE-2025-53967)。

这只是当今AI工具生态系统中一个令人不安现实的例子:即使是受数千名开发者信任和采用的高度流行项目,也可能隐藏着严重的安全漏洞。通过利用Framelink回退机制中的设计疏忽,攻击者可以实现完整的远程代码执行,使开发者机器、设计数据和连接网络面临风险。

执行摘要

本研究探讨了我们在Framelink Figma MCP服务器中发现的RCE漏洞,这是一个在GitHub上拥有超过10,000星标和600,000次下载的开源项目。

为降低风险,我们建议遵循"缓解与建议"部分的指南。此外,依赖社区驱动AI工具的项目应实施严格的依赖管理,进行定期安全审查,并密切监控安全通告,以减少对新兴威胁的暴露。

Framelink Figma MCP服务器是一个广泛采用的开源MCP,旨在将AI编码代理(如Cursor)连接到来自Figma的实时设计数据。

图1:Framelink Figma MCP服务器Github页面

该由Framelink于2025年2月启动的项目迅速获得关注,在撰写本文时每月下载量超过100,000次。

作为生态系统中最受欢迎的MCP服务器之一,它通过将原始Figma响应转换为清晰、最小的布局和样式元数据,帮助开发者和团队简化设计到代码的工作流程,从而使AI工具能够进行更高效和上下文感知的代码生成。但在继续之前,先简要回顾一下MCP。

模型上下文协议

模型上下文协议是一种现代通信框架,连接AI代理和工具以实现实时分布式协作。MCP服务器通常用Python或JavaScript实现,可以在开发者的本地机器或云中运行,充当通过Anthropic官方客户端库桥接代理和现实世界系统的API。在2025年广泛采用于各个平台,MCP通过卸载执行、提高模块化和可扩展性,扩展了早期的函数调用范式。

CVE-2025-53967

在我们的研究中,我们发现了一个命令注入漏洞,该漏洞发生在构建用于向Figma API端点发送流量的命令行指令期间。

RCE的攻击链可以通过下面的简单流程图来解释:

图2:攻击流程链

此漏洞的利用分为两个步骤:会话建立和工具执行。

会话建立

根据MCP协议,客户端向MCP端点发送初始化请求,以在响应头中接收mcp-session-id。此ID需要用于进一步与MCP服务器通信和使用任何工具。

虽然这是一种会话建立机制,但不应将其与任何类型的身份验证机制混淆。

图3:会话初始化请求

工具执行

然后,客户端向MCP服务器发送JSONRPC请求,方法为tools/call。可以访问以下任何工具:

  • get_figma_data:获取整个Figma文件的布局信息
  • download_figma_images:基于图像或图标节点的ID下载Figma文件中使用的SVG和PNG图像

图4:触发RCE的恶意负载

主要问题出现在文件src/utils/fetch-with-retry.ts中(见图5)。函数fetchWithRetry首先尝试使用标准fetch API检索内容。如果失败(通常由于网络问题、SSL错误或公司代理限制),它会回退到通过child_process.exec执行curl命令。

不幸的是,这种回退机制引入了命令注入漏洞。由于curl命令是通过将URL和头值直接插入shell命令字符串来构建的,恶意行为者可以精心设计特制的URL或头值来注入任意shell命令。这可能导致在主机上执行远程代码。

图5:代码的易受攻击部分

生成的恶意URL如下所示:

1
https://api.figma.com/v1/images/lCxqriAJAgdWkv5feXYelF?&format=pdf&ids=0:6"|touch /pwn; #?ids=0:6&format=png&scale=1

并将以运行MCP服务器的权限执行命令。

如果MCP使用SSE模式,它也以类似方式易受攻击。

需要注意的是,app.listen()在使用时没有指定主机名。因此,Express服务器默认绑定到0.0.0.0或::,使其可在所有网络接口上访问。这种行为可能具有误导性,因为开发者可能假设服务器只能通过localhost访问。

值得注意的是,这种隐式行为文档记录不足,其安全影响先前已在此处提出。

在易受攻击的MCP服务器的上下文中,此默认设置无意中扩大了攻击面,可能使服务器暴露于超出其预期用途所需的外部访问。

虽然使用STDIO作为传输形式可以通过要求本地进程访问而不是网络暴露来降低可利用性,但并不能消除风险。攻击面从直接网络请求转移到提示注入向量。易受攻击的MCP仍然可以被间接触发,例如,如果LLM受到提示注入的影响,导致其向MCP发送危险请求。

利用

同一网络上的远程威胁行为者(如公共Wi-Fi上的恶意行为者或受损的公司设备)可以通过向易受攻击的MCP发送一系列请求来利用此漏洞。

此外,通过DNS重绑定,恶意行为者可以通过诱骗受害者访问特制网站来利用此漏洞,绕过原本可以保护本地MCP的边界。

考虑到服务器的默认本地部署模型以及将AI工具直接集成到开发环境中的日益增长趋势,此攻击向量特别危险。通过滥用对本地工具的信任,攻击者可以:

  • 在您的系统上保持持久性而不引发警报
  • 泄露敏感资产,如源代码、设计文件或API密钥
  • 通过向其提供被操纵的设计输入来毒化AI生成的代码
  • 横向移动到网络上的其他系统
  • 在开发机器具有广泛访问权限的环境中部署勒索软件或破坏性负载

缓解与建议

该漏洞已在0.6.3版本中修补。我们建议用户立即更新到固定版本,甚至迁移到官方Figma MCP服务器,该服务器提供类似功能并由平台积极维护。

为防范此类漏洞和更广泛的威胁,Imperva的Web应用程序防火墙和API安全提供行业领先的保护,防御包括命令注入攻击在内的各种攻击,提供实时检测、阻止和缓解,以保护应用程序免受利用。

最终思考

随着AI驱动的开发工具不断演进和获得采用,安全考虑必须与创新保持同步至关重要。此漏洞是一个鲜明的提醒,即使是旨在本地运行的工具也可能成为攻击者的强大入口点。我们敦促AI工具链的开发者和维护者将安全视为基础要求,而不是事后考虑。

时间线

  • 2025年7月8日 - 首次联系项目维护者披露漏洞
  • 2025年7月15日 - 维护者确认收到报告
  • 2025年7月16日 - 向维护者提交完整技术报告
  • 2025年7月22日 - 创建公共拉取请求,暴露漏洞细节
  • 2025年8月13日 - 合并部分修复,仅解决部分问题
  • 2025年9月29日 - 在0.6.3版本中发布完整修复
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计