Next.js: Cache confusion of response bodies for requests with bodies
Affected releases · next
- 16.x16.0.0 – 16.2.10Fixed in 16.2.11
- 15.x15.0.0 – 15.5.20Fixed in 15.5.21
- 14.x14.0.0 – 14.2.35No fix on this line yet
- 13.x13.0.0 – 13.5.11No fix on this line yet
On 16.x, the newest line:
npm install next@16.2.11Affected
16.0.0 – 16.2.10
31 releases
Fixed
16.2.11 – 16.4.2
14 releases, latest
Affected
15.0.0 – 15.5.20
74 releases
Fixed
15.5.21 – 15.5.28
8 releases
Affected
14.0.0 – 14.2.35
46 releases
Affected
13.0.0 – 13.5.11
56 releases
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
Impact
A server-side fetch with a request body may return a cached response body from a different request to the same URL but different body. Confidential data in the POST's response body would then leak to unauthorized requests. Though the request itself will not be deduped.
This only applies to fetch calls with a request that has a different init than the one passed to fetch.
Safe: fetch(new Request(init), init)
Unsafe: fetch(new Request(init), aDifferentInit)
Workarounds
No workaround exists besides upgrading. Applications using Pages Router are not vulnerable.