文章

Next.js 高危漏洞 (CVE-2025-66478) 实战:中招复盘与一键修复

见字如面,与大家分享实践中的经验与思考。

最近爆发的 Next.js 高危漏洞 CVE-2025-66478 影响范围极广,几乎波及 Next.js 15 的所有版本以及 16 的早期版本。虽然我已第一时间升级并重新部署了大部分相关项目,但个人服务器上一些早期基于 Next.js 的演示项目未及时处理,最终也未能幸免。

images-20251211-15.20.40@2x

影响范围

images-20251211-12.19.32@2x

受影响的版本及对应的修复版本如下:

Current Version

Patched Version

15.0.0 – 15.0.4

15.0.5

15.1.0 – 15.1.8

15.1.9

15.2.0 – 15.2.5

15.2.6

15.3.0 – 15.3.5

15.3.6

15.4.0 – 15.4.7

15.4.8

15.5.0 – 15.5.6

15.5.7

16.0.0 – 16.0.6

16.0.7

15.x canaries

15.6.0-canary.58

16.x canaries

16.1.0-canary.12

14.3.0-canary.77+

Downgrade to 14.3.0-canary.76 or upgrade to 15.0.5

此次漏洞几乎涵盖了所有的 Next.js 15 和 16 版本,主要针对启用了 App Router 和 React Server Components (RSC) 的应用。每个受影响的小版本都已发布了相应的安全补丁。

如果是纯客户端渲染 (Client-Side Rendering) 或不使用 RSC 的 Next.js 应用,则不受影响

解决方案

在项目根目录下执行以下命令即可一键升级。升级完成后,请务必及时重新打包并部署上线。

npx fix-react2shell-next

执行结果如下图所示(注:图中显示未受影响是因为我已提前完成了升级):

images-20251211-12.24.50@2x

导致的原因

根据官方说明,该漏洞源于上游 React 的实现问题(CVE-2025-55182)。

images-20251211-12.36.24@2x

核心概要:React Server Components 的 19.0.0、19.1.0、19.1.1 和 19.2.0 版本中存在无需认证的远程代码执行漏洞。该漏洞影响 react-server-dom-parcelreact-server-dom-turbopackreact-server-dom-webpack 等组件。攻击者可通过向服务器函数端点发送恶意构造的数据,利用不安全的反序列化过程执行代码。

什么是不安全的反序列化

  • 当使用 React Server Components (RSC) 架构时,特别是在执行 Server Actions(服务器端操作) 或交互时,客户端(浏览器)会将数据序列化并发送给服务器。服务器端接收后,会将其“反序列化 (Deserialize)”为 JS 对象或结构,以执行相应的服务端逻辑。

  • 问题在于,该反序列化逻辑未对“输入数据 (Payload)”进行足够严格的校验与过滤 (Validation / Sanitization)。攻击者可以构造精心设计 (Malformed / Malicious) 的 RSC 请求(例如包含特殊 Header、Multipart 数据、伪造的数据结构或属性引用等),从而绕过校验机制。

综上所述,该漏洞的根本原因在于:

React Server Components 在反序列化客户端提交的数据 (RSC Payload) 时,缺乏对数据结构和内容的充分验证,导致攻击者能够通过精心构造的数据触发服务器执行未授权代码(远程代码执行)。Next.js 作为 React 的下游框架,因此受到了连带影响。

最后

此次漏洞波及范围广、等级高,再次提醒我们在享受前沿技术带来的便利(如 RSC 的性能优势)时,也不能忽视潜在的安全风险。

安全无小事,愿大家的生产环境永远 0 error, 0 warning, 0 vulnerability


欢迎关注公众号"Eric技术圈",原创技术文章第一时间推送。

许可协议:  CC BY 4.0