Next.js: Unbounded postponed resume buffering can lead to DoS
Affected releases · next
- 16.x16.0.1 – 16.1.6Fixed in 16.1.7
On 16.x, the newest line:
npm install next@16.1.7Not affected
0.1.0 – 16.0.0
379 releases
Affected
16.0.1 – 16.1.6
18 releases
Fixed
16.1.7 – 16.4.2
26 releases, latest
Is your project affected?
Paste your package.json, or type the range you declare for next. It is read in your browser and sent nowhere.
What happens
Summary
A request containing the next-resume: 1 header (corresponding with a PPR resume request) would buffer request bodies without consistently enforcing maxPostponedStateSize in certain setups. The previous mitigation protected minimal-mode deployments, but equivalent non-minimal deployments remained vulnerable to the same unbounded postponed resume-body buffering behavior.
Impact
In applications using the App Router with Partial Prerendering capability enabled (via experimental.ppr or cacheComponents), an attacker could send oversized next-resume POST payloads that were buffered without consistent size enforcement in non-minimal deployments, causing excessive memory usage and potential denial of service.
Patches
Fixed by enforcing size limits across all postponed-body buffering paths and erroring when limits are exceeded.
Workarounds
If upgrade is not immediately possible:
Block requests containing the
next-resumeheader, as this is never valid to be sent from an untrusted client.