-
-
[分享]MCP协议安全:mcp-remote存在远程代码执行漏洞(CVE-2025-6514)
-
发表于: 1天前 158
-
| 漏洞名称 | mcp-remote存在远程代码执行漏洞 |
| 产品名称 | mcp-remote |
| 产品简介 | mcp-remote是一个MCP代理工具,被Cloudflare、Auth0、Hugging Face等平台广泛使用 |
| 影响版本 | V0.0.5~V0.1.15 |
| 漏洞编号 | CVE-2025-6514 |
| 漏洞成因 | mcp-remote对authorizationServerUrl的不安全处理,导致攻击者能够通过命令注入实现远程代码执行 |
| 危害等级 | 高危 |
| 利用条件 | 受影响的mcp-remote请求外部未知MCP服务器 |
| 漏洞危害 | 攻击者能够远程接管目标服务主机 |
| 安全建议 | 1.安全自查;2.及时升级mcp-remote版本到最新;3.限制MCP服务器的连接范围;4.强制加密通信 |
mcp-remote 是一款广泛使用的 MCP 代理工具,其应用场景覆盖 Cloudflare、Auth0、Hugging Face 等知名平台,累计下载及使用次数已超 43 万次。
该工具目前存在一项高危安全漏洞,编号为 CVE-2025-6514,CVSS 评分为 9.6/10(满分 10 分),显示其具备极高危险性。
具体而言,攻击者可通过构造恶意 MCP 服务,当受害者连接该恶意服务时,漏洞会被触发,允许攻击者执行任意命令,极端情况下可实现对受害者系统的完全接管。
01组件概述
mcp-remote 是一个MCP代理工具,可以让原本只支持本地连接的MCP客户端能够与远程MCP服务器进行交互。
目前,mcp-remote作为MCP生态的重要组成部分,下载量已超过 43 万次,其应用场景覆盖 Cloudflare、Auth0、Hugging Face 等知名平台。

(图1 mcp-remote实现本地和远程MCP服务器通信)
02漏洞描述
mcp-remote 版本V0.0.5 ~ V0.1.15 存在远程代码执行漏洞(CVE-2025-6514),该漏洞源于mcp-remote 对authorizationServerUrl的不安全处理逻辑。
具体来说,当远程 MCP 服务器返回 401(未授权)状态时,mcp-remote 会启动授权流程,本意是引导用户完成身份验证。但在此过程中,工具会直接将服务器返回的 authorizationServerUrl作为系统命令参数执行,且未做任何安全校验。
这使得当mcp-remote版本在0.0.5至0.1.15之间时,攻击者可以通过构造包含恶意命令的authorizationServerUrl实现攻击。
03漏洞危害
攻击者通过实施远程代码执行漏洞(CVE-2025-6514),可能导致的危害如下:
1. 实现未授权的代码执行;
2. 在目标服务器中设置后门,窃取重要敏感信息;
3. 破坏系统运行状态,如触发系统崩溃等。
04漏洞利用场景
透过mcp-remote的业务流程及漏洞描述,我们可以明确相关的两个漏洞利用场景。
1. mcp-remote 连接到外部恶意的MCP服务器
攻击者可以事先在MCP服务管理器中部署一个恶意MCP服务,等待“鱼儿”上钩。当企业内部工作人员通过mcp-remote去连接该MCP 服务时,就会被漏洞利用。这类攻击场景,类似钓鱼邮件、水坑攻击,极易让攻击者绕过企业外部防火墙进入到内网,然后实施破坏。

(图2 mcp-remote连接远程恶意MCP服务器)
2. mcp-remote与远程MCP服务器之间的流量被劫持
由于mcp-remote与远程MCP服务器之间的通信协议默认为http,而http流量是未加密的,极易被攻击者通过流量抓取等手段劫持被篡改,实施中间人攻击。

(图3 mcp-remote与远程MCP服务器通信流量被劫持)
05漏洞成因刨析
本例中分析的组件源码版本为v0.1.12。
在mcp-remote/dist/chunk-CYX6C3U3.js文件中,可以看到当event.code等于401时,会触发未授权处理流程,即进入_authThenStart()方法。

而在_authThenStart()方法中的关键函数是auth()。auth()函数是漏洞利用并触发的关键流程。

auth()函数如下所示,其主要流程是处理 OAuth 授权逻辑,核心目的是完成客户端与授权服务器之间的身份验证流程,最终返回授权状态或引导用户跳转授权页面。
整体流程可以分为如下几个关键步骤:
1. 确定authorizationServerUrl;(authorizationServerUrl的值从远程MCP服务器响应内容中获得)
2. 通过discoverOAuthMetadata从authorizationServerUrl获取OAuth 相关元数据metadata;
3. 通过Promise.resolve 获得 provider.clientInformation()的数据,即MCP客户端的信息;
4. 基于前面的信息,通过registerClient来注册获取授权;
5. 如果授权不成功,则刷新token,继续后续流程;
6. 调用 startAuthorization 生成授权页面 URL(authorizationServerUrl)
7. 通过provider.redirectToAuthorization 引导用户跳转到授权页面。

漏洞代码出现在上述的6、7步,具体如下所示。

其中 startAuthorization ()获取元数据metadata的authorization_endpoint,并生成授权url。

其中provider.redirectToAuthorization ()会采用open方法直接打开前面生成的授权url。

open 方法用来执行系统命令,但是这里缺少对输入参数的过滤,这导致如果authorization_endpoint包含一个恶意命令,系统也会执行。
这里对前面的分析进行总结,可得到如下结论:
本地MCP通过mcp-remote访问远程MCP服务,在初始化访问过程中如果远程MCP服务返回401,则会触发mcp-remote的auth()函数处理未授权处理逻辑。auth()函数从远程MCP服务中通过discoverOAuthMetadata获得元数据metadata,其中包含authorizationServerUrl,然后通过startAuthorization基于authorizationServerUrl直接构造授权URL,最后通过provider.redirectToAuthorization使用系统函数open来执行授权URL。

(图4 mcp-remote漏洞利用流程)
06安全建议
基于上述分析,我们建议相关企业应立即采取以下措施:
首先,开展全面自查,确保自身的MCP协议不受到该漏洞影响;
其次,及时升级mcp-remote 组件,确保其版本不低于0.1.16;
然后,本地MCP在连接远程MCP服务时,应确保MCP服务器地址是可信的;
最后,由于MCP通信的协议为HTTP,应强制加密,避免中间人攻击。
07参考资料
d90K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6B7k6Y4u0G2k6#2)9J5k6h3y4G2L8g2)9J5c8X3u0D9L8$3N6Q4x3V1j5J5x3o6t1#2i4K6u0V1y4U0f1I4y4q4)9J5k6r3y4J5K9i4c8A6j5$3q4D9i4K6u0V1L8h3y4H3i4K6u0V1M7X3g2E0L8%4c8W2i4K6u0V1M7X3y4W2i4K6u0V1N6Y4g2D9L8X3g2J5j5h3u0A6L8r3W2@1P5b7`.`.
96fK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6J5k6i4y4W2j5i4u0U0K9q4)9J5k6h3A6X3M7X3!0Y4i4K6u0W2j5$3!0E0i4K6u0r3N6Y4g2D9L8X3g2J5j5h3u0A6L8r3W2@1K9h3g2K6i4K6u0r3L8h3y4H3i4K6u0V1M7X3g2E0L8%4c8W2i4K6u0V1j5$3!0E0L8h3q4F1k6q4)9J5k6r3W2F1K9X3g2U0N6r3W2G2L8W2)9J5k6s2u0U0k6g2)9J5k6r3A6X3M7$3q4Q4x3X3b7J5x3o6t1#2i4K6u0V1x3o6l9I4x3U0V1H3z5o6b7@1
结语
mcp-remote 作为本地LLM客户端通信远程MCP服务器并获取工具的中间跳板,其存在CVE-2025-6514漏洞,暴露出当前MCP生态尚存在安全短板。
mcp-remote应用十分广泛,从业务层面上讲,其推动了大模型应用的落地,但是mcp-remote的安全漏洞也可能异化为跨场景攻击通道,导致安全风险向关联平台业务链渗透,威胁整体安全性。
价值层面,该漏洞暴露工具普及度与安全强度的失衡 ——连接能力的规模化需以同等安全底座为前提。修复不仅是技术补丁,更是维护 MCP 生态远程化信任基石的关键,确保连接价值与风险可控的动态平衡。