紧急插播:CVSS 10.0 满分漏洞!你的 Next.js 项目可能正在裸奔

🚨 紧急插播:CVSS 10.0 满分漏洞!你的 Next.js 项目可能正在裸奔(含保姆级修复指南)

⚠️ 高能预警:这不是演习!这不是演习!

大家好,我是 你的名字。今天不聊架构,不聊源码,咱们来聊聊保命的事儿。

就在 2025 年 12 月初,安全圈炸锅了。React 和 Next.js 生态爆出了一个核弹级漏洞(CVE-2025-66478 & CVE-2025-55182),CVSS 评分直接拉满到了 10.0 。什么概念?这意味着攻击者不需要登录、不需要复杂的权限 ,动动手指发个 HTTP 请求,就能在你服务器上执行任意代码 (RCE)。

兄弟们,赶紧放下手里的咖啡,跟我一起检查下你的线上服务吧!


1. 发生了什么?

简单说,就是 React Server Components (RSC) 的通信协议(Flight 协议)里,出了一个反序列化的 Bug。

  • 漏洞编号:CVE-2025-66478 (Next.js) / CVE-2025-55182 (React)
  • 危险等级 :🔥 Critical (RCE)
  • 谁在射程内 :
    • 只要你用了 App Router。
    • 或者你用了 React Server Components。
    • 特别是 Next.js 15.x / 16.x 的早期版本,以及 Next.js 14.x 的部分 Canary 版本。
    • 划重点 :默认配置下的 create-next-app 项目如果是上述版本,直接中招。

如果不修,黑客不仅能看你的环境变量(数据库密码、API Key),甚至能直接接管你的服务器挖矿。😱


2. 赶紧自查!(手把手教你)

别慌,先确认下自己是不是"天选之子"。连上你的服务器,或者在本地项目里跑一下:

第一步:看一眼 package.json

bash 复制代码
# 看看你显式安装的版本
cat package.json | grep next

第二步:看一眼实际安装版本(这步很关键!)

有时候 package.json 里写的是 ^15.0.0,但实际 node_modules 里跑的可能是个有漏洞的小版本。

bash 复制代码
# 查查户口本
npm list next
# 或者 yarn 党
yarn list next

🚨 死亡名单

如果你看到版本号落在下面这些区间,请立即开启"一级战备"状态:

  • ❌ Next.js 15.x 全系(未打补丁前)
  • ❌ Next.js 16.x 预览版(未打补丁前)
  • ❌ Next.js 14.x 的 Canary 版本(尤其是 >= 14.3.0-canary.77)

3. 怎么救?(Ctrl+C, Ctrl+V 就能用)

官方响应很快,补丁已经发了。升级是唯一靠谱的方案,别整那些花里胡哨的 WAF 规则,容易被绕过。

方案 A:我是稳定党 (推荐) 🚀

如果你的项目没什么魔改依赖,直接升到最新的稳定版 Patch。

bash 复制代码
# npm 党
npm install next@latest react@latest react-dom@latest

# yarn 党
yarn add next@latest react@latest react-dom@latest

# pnpm 党 (yyds)
pnpm add next@latest react@latest react-dom@latest

方案 B:我是激进党/Canary 依赖者 🧪

有些兄弟为了尝鲜或者某些特性锁死了 Canary 版本,那你得升到修复后的 Canary(比如 15.6.0-canary.58 或更新)。

bash 复制代码
npm install next@canary

⚠️ 别忘了最后一步!

升级完依赖,代码只是在硬盘上变了,内存里跑的还是旧的。一定要重启服务!一定要重启服务!一定要重启服务!

bash 复制代码
# PM2 用户
pm2 reload all

# Docker 用户
docker-compose up -d --build

4. 实在升不动怎么办?(救急用)

"大佬,我项目太老/依赖冲突,升了就崩啊!"

理解理解,业务由于某些不可抗力暂时动不了。这时候只能死马当活马医了:

  1. 降级保平安 :如果没用到最新的 RSC 特性,尝试退回到 Next.js 14.2.x 稳定版(确认为非 Canary 版本)。
  2. WAF 挡一挡:在 Nginx 或者云厂商的 WAF 上,针对异常的大包体或者畸形的 RSC 请求头做拦截。但说实话,这招防君子不防小人。

5. 这是一个教训

这次漏洞也给咱们提了个醒:

  1. 生产环境别乱用 Canary:除非你真的需要那个特性,否则稳定版才是王道。
  2. Lock 文件要提交 :package-lock.json / yarn.lock 是保命符,别 gitignore 了。
  3. 关注安全公告:没事多刷刷 GitHub Advisory,或者关注我(疯狂暗示),有大瓜第一时间带你吃。

最后: 此时此刻,还在加班修 Bug 的运维和开发兄弟们,辛苦了!愿世间再无 RCE。🙏

如果你觉得这篇文章救了你的服务器,点个赞再走呗~


免责声明: 本文操作仅供参考,生产环境变更前请务必在测试环境验证!炸了别找我!

相关推荐
测试运维日常笔记3 分钟前
大模型应用专项测试指南:从 Prompt、RAG 到 Agent 的完整链路
前端·prompt
计算机魔术师31 分钟前
没有人告诉他们要这么做——AI 智能体自己学会了"组团"越狱
前端
a努力。42 分钟前
LangChain Agent消息链路全解析
java·前端·javascript
今年下半年1 小时前
【前端】ant-design-vue 表格「行、列都动态」的处理方案
前端·javascript·vue.js
szarron2 小时前
VNA6 便携式矢量网络分析仪|1MHz‑6.3GHz 手持 VNA 真实应用场景全解析
前端·嵌入式硬件·信息可视化·数据挖掘·数据分析
Reisentyan2 小时前
B站首页,点击视频卡片之后首页自动刷新的问题
前端
默_笙2 小时前
🚕 缺料就出门买:给 RAG 装上"信息够不够"的判断力
前端·javascript
Liora_Yvonne2 小时前
同样用 Element Plus,为什么你的后台总有一股“模板味”?
前端
FungLeo2 小时前
成为全栈·Next.js 网站前台篇·数据获取与缓存:60 秒再验证背后到底发生了什么
react·isr·next.js·成为全栈·react cache·opennext
葡萄城技术团队2 小时前
用 Sheet 页导航视图管理复杂 SpreadJS 工作簿
前端