Next.js 于 10 月 14 日发布了一项紧急安全更新,修复了两个允许未经身份验证的远程代码执行的关键漏洞,以及一个高严重性的拒绝服务漏洞。
一个代码执行漏洞出现在 React Server Components 中,另一个则在 librsvg 中,这是 Next.js 通过 sharp 包处理 SVG 图像所使用的开源库。
修复已包含在 Next.js 16.4.1 和 15.5.28 中,这两个版本分别是当前的活跃和维护长期支持 (LTS) 版本。
修复内容
该更新涵盖了三个独立的问题。开发 Next.js 的 Vercel 将两个代码执行漏洞均评为关键,每个漏洞的 CVSS 分数为 9.5。下表列出了每个问题影响的版本以及修复的版本。
问题
受影响版本
修复版本
受影响用户
通过使用缓存进行代码执行 (
GHSA-673q-mjm6-r5xr
)
16.0.0 到 16.4.0
16.4.1
启用缓存组件的 App Router 应用,其中 use cache 函数返回多个类型数组
通过 SVG 图像进行代码执行 (CVE-2026-96889,
GHSA-2464-fhr4-w9xw
)
10.0.0 到 15.5.27,以及 16.0.0 到 16.4.0
16.4.1,或 15.5.28 与 sharp 0.35.5 或更高版本
将攻击者提供的 SVG 文件传递给基于 glibc 的 Linux 上的 sharp 的应用
通过服务器操作导致拒绝服务 (
GHSA-p3m5-59mp-jv5r
)
13.0.0 到 15.5.27,以及 16.0.0 到 16.4.0
15.5.28,16.4.1
至少定义一个服务器操作的 App Router 应用
谁受到影响
第一个代码执行漏洞出现在 React Server Components 中,这是一个在服务器上运行用户界面组件的 React 功能。React 的公告涵盖了三个包,react-server-dom-webpack、react-server-dom-parcel 和 react-server-dom-turbopack,版本为 19.0.0 到 19.3.0。它描述了该漏洞影响“极其罕见的情况,其中响应传输多个类型数组和一个攻击者控制的值。”
在 Next.js 应用中,触发条件是 use cache 函数返回多个类型数组,因此只有启用缓存组件的版本 16 应用受到影响。Vercel 建议即使您的应用没有此类功能也要进行升级。
第二个漏洞是 librsvg 中的内存错误,这是一个渲染 SVG 图像的库,Next.js 通过捆绑的 sharp 包访问该库。根据公告,当 Next.js 在基于 glibc 的 Linux 上运行时,可能会发生代码执行。
默认情况下,Next.js 不会优化 SVG 文件。通过图像优化器提供它们需要启用一个名为 dangerouslyAllowSVG 的设置。该库还为 next/og 渲染图像,这是构建社交预览图像的功能,当该功能在 Node.js 运行时运行时。
第三个漏洞是拒绝服务问题。在定义至少一个服务器操作的 App Router 应用中,精心构造的请求可以使一个服务器进程达到 100% CPU 使用率,并阻止其处理其他请求。使用页面路由的应用或没有服务器操作的应用不受影响。
暴露情况可能因主机而异。Netlify 表示,其平台不运行图像优化器代码路径,漏洞对其设置的影响有限,但仍建议进行升级。
该怎么办
如果您运行版本 16,请升级到 Next.js 16.4.1;如果您运行版本 15,请升级到 15.5.28,然后重新构建和重新部署。
Vercel 的公告表示,升级 Next.js 会使包管理器自动提供修复后的 sharp。在版本 16 中,这一点成立,因为 16.4.1 需要 sharp 0.35.5。
在版本 15 中可能不成立。15.5.28 仍然接受较旧的受影响的 sharp 0.34.x,并且在现有安装上进行升级可能会保留该版本。请使用 npm ls sharp 检查,并在版本较旧时将 sharp 更新到 0.35.5 或更高版本。
如果您无法立即升级 Next.js,图像漏洞有一个临时选项:确保 sharp 是 0.35.5 或更高版本,或者使用 sharp.block({ operation: ["VipsForeignLoadSvg"] }) 阻止 sharp 中的 SVG 渲染,如 sharp 公告所述。use cache 和服务器操作漏洞没有解决方法,只有升级才能关闭它们。
截至 10 月 15 日,use cache 和服务器操作公告没有 CVE,并且没有出现在 npm 审计使用的 npm 公告源中,因此依赖扫描器可能不会警告您。图像漏洞确实通过 sharp 自身的公告浮出水面。
为什么图像漏洞不断出现
自 8 月以来,Next.js 中的图像处理已经第三次产生代码执行漏洞。在 8 月,libheif 中的一个错误,通过 sharp 达到,当优化器处理一个精心构造的 AVIF 图像时,允许代码执行。在 9 月,next/og 中的一个漏洞让攻击者控制的文本更改了它生成的 SVG。
这一次,Next.js 没有更改自己的图像代码。16.4.1 发布了与 16.4.0 相同的优化器,并通过将捆绑的 sharp 提升到 0.35.5 来修复图像漏洞,该版本包含修补后的 librsvg (2.63.2)。
librsvg 漏洞 CVE-2026-96889 于 9 月 23 日公开,并于 9 月 27 日在 sharp 中修复。红帽将其评分为 7.8,并表示利用它需要用户交互,例如打开恶意文件。Vercel 将 Next.js 的暴露评为 9.5,并且可以通过网络访问。
报告 librsvg 漏洞的研究人员 Rafael B. Dias 表示,这是 9 月 next/og 漏洞背后的弱点。针对该早期漏洞的有效利用已为特定服务器设置发布。
sharp 的维护者还警告说,漏洞是否以代码执行结束或仅导致崩溃可能取决于服务器的 Node.js 构建,因为官方的 Node.js 二进制文件并未针对这种内存攻击进行加固。
与 React2Shell 不同
React Server Components 漏洞与 React2Shell 中的三个包相同,后者是 2025 年 12 月披露的最高严重性漏洞,攻击者大规模利用。这个漏洞要狭窄得多。React 将其描述为影响“极其罕见的情况,其中响应传输多个类型数组和一个攻击者控制的值。”
截至 10 月 15 日,没有公开报告显示 10 月 14 日修复的三个漏洞中的任何一个已被用于攻击。
觉得这篇文章有趣吗?请在 Google 新闻、Twitter 和 LinkedIn 上关注我们。