Vercel 于 2026 年 10 月 14 日发布计划外的 Next.js 安全更新 16.4.1 与 15.5.28,修复两处无需登录即可触发的远程代码执行漏洞,以及一处高危拒绝服务缺陷。两个 RCE 漏洞的 CVSS 评分均为 9.5,其中图像处理链路的内存缺陷编号为 CVE-2026-96889。Vercel 表示目前未发现在野利用,也没有确认的公开 PoC,但建议立即升级,「即使你的应用没有用到相关功能」。
事件概述
本次更新覆盖三个相互独立的问题,波及两条 LTS 版本线:
- use cache 缓存反序列化导致的代码执行(GHSA-673q-mjm6-r5xr),影响 16.0.0 至 16.4.0;
- SVG 图像处理链路的代码执行(CVE-2026-96889),影响 10.0.0 至 15.5.27 以及 16.0.0 至 16.4.0;
- Server Actions 拒绝服务,影响 13.0.0 至 15.5.27 以及 16.0.0 至 16.4.0。
其中两个修复此前从 9 月推迟,因上游 React 与 sharp 依赖尚未发补丁。
技术细节
第一处缺陷根因在 React Server Components,而非 Next.js 自身。上游受影响的三个 react-server-dom 包在 19.0.0 至 19.3.0 版本存在该问题,触发条件是响应中传输了多个 typed array 且含攻击者可控值。在 Next.js 中,只有应用启用 Cache Components、且 use cache 函数返回多于一个 typed array 时才可达,因此暴露面集中在 16 版本。该缺陷没有缓解手段。
第二处缺陷位于 librsvg,即 Next.js 通过捆绑的 sharp 包调用的 SVG 渲染库。当攻击者可控的 SVG 进入 sharp、且 Next.js 运行在基于 glibc 的 Linux 上时,可导致代码执行。由于缺陷在下游依赖中,应用即使没有直接调用该库,也可能经由框架的图像处理路径「继承」暴露。默认情况下 Next.js 不优化 SVG,需开启 dangerouslyAllowSVG,或在 Node 运行时用 next/og 生成预览图。第三处是纯可用性问题:在定义了 Server Action 的 App Router 应用中,特制请求可把单个服务进程推至满 CPU 并阻塞后续请求。
影响评估
Next.js 是 React 生态中部署量极大的框架,框架层缺陷会无差别覆盖所有使用受影响版本的应用。两处 RCE 均不需要认证,消除了限制攻击者触达范围的常规门槛。需要注意的是 CDN 不能提供保护——两处 RCE 只需一条构造好的 HTTP 请求直达源站。风险最高的场景包括接受用户上传 SVG 的站点、在 Node 运行时使用 next/og 的应用、启用 Cache Components 的内部工具,以及多租户 SaaS。
修复建议
1. 升级并重建:Next.js 16 升级到 16.4.1,15 升级到 15.5.28,随后重新构建与部署。
2. 核对 sharp 版本:16.4.1 要求 sharp 0.35.5 并自动带上;但 15.5.28 仍接受有缺陷的 0.34.x,直接升级可能残留旧依赖。
npm ls sharp
npm install sharp@^0.35.5
3. 无法立即升级时的临时缓解仅针对 SVG 缺陷有效——确保 sharp 为 0.35.5 或更高,或禁止它渲染 SVG:
sharp.block({ operation: ["VipsForeignLoadSvg"] })
use cache 代码执行与 Server Actions 拒绝服务没有绕过方案,只能升级关闭。此外建议确保 Next.js worker 以非 root 运行、置于受限命名空间并做出口过滤。