Summary
Next.js: Cache confusion of response bodies for requests with bodies
Advisory details
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.
References
- https://github.com/advisories/GHSA-68g3-v927-f742
- https://github.com/vercel/next.js/security/advisories/GHSA-68g3-v927-f742
- https://github.com/vercel/next.js/commit/062f66700b52a5d6bba2c0605d55577ab7ad262c
- https://github.com/vercel/next.js/commit/73b94872bc343d09494b50394d8c08eb9fc8e56a
- https://github.com/vercel/next.js/releases/tag/v15.5.21
- https://github.com/vercel/next.js/releases/tag/v16.2.11
Related vulnerabilities
All Supply chain →- MEDIUMCVE-2026-54625
django CMS: Page cache ignores plugin-declared Vary headers (disclosure & poisoning)
- HIGHGHSA-p77j-g7h5-r2vw
GeoLens's authorization and cache-scope flaws disclose private dataset data and metadata to unauthorized users (fixed in 1.2.4)
- MEDIUMCVE-2026-59903
Netty Vulnerable to Cache Poisoning and Information Disclosure via CORS Vary Header Overwrite
- HIGHCVE-2026-71316
Nuxt runtime payload cache discloses another user's SSR data across users and to unauthenticated clients
- MEDIUMCVE-2026-14643
undici vulnerable to cross-user information disclosure via whitespace around equals in Cache-Control directives
- HIGHCVE-2026-61836
Directus: Authorization-dependent response served from unsegmented cache key