黑客正针对全球React Native开发者发起定向攻击,利用Metro开发服务器中的CVE-2025-11953(别称Metro4Shell,CVSS评分9.8)高危漏洞,向Windows、Linux(及macOS)系统投放恶意载荷。
在Windows 环境下,未授权攻击者可通过发送精心构造的POST请求执行任意操作系统命令;在Linux和macOS系统中,该漏洞允许攻击者在有限参数控制下运行任意可执行文件。
Metro是React Native项目的默认JavaScript打包工具,是应用开发阶段构建、热重载和调试的核心组件。
CVE-2025-11953 (Metro4Shell) in React Native Metro Server Enables RCE
(上图:Metro4Shell漏洞概念图,展示React Native Metro服务器面临的风险)
漏洞成因与影响范围
默认情况下,Metro服务器会绑定到所有网络接口(0.0.0.0),并开放仅供本地调试使用的HTTP端点/open-url。该端点接收POST请求中的URL参数后,未经充分安全清理就直接传递给系统的open()函数,导致命令注入漏洞。
漏洞影响**@react-native-community/cli-server-api** 的4.8.0至20.0.0-alpha.2版本。官方已在20.0.0及后续版本中完成修复。
该漏洞由JFrog安全团队于2025年11月初披露,随后多个概念验证(PoC)利用工具迅速在GitHub等平台出现。
Metro4Shell真实攻击活动
2025年12月21日,威胁行为者开始利用该漏洞发起实际攻击,活动被命名为Metro4Shell。VulnCheck的蜜罐系统记录到后续攻击发生在2026年1月4日和1月21日,攻击者持续投放相同恶意载荷。
攻击者已成功在Linux和Windows平台投递高级恶意载荷,证明Metro4Shell已成为一种切实可行的跨平台初始访问手段。

Metro4Shell: Exploitation of React Native's Metro Server in the Wild | Blog | VulnCheck
(上图:Metro4Shell漏洞利用时间线,展示从披露到真实攻击的过程)
攻击载荷执行链路
攻击者将经过Base64编码 的PowerShell(Windows)或对应Shell(Linux)恶意载荷隐藏在HTTP POST请求体中,发送至暴露在公网的Metro服务器/open-url端点。
载荷解码并启动后,会依次执行以下恶意操作:
- 禁用防护:调用Add-MpPreference等命令,将当前工作目录和临时目录加入Microsoft Defender排除列表,躲避杀毒检测;
- 获取下一阶段载荷:与攻击者控制的C2服务器建立TCP连接,发送GET请求下载后续恶意程序;
- 写入文件:将接收的数据保存为临时目录下的可执行文件;
- 执行载荷:运行下载的二进制文件,并附带攻击者指定的参数。
Windows平台投放的载荷是一个基于Rust语言 开发、经UPX加壳处理的二进制文件,内置基础反分析逻辑。同一C2服务器上还存放Linux版本恶意程序,显示攻击者已做好跨平台准备。
暴露规模与风险警示
扫描数据显示,目前暴露在公网环境中的React Native Metro服务器约有3500台。尽管该漏洞已被持续利用超过一个月,但在部分漏洞利用预测评分系统中,其EPSS风险评分仍相对较低。
研究人员(VulnCheck)强烈提醒:"企业切不可等待该漏洞被列入CISA KEV目录、厂商发布正式通报或行业形成广泛共识后,才采取防护措施。"
立即防护建议
- 升级组件 :将@react-native-community/cli更新至20.0.0或更高版本。
- 限制访问:启动Metro服务器时使用--host 127.0.0.1,仅允许本地访问,避免绑定公网接口。
- 开发环境加固:不要在生产或公网环境中运行开发服务器;使用防火墙或VPN严格限制默认端口(通常8081)的外部访问。
- 持续监控:定期扫描开发机是否暴露Metro端点,启用网络流量日志和异常进程监控。
React Native作为主流跨平台框架,拥有海量开发者。Metro4Shell的出现再次提醒我们:开发工具的调试接口一旦暴露在互联网上,可能瞬间成为攻击者的入口。开发者应尽快自查环境,优先升级并遵循最小暴露原则,降低被入侵风险。