CVE-2026-27979Next.js是一个用于构建全栈Web应用程序的React框架。该漏洞影响版本16.0.1至16.1.7,当请求包含`next-resume: 1`头(对应PPR恢复请求)时,系统会缓冲请求体但未能在非minimal部署模式下正确执行`maxPostponedStateSize`大小限制。攻击者可以利用此漏洞发送超大的`next-resume` POST载荷,由于缺少一致的大小限制,服务器将无限缓冲请求体,导致内存过度使用,最终可能造成拒绝服务(DoS)攻击。此漏洞仅影响使用App Router且启用了Partial Prerendering(PPR)功能的应用程序。
漏洞根源在于Next.js的PPR(Partial Prerendering)功能中的resume请求处理逻辑。当客户端发送带有`next-resume: 1`头的请求时,服务器端会尝试缓冲请求体以支持恢复操作。然而,在非minimal部署模式下,系统未能正确应用`maxPostponedStateSize`配置参数来限制缓冲大小。攻击者可以构造包含超大请求体的POST请求,并通过`next-resume`头触发恢复流程。由于缺乏大小检查,服务器会将整个请求体加载到内存中,当多个恶意请求并发时,会导致内存资源耗尽。修复版本16.1.7通过在所有延迟体缓冲路径中统一执行大小限制来解决此问题,当超过限制时会返回错误而非无限缓冲。