2026年11月安全更新

2026年11月安全更新

💡 原文英文,约900词,阅读约需4分钟。
📝

内容提要

Next.js 发布安全更新 v16.4.5 和 v15.5.29,修复多个漏洞,包括跨租户缓存泄露(unstable_cache 与 use cache 组合)、嵌套缓存跨根参数泄露、二进制参数导致跨用户缓存泄露与污染、自托管共享外壳缓存污染、压缩响应框架错配引发跨客户端响应注入、Edge 路由通过内部响应头泄露 Cookie 值,以及图片优化中 SVG 拒绝绕过。建议尽快升级依赖。

🔎

延伸解读

缓存漏洞的触发条件与影响范围

本次修复的多个缓存漏洞均与特定配置相关。跨租户缓存泄露需同时启用 Cache Components 并组合使用 unstable_cache 与 use cache,且缓存函数读取根参数(如租户标识)。嵌套缓存泄露则发生在内外层 use cache 函数嵌套调用时,外层未等待内层异步值完成即存储缓存条目。二进制参数导致的缓存身份冲突需应用将二进制参数用于区分用户或账户。自托管共享外壳缓存污染仅影响使用 next start、启用 Cache Components 且未启用 Partial Prefetching 的

响应注入与 Cookie 泄露的依赖条件

跨客户端响应注入要求自托管应用原样返回攻击者控制的 fetched Response,且部署在 HTTP/1.1 反向代理后,该代理将流水线请求排队于共享后端连接。若代理行为不同,则不受影响。Edge 路由的 Cookie 泄露需通过 NextResponse.cookies.set() 设置敏感 Cookie,且同源存在攻击者控制的 JavaScript 才能读取内部响应头中的序列化 Cookie。该问题不适用于 Node.js Route Handlers 或通过 cookies().set() 设置 Cook

SVG 绕过与图片优化的实际风险

图片优化中的 SVG 拒绝绕过允许攻击者控制的图片被误判为 AVIF,从而绕过 images.dangerouslyAllowSVG: false 的限制,使后端解码原始字节为 SVG。该问题仍受图片来源允许列表约束,且需要原生图片后端支持 SVG 解码。文章明确指出,此发现本身并未演示跨站脚本或远程代码执行,而是增加了 SVG 解析器资源耗尽或解码器漏洞的暴露面。因此,风险主要集中在资源消耗和潜在的解码器缺陷,而非直接的代码执行。

升级建议与自查要点

官方已发布 v16.4.5(Active LTS)和 v15.5.29(Maintenance LTS)修复上述问题,建议尽快升级依赖。升级前,读者可对照各漏洞的触发条件自查:是否启用 Cache Components、是否使用 unstable_cache 与 use cache 组合、是否通过 use cache 传递二进制参数区分用户、是否自托管且未启用 Partial Prefetching、是否在 Edge 路由中通过 NextResponse.cookies.set() 设置敏感 Cookie、是否允许

❓

Q&A

Next.js 2026年11月安全更新修复了哪些漏洞?

修复了七个漏洞:跨租户缓存泄露(unstable_cache 与 use cache 组合)、嵌套缓存跨根参数泄露、二进制参数导致跨用户缓存泄露与污染、自托管共享外壳缓存污染、压缩响应框架错配引发跨客户端响应注入、Edge 路由通过内部响应头泄露 Cookie 值,以及图片优化中 SVG 拒绝绕过。

哪些 Next.js 版本需要升级以修复这些安全问题?

需要升级到 v16.4.5(Active LTS)或 v15.5.29(Maintenance LTS)。

跨租户缓存泄露漏洞是如何发生的?

当启用 Cache Components 且同一个公共 use cache 函数既被直接调用又被 unstable_cache 内部调用时,如果该函数读取根参数(如租户标识),在冷缓存填充期间,通过 unstable_cache 的并发调用可能收到另一个请求的结果而未检查根参数,导致结果被存储并服务给后续相同参数的调用者,从而泄露其他租户数据。

自托管应用中的共享外壳缓存污染漏洞在什么条件下触发?

使用 next start 运行、启用 Cache Components 且未启用 Partial Prefetching 的自托管应用,当路由形状包含一个可预渲染的动态参数(请求值未在构建时生成)、至少两个从未预渲染的更深参数,以及一个阻塞回退外壳,并且布局在 Suspense 边界内读取较浅的更深参数时,未经认证的请求可能污染共享页面外壳。

Edge 路由中 Cookie 值泄露漏洞的影响范围是什么?

影响使用 NextResponse.cookies.set() 设置 Cookie 的 App Router Edge Route Handlers 和 Pages Router Edge API 路由。序列化的 Cookie 会出现在内部 x-middleware-set-cookie 响应头中,同源 JavaScript 可读取该头,即使 Cookie 标记为 HttpOnly 也会暴露值。利用需要敏感 Cookie 被设置且攻击者控制的 JavaScript 在同源运行。Node.js Route Handlers 或通过 cookies().set() 设置 Cookie 的路由不受影响。

图片优化中的 SVG 拒绝绕过漏洞有什么风险?

攻击者控制的图片可能被错误分类为 AVIF,从而绕过 images.dangerouslyAllowSVG: false 设置,使图片优化后端将原始字节识别并解码为 SVG,触及应用配置排除的解析器。这增加了 SVG 解析器资源耗尽或解码器漏洞的暴露风险,但该发现本身未演示跨站脚本或远程代码执行。图片源允许列表仍然有效,且需要支持解码 SVG 的原生图片后端。

🏷️

标签

➡️

继续阅读