严重性:严重 | CVSS v3.1:10.0(最高) | 状态:正在被积极利用
React2Shell 是 React 服务器组件 (RSC) 中的一个关键安全漏洞——RSC 是一项现代功能,允许 React 在服务器而非浏览器上运行部分 Web 应用。
该漏洞使得互联网上的任何攻击者——无需登录、无需特殊访问权限、也无需事先了解你的系统——只需向你的服务器发送一个恶意 HTTP 请求,即可在其上运行任意代码。这意味着攻击者可以窃取数据、安装恶意软件、用勒索软件锁定你的文件,或者完全控制你的服务器。
打个比方:你的服务器有一扇门,本应只为受信任的访客打开,但事实证明——任何人都可以通过特定的敲门方式进入。
| 属性 | 值 |
|---|---|
| CVE 编号 | CVE-2025-55182(也称为 React2Shell) |
| 严重性 | 严重 — 远程代码执行 (RCE) |
| CVSS v3.1 评分 | 10.0 / 10.0(最高可能分数) |
| CVSS v4 评分 | 9.3 / 10.0 |
| 弱点类型 | CWE-502 — 不可信数据的反序列化 |
| 攻击方法 | 单个 HTTP POST 请求,无需身份验证 |
| 发现者 | Lachlan Davidson(安全研究员) |
| 披露日期 | 2025 年 12 月 3 日 |
| 漏洞利用状态 | 公开可用 — 正在被攻击者积极利用 |
| 相关 CVE | CVE-2025-66478(Next.js — 确认为重复漏洞) |
react-server-dom-webpack — versions 19.0.0, 19.1.0, 19.1.1, 19.2.0 react-server-dom-parcel — versions 19.0.0, 19.1.0, 19.1.1, 19.2.0 react-server-dom-turbopack — versions 19.0.0, 19.1.0, 19.1.1, 19.2.0
### 受影响框架
| 框架 / 工具 | 影响范围 |
|--------------------------|--------------------------------------------------|
| **Next.js 15.x – 16.x** | 仅 App Router — Pages Router **不受**影响 |
| **React Router RSC** | 仅 unstable / preview 频道 |
| **Redwood SDK** | 仅 RSC 模式 |
| **Waku** | 所有启用 RSC 的版本 |
| **Expo** | 仅 RSC 预览构建 |
| **Vite RSC 插件** | 所有集成方式 |
| **Parcel RSC 插件** | 所有集成方式 |
| **任何自定义 RSC 设置** | 任何使用 RSC Flight 反序列化的服务器 |
> ⚠️ **重要:** 即使您在应用中未显式使用 Server Actions 或 Server Functions,只要启用了 React Server Components,您仍然存在漏洞。
> ✅ **不受影响:** 仅使用 Pages Router 的应用,或完全无服务端 React 的应用。
---
## 为什么这个漏洞如此危险?
三个原因使 React2Shell 异常严重:
1. **无需身份验证。** 互联网上的任何人都可以尝试此攻击。无需账户、令牌或事先访问权限。
2. **在默认安装下即可触发。** 一个使用 `create-next-app` 创建的全新 Next.js 应用——零自定义配置——可立即被利用。开发者无需做任何错误操作就会产生漏洞。
3. **近乎 100% 的可靠性。** 安全研究人员确认,在未打补丁的服务器上,该漏洞几乎每次都能成功利用。
---
## 攻击是如何运作的?
### 根本原因——通俗解释
当您的 React 服务器从客户端接收数据时,它会处理(反序列化)这些数据以了解下一步操作。问题在于 React **从不检查数据是否安全或合法**——它盲目信任任何到达的数据。
攻击者通过发送精心构造的数据来利用这一点,劫持服务器内部的 JavaScript 行为,最终注入并执行自己的代码。
### 技术解释
该漏洞利用了一种称为**原型污染**的技术:
1. 攻击者向任意 RSC 端点发送一个精心构造的 HTTP POST 请求(无需特定 URL)。
2. React Flight 协议解析器在没有任何结构验证的情况下处理该载荷。
3. 恶意载荷污染了 `Object.prototype.then`——这是所有其他对象继承的基础 JavaScript 对象。
4. 这使攻击者能够访问 JavaScript 的 `Function` 构造函数。
5. 攻击者利用 `Function` 构造函数以 Node.js 服务器进程的权限执行任意代码。```
Step 1 — Attacker sends crafted HTTP POST
↓
Step 2 — React deserializes payload blindly
↓
Step 3 — Object.prototype.then is hijacked (prototype pollution)
↓
Step 4 — Function constructor is accessed
↓
Step 5 — Attacker's code runs on the server
↓
Step 6 — Attacker has full server control
// This is a simplified version of the vulnerable code path inside React function parseFlightRequest(req) { const flight = req.body;
// ❌ NO validation — the server trusts whatever arrives
const decoded = dangerousDeserialize(flight); // Attack happens here
// If the attacker controls decoded.action → RCE
return executeServerReference(decoded.action);
}
### 攻击示例```http
POST /?flight=1 HTTP/1.1
Content-Type: text/plain
{
"status": "resolved_model",
"$1:__proto__:then": "node:process.mainModule.require('child_process').execSync('id > /tmp/rce')",
"_formData.get": "$1:constructor:constructor"
}
🛠️ 待完成
logdate Beacon 间隔,如果启用,流量将以固定时间间隔发生,长度不同,带有随机抖动。本项目仅用于教育/研究目的。禁止将此代码用于任何违法行为。使用风险由您自行承担。请勿用于任何未经授权的系统/网络。```bash
curl -X POST https://target.com/react?flight=1
-H "Content-Type: text/plain"
--data '["$ACTION_REF","proto","constructor","<attacker_payload>"]'
> 🚫 **法律警告:** 请勿将此工具用于任何您不拥有或未经明确书面授权测试的系统。
---
## 已修复版本 — 立即更新
### React RSC 包
| 包 | 已修补版本 |
|-------------------------------|--------------------------------|
| `react-server-dom-webpack` | 19.0.1, 19.1.2, **19.2.1+** |
| `react-server-dom-parcel` | 19.0.1, 19.1.2, **19.2.1+** |
| `react-server-dom-turbopack` | 19.0.1, 19.1.2, **19.2.1+** |
> 💡 **建议:** 升级至 **19.2.3** 还可修复相关的后续漏洞(CVE-2025-55183、CVE-2025-55184、CVE-2025-67779)。
### Next.js
| 您的版本 | 升级至 |
|----------|--------------|
| 13.x / 14.x | **14.2.35** |
| 15.0.x | **15.0.5** |
| 15.1.x | **15.1.9** |
| 15.2.x | **15.2.6** |
| 15.3.x | **15.3.6** |
| 15.4.x | **15.4.8** |
| 15.5.x | **15.5.7** |
| 16.0.x | **16.0.7** |
---
## 如何保护自己 — 分步指南
**按顺序**执行以下步骤。步骤 1 和 2 是必须的,其余步骤可增加额外的防御层。
### 第 1 步 — 升级 React 包(最重要)```bash
# Check your current version
npm list react-server-dom-webpack
# Upgrade to the latest patched version
npm install react-server-dom-webpack@latest
npm install react-server-dom-parcel@latest
npm install react-server-dom-turbopack@latest
npm install next@X
### 第三步 — 添加 WAF 防护(纵深防御)
| 云服务提供商 | 需执行的操作 |
|-------------------------|-------------------------------------------------------------------------------------------|
| **AWS WAF** | 启用 `AWSManagedRulesKnownBadInputsRuleSet` v1.24+ — 包含 React2Shell 规则 |
| **AWS Network Firewall** | 启用主动威胁防御托管规则(通过 MadPot 自动更新) |
| **Google Cloud Armor** | 通过控制台部署 React2Shell 规则集 |
| **Cloudflare** | WAF 规则 `react2shell-cve-2025-55182` — Pro+ 计划自动应用 |
> ⚠️ **仅靠 WAF 规则是不够的。** 它们无法阻止所有载荷变种。修补软件包才是唯一彻底的修复方案。
### 第四步 — 如无法立即修补
- 临时**禁用服务器上的 RSC Flight 端点**。
- 这将在您应用补丁前减少攻击面。
### 第五步 — 检查是否已遭攻击
- **审计服务器日志**,查找在打补丁日期前发往 RSC/Flight 端点的可疑 POST 请求。
- 查找异常的外发连接、新用户账户或意外进程。
### 第六步 — 假设已被入侵的预防措施
- **轮换所有机密信息** — API 密钥、数据库凭据、会话令牌、环境变量。
- 将所有运行过易受攻击版本的服务器视为可能已被攻陷。
---
## 真实世界的攻击活动
### 规模(截至 2026 年 4 月)
| 指标 | 数值 |
|------------------------|-------------------------------------|
| 总攻击会话数 | **超过 810 万**(GreyNoise) |
| 每日攻击量 | **每天 300,000 – 400,000** 次请求 |
| 峰值日攻击量 | **超过 430,000**(2025 年 12 月下旬) |
| 唯一攻击者 IP | **8,163** 个,遍及 101 个国家 |
| 首次感染时间 | 服务器暴露后 **2 分钟** |
仅 AWS 就占观察到的攻击基础设施的三分之一以上 — 这意味着攻击者主要通过云托管服务器大规模发动这些攻击。
### 谁在攻击?
已确认多个不同威胁行为者组织正在利用此漏洞:
**中国关联方(国家支持的)**
- **Earth Lamia**(Google 也将其追踪为 UNC5454)— 与中国国家安全部 (MSS) 有关联
- **Jackpot Panda** — 由 AWS 和 Google 威胁情报团队共同识别
- 同时还在平行利用其他近期漏洞
**伊朗关联方**
- Google GTIG 于 2025 年 12 月观察到伊朗背景的攻击者
**朝鲜 (DPRK)** ⚠️ *新增 — 2026 年 1 月*
- 与 **Contagious Interview** 活动相关的指标(一项长期针对软件开发者的朝鲜行动)
- 部署 **EtherRAT** — 一种使用**基于区块链的命令与控制基础设施**的新型后门,使得通过标准 IP/域名封锁极难防御
**网络犯罪分子 / 经济动机驱动者**
- 勒索软件运营者已被确认使用 React2Shell 进行初始访问 ⚠️ *新增 — 2026 年 12 月*
- 至少有一例记录了在初始利用后 **不到一分钟** 内即部署了勒索软件
- 加密货币挖矿 (XMRig) 在机会主义活动中广泛部署
### 野外观察到的恶意软件
| 恶意软件 / 工具 | 功能 | 使用者 |
|----------------------------|--------------------------|----------------------------------|
| SNOWLIGHT | 下载更多恶意软件 | Earth Lamia(中国) |
| MINOCAT | 创建隐蔽隧道 | Earth Lamia(中国) |
| HISONIC | 持久化后门 | Earth Lamia(中国) |
| COMPOOD | 重启后仍存活 | Earth Lamia(中国) |
| **EtherRAT** ⚠️ *新增* | 区块链 C2 后门 | 朝鲜 / Contagious Interview |
| XMRig | 挖掘加密货币 | 多个团体 |
| Cobalt Strike | 远程控制框架 | "emerald" 和 "nuts" 活动 |
| Sliver / Nezha | C2 框架 | "emerald" 活动 |
| Fast Reverse Proxy (FRP) | 网络隧道 | 多个团体 |
| Secret-Hunter | 窃取凭据 | "nuts" 活动 |
| Mirai / Rondo 僵尸网络 | DDoS / 持久化 | 机会主义行为者 |
| MeshAgent(远程管理工具) | 远程管理 | 多个团体(持久化) |
| **内存中 Next.js 网页 shell** ⚠️ *新增* | 隐蔽持久化 | 多个行为者(GTIG 已确认) |
> 💡 **什么是内存中网页 shell?** 它是一种完全在服务器内存中运行的后门——不在磁盘上留下任何文件,因此标准杀毒软件或文件扫描工具极难检测到它。
> 💡 **什么是基于区块链的 C2?** EtherRAT 不通过正常的 IP 地址或域名(这些可以被封锁)连接到攻击者服务器,而是从区块链交易中接收指令——这是一种去中心化的系统,不容易被关闭或封锁。
---
## 检测工具
### Microsoft Defender for Cloud
安全资源管理器库中提供了两个专用模板:
- *暴露在互联网上的容器,运行着对 React2Shell 存在漏洞的容器镜像 — CVE-2025-55182*
- *暴露在互联网上的虚拟机,存在 React2Shell 漏洞 — CVE-2025-55182*
Microsoft 安全暴露管理还能自动映射您整个云基础设施中的 React2Shell 攻击路径。
### GreyNoise
提供了可用的阻断模板:**React Server Components Unsafe Deserialization CVE-2025-55182 RCE Attempt**
完整的攻击者指纹数据集(ASN、JA4T、JA4H)已公开可用:```
github.com/GreyNoise-Intelligence/gn-research-supplemental-data/tree/main/2026-01-06-react2shell
使用 运行时漏洞分析 — 通过 CVE-2025-55182 过滤,识别环境中存在漏洞的 React 或 Next.js 包。
披露后,约有 145 个虚假且无法正常运行的利用工具 在网上传播——其中许多由 AI 生成。使用未经验证的工具的风险:
仅使用来自经过验证、社区可信来源的扫描工具。
Nov 29, 2025 Lachlan Davidson privately reports the vulnerability to Meta / React team
Dec 03, 2025 Patched packages published to npm CVE-2025-55182 publicly disclosed Vercel deploys runtime-level protections (not just WAF) Cloudflare WAF rules activated Mass automated scanning begins within hours of disclosure
Dec 04, 2025 First working public exploit released by Moritz Sanft Default create-next-app confirmed exploitable with no changes
Dec 05, 2025 Discoverer Lachlan Davidson releases his own PoC (~30 hours post-disclosure) Active exploitation observed in Datadog and Rapid7 honeypots Darktrace honeypot infected in 2 minutes after deployment
Dec 05–08 "emerald" and "nuts" malware campaigns deploy Cobalt Strike, Sliver, Nezha, FRP, Secret-Hunter; Mirai and Rondo botnets also active 362 unique attacker IPs observed; 152 with identifiable payloads
Dec 08, 2025 Rapid7 confirms exploitation using the public PoC
Dec 11, 2025 Follow-on CVEs disclosed: CVE-2025-55183 and CVE-2025-55184
Dec 12, 2025 Google GTIG identifies China-nexus threat clusters Iran-nexus activity also flagged
Dec 15, 2025 Microsoft confirms hundreds of compromised machines Coin miners and backdoors (SNOWLIGHT, HISONIC) deployed at scale Microsoft Defender for Cloud templates published
Dec 17, 2025 ⚠️ [NEW] Ransomware operators confirmed using React2Shell for initial access — malware deployed in under one minute post-exploitation (Reported by BleepingComputer, based on S-RM and Microsoft Defender)
Dec 29, 2025 AWS formally attributes activity to Earth Lamia and Jackpot Panda AWS Network Firewall Active Threat Defense rules updated
Jan 06, 2026 GreyNoise publishes full attacker fingerprint dataset (8.1M+ attack sessions recorded)
Jan 13, 2026 ⚠️ [NEW] IronGate Security identifies DPRK (North Korea) exploitation Indicators linked to Contagious Interview campaign EtherRAT (blockchain C2 backdoor) deployed post-exploitation Attacker staging involves downloading Node.js runtime before payload
Jan 26, 2026 Additional DoS vulnerability CVE-2026-23864 disclosed and patched
Mar 04, 2026 Dynatrace advisory updated with latest remediation guidance
---
## 参考文献
| 来源 | 链接 |
|---------------------------------|-----------------------------------------------------------------------------------------------|
| React 官方安全公告 | https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components |
| React2Shell(发现者) | https://react2shell.com |
| Next.js 安全公告 | https://nextjs.org/blog/CVE-2025-66478 |
| Wiz 深度分析 | https://www.wiz.io/blog/critical-vulnerability-in-react-cve-2025-55182 |
| 微软安全博客 | https://www.microsoft.com/en-us/security/blog/2025/12/15/defending-against-the-cve-2025-55182-react2shell-vulnerability-in-react-server-components/ |
| Google 威胁情报 | https://cloud.google.com/blog/topics/threat-intelligence/threat-actors-exploit-react2shell-cve-2025-55182 |
| AWS 安全公告 | https://aws.amazon.com/security/security-bulletins/AWS-2025-030/ |
| AWS China-Nexus 归因 | https://aws.amazon.com/blogs/security/china-nexus-cyber-threat-groups-rapidly-exploit-react2shell-vulnerability-cve-2025-55182/ |
| Palo Alto Unit 42 | https://unit42.paloaltonetworks.com/cve-2025-55182-react-and-cve-2025-66478-next/ |
| Trend Micro 研究 | https://www.trendmicro.com/en_us/research/25/l/CVE-2025-55182-analysis-poc-itw.html |
| GreyNoise 观测网格 | https://www.greynoise.io/blog/cve-2025-55182-react2shell-opportunistic-exploitation-in-the-wild-what-the-greynoise-observation-grid-is-seeing-so-far |
| Darktrace 分析 | https://www.darktrace.com/blog/react2shell-how-opportunist-attackers-exploited-cve-2025-55182-within-hours |
| Dynatrace 安全公告 | https://www.dynatrace.com/news/blog/cve-2025-55182-react2shell-critical-vulnerability-what-it-is-and-what-to-do/ |
| BleepingComputer — 勒索软件 | https://www.bleepingcomputer.com/news/security/critical-react2shell-flaw-exploited-in-ransomware-attacks/ |
| IronGate — 朝鲜(DPRK)活动 | https://www.irongatesecurity.com/ironintel/react2shell-cve-2025-55182 |
| NVD 条目 | https://nvd.nist.gov/vuln/detail/CVE-2025-55182 |
---
**漏洞致谢:**
由 **Lachlan Davidson** 于 2025 年 11 月 29 日首次发现并负责任地披露。
---
*最后更新:2026 年 4 月 16 日*
*本文档仅供教育和防御性安全目的使用。*
| 参数 | 类型 | 默认 | 范围 | 描述 |
|---|
SHELL_NAME | string | revshell | 重命名 | 逆向 Shell 文件名 |
INVERT_EXE_NAME | bool | true | 切换开关 | 以 explorer.exe 模式重命名 EXE |
INVERT_SHELL_NAME | bool | true | 切换开关 | 以 svchost 模式重命名 Shell |
ENABLE_SCRIPTS | bool | true | 切换开关 | 通过 PowerShell 登录脚本 (PERSIST) |
ENABLE_EXE | bool | true | 切换开关 | 通过禁用反病毒软件的 EXE 实现持久化 (PERSIST) |
| 规则 | 作者 | 描述 | 来源 |
|---|
| Turned on all lights | @angry-bender | 通过登录脚本实现持久化 | SIGMA |
| Turned on EXE | @angry-bender | 通过禁用反病毒软件的 EXE 实现持久化 | SIGMA |
| CVE ID | 描述 | 严重程度 | 状态 |
|---|
| CVE-2025-55182 | RSC 远程代码执行 — 本漏洞 | 10.0 | 已修复 |
| CVE-2025-66478 | Next.js 下游 RCE(已确认重复) | 10.0 | 已拒绝 — 重复 |
| CVE-2025-55183 | 通过 RSC 的源代码泄露 | 5.3 | 在 19.2.2+ 中修复 |
| CVE-2025-55184 | RSC 解析器中的无限循环导致拒绝服务 | 7.5 | 在 19.2.2+ 中修复 |
| CVE-2025-67779 | DoS — CVE-2025-55184 的不完整修复 | 7.5 | 在 19.2.3+ 中修复 |
| CVE-2026-23864 | 额外的 RSC 拒绝服务(2026 年 1 月) | 7.5 | 已修复 |