| Package | Affected versions | Patched versions |
|---|---|---|
| next.js | ≥ 12.2.0, < 15.5.16≥ 16.0.0, < 16.2.5 | 15.5.1616.2.5 |
| next | ≥ 12.2.0, < 15.5.16≥ 16.0.0, < 16.2.5 | 15.5.1616.2.5 |
Next.js uses the x-nextjs-data request header for internal data requests. On affected versions, an external client could send this header on a normal request to a path handled by middleware that returns a redirect.
When that happened, the middleware/proxy could treat the request as a data request and replace the standard Location redirect header with the internal x-nextjs-redirect header. Browsers do not follow x-nextjs-redirect, so the response became an unusable redirect for normal clients.
If the application was deployed behind a CDN or reverse proxy that caches 3xx responses without varying on this header, a single attacker request could poison the cached redirect response for the affected path. Subsequent visitors could then receive a cached redirect response without a Location header, causing a denial of service for that redirect path until the cache entry expired or was purged.
This affects applications that:
The fix stops trusting x-nextjs-data by itself for middleware redirect handling. A request is now treated as an internal data request only when it is validated as such by internal routing state, preserving legitimate data-request redirect behavior while preventing external header injection from changing normal redirect responses.
Before upgrading, users can reduce risk by:
x-nextjs-data for affected responsesRunning one of these products? Scan your site to see whether it exposes a vulnerable version.
Scan my site free