CVE-2025-59472

Severity CVSS v4.0:
Pending analysis
Type:
CWE-400 Uncontrolled Resource Consumption ('Resource Exhaustion')
Publication date:
26/01/2026
Last modified:
24/02/2026

Description

A denial of service vulnerability exists in Next.js versions with Partial Prerendering (PPR) enabled when running in minimal mode. The PPR resume endpoint accepts unauthenticated POST requests with the `Next-Resume: 1` header and processes attacker-controlled postponed state data. Two closely related vulnerabilities allow an attacker to crash the server process through memory exhaustion:<br /> <br /> 1. **Unbounded request body buffering**: The server buffers the entire POST request body into memory using `Buffer.concat()` without enforcing any size limit, allowing arbitrarily large payloads to exhaust available memory.<br /> <br /> 2. **Unbounded decompression (zipbomb)**: The resume data cache is decompressed using `inflateSync()` without limiting the decompressed output size. A small compressed payload can expand to hundreds of megabytes or gigabytes, causing memory exhaustion.<br /> <br /> Both attack vectors result in a fatal V8 out-of-memory error (`FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory`) causing the Node.js process to terminate. The zipbomb variant is particularly dangerous as it can bypass reverse proxy request size limits while still causing large memory allocation on the server.<br /> <br /> To be affected you must have an application running with `experimental.ppr: true` or `cacheComponents: true` configured along with the NEXT_PRIVATE_MINIMAL_MODE=1 environment variable.<br /> <br /> Strongly consider upgrading to 15.6.0-canary.61 or 16.1.5 to reduce risk and prevent availability issues in Next applications.

Vulnerable products and versions

CPE From Up to
cpe:2.3:a:vercel:next.js:*:*:*:*:*:node.js:*:* 15.0.0 (including) 15.6.0 (excluding)
cpe:2.3:a:vercel:next.js:*:*:*:*:*:node.js:*:* 16.0.0 (including) 16.1.5 (excluding)
cpe:2.3:a:vercel:next.js:15.6.0:-:*:*:*:node.js:*:*
cpe:2.3:a:vercel:next.js:15.6.0:canary0:*:*:*:node.js:*:*
cpe:2.3:a:vercel:next.js:15.6.0:canary1:*:*:*:node.js:*:*
cpe:2.3:a:vercel:next.js:15.6.0:canary10:*:*:*:node.js:*:*
cpe:2.3:a:vercel:next.js:15.6.0:canary11:*:*:*:node.js:*:*
cpe:2.3:a:vercel:next.js:15.6.0:canary12:*:*:*:node.js:*:*
cpe:2.3:a:vercel:next.js:15.6.0:canary13:*:*:*:node.js:*:*
cpe:2.3:a:vercel:next.js:15.6.0:canary14:*:*:*:node.js:*:*
cpe:2.3:a:vercel:next.js:15.6.0:canary15:*:*:*:node.js:*:*
cpe:2.3:a:vercel:next.js:15.6.0:canary16:*:*:*:node.js:*:*
cpe:2.3:a:vercel:next.js:15.6.0:canary17:*:*:*:node.js:*:*
cpe:2.3:a:vercel:next.js:15.6.0:canary18:*:*:*:node.js:*:*
cpe:2.3:a:vercel:next.js:15.6.0:canary19:*:*:*:node.js:*:*