---
id: "CVE-2026-94484"
page: "https://infrastack.ai/live/CVE-2026-94484"
kind: "vulnerability"
aliases: ["CVE-2026-94484", "GHSA-mcj8-r9mp-w47p"]
title: "Next.js has cache poisoning in SSG/ISR rendering that leads to cross-user content substitution and persistent denial of service"
severity: "medium"
cvss: 6.3
epss: 0.00244
exploited: false
status: "open"
category: "package"
products: [{"name": "next", "fixed": ["16.3.?"], "affected": ">= 16.0.0", "ecosystem": "npm"}, {"name": "next", "fixed": ["15.5.?"], "affected": ">= 15.0.0", "ecosystem": "npm"}, {"name": "next", "fixed": ["16.3.8"], "affected": ">= 16.0.0, < 16.3.8", "ecosystem": "npm"}, {"name": "next", "fixed": ["15.5.27"], "affected": ">= 15.0.0, < 15.5.27", "ecosystem": "npm"}, {"name": "vercel next.js", "fixed": ["15.5.27"], "affected": ">= 15.0.0, < 15.5.27", "ecosystem": "vendor"}, {"name": "vercel next.js", "fixed": ["16.3.8"], "affected": ">= 16.0.0, < 16.3.8", "ecosystem": "vendor"}]
ecosystems: ["npm", "vendor"]
tags: ["cwe-524", "next.js", "package", "self-hosted", "vercel"]
not_affected_if: ["auth-required", "static-export"]
published_at: "2026-09-30T16:14:19+00:00"
first_seen_at: "2026-11-09T22:53:14+00:00"
updated_at: "2026-11-09T23:10:12+00:00"
sources: [{"source": "ghsa-repo", "url": "https://github.com/vercel/next.js/security/advisories/GHSA-mcj8-r9mp-w47p", "first_seen_at": "2026-11-09T22:53:14+00:00"}, {"source": "ghsa", "url": "https://github.com/advisories/GHSA-mcj8-r9mp-w47p", "first_seen_at": "2026-11-09T22:57:50+00:00"}, {"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-94484", "first_seen_at": "2026-11-09T23:10:12+00:00"}]
exploit_sources: [{"type": "epss", "score": 0.00244, "url": "https://api.first.org/data/v1/epss?cve=CVE-2026-94484"}]
---

# Next.js has cache poisoning in SSG/ISR rendering that leads to cross-user content substitution and persistent denial of service

Link for people: https://infrastack.ai/live/CVE-2026-94484 (this .md is for agents)

Next.js apps with a root-level catch-all page alongside statically generated or ISR routes can have their shared response cache poisoned by one unauthenticated crafted request. The sources say this leads to cross-user content substitution and persistent denial of service.

_Summary, check and fix written by a model from the sources; labelled as such._

## Affected

- npm:next affected >= 16.0.0 fixed 16.3.?
- npm:next affected >= 15.0.0 fixed 15.5.?
- npm:next affected >= 16.0.0, < 16.3.8 fixed 16.3.8
- npm:next affected >= 15.0.0, < 15.5.27 fixed 15.5.27
- vendor:vercel next.js affected >= 15.0.0, < 15.5.27 fixed 15.5.27
- vendor:vercel next.js affected >= 16.0.0, < 16.3.8 fixed 16.3.8

## How to check

- Check the installed version with `npm ls next`
- Look for a root-level catch-all page (for example `app/[...slug]/page.tsx` or `pages/[...slug].tsx`) alongside statically generated or ISR routes

## Fix

- `next` `16.3.8` for the 16.x line (affected >= 16.0.0, < 16.3.8)
- `next` `15.5.27` for the 15.x line (affected >= 15.0.0, < 15.5.27)

## Timeline

- 2026-11-09T22:53:14+00:00 ghsa-repo https://github.com/vercel/next.js/security/advisories/GHSA-mcj8-r9mp-w47p
- 2026-11-09T22:57:50+00:00 ghsa https://github.com/advisories/GHSA-mcj8-r9mp-w47p
- 2026-11-09T23:10:12+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-94484

## Documents

- [advisory] Maintainer's advisory: github.com https://github.com/vercel/next.js/security/advisories/GHSA-mcj8-r9mp-w47p
- [advisory] Maintainer's advisory: api.github.com https://api.github.com/repos/vercel/next.js/security-advisories/GHSA-mcj8-r9mp-w47p
- [fix] Patch: github.com https://github.com/vercel/next.js/commit/52c94abdd2ea5f416f5e8353ea8a2edd3fe311b8
- [fix] Patch: github.com https://github.com/vercel/next.js/commit/719e4c67d6e92df60246f95e1d96e2dd60789a52
- [fix] Release notes: github.com https://github.com/vercel/next.js/releases/tag/v15.5.27
- [fix] Release notes: github.com https://github.com/vercel/next.js/releases/tag/v16.3.8

## From the sources

Next.js is a React framework for building full-stack web applications. From 15.0.0 until 15.5.27 and 16.3.8, applications with a root-level catch-all page and statically generated or Incremental Static Regeneration routes can use a shared response cache key that is insufficiently scoped to the source route. A single unauthenticated crafted request can poison that cache, causing cross-user content substitution or persistent denial of service until the poisoned entry is revalidated or replaced. This issue is fixed in versions 15.5.27 and 16.3.8.

---

_Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai_
