NEXT · CVE-2026-119350 · Runtime
FIX → 16.4.5
Self-hosted Next.js apps built with cacheComponents and without Partial Prefetching can have a shared fallback shell cache entry poisoned by one unauthenticated GET request with a crafted path segment. The poisoned entry can serve a persistent 404 to every URL under that shell, or show an attacker-chosen param value in server-rendered HTML.
first public Nov 3, 2026 · 1 source
Could this affect your app?
Free first check from your website. Connect your repo for the full answer.
Self-hosted Next.js applications running next start with cacheComponents: true and Partial Prefetching off. The exposure requires a dynamic route with a prerenderable param, at least two never-prerenderable params below it, and a blocking fallback shell. Apps on managed hosting, apps without cacheComponents, or apps with Partial Prefetching enabled are not described as affected.
Not affected if default-config, managed-hosting, partial-prefetching-enabled
Who cares next.js, node, self-hosted
npm ls next and confirm whether it falls within 16.4.0 to 16.4.4.next.config for cacheComponents: true and confirm partialPrefetching is unset or .Self-hosted Next.js applications served with next start and built with cacheComponents: true but without Partial Prefetching accept a request-supplied route param value as a prerender placeholder. One unauthenticated GET request can poison the fallback shell cache entry that a family of routes shares.
Such a route is served from a shell that keeps its never-prerenderable params as placeholders, so every value of those params shares one cache entry. A path segment equal to the percent-encoded, bracketed name of its own route param is treated as an unresolved placeholder, and only that param is deferred. A layout above it then renders its concrete value into the shell during the blocking render, and the result, including its HTTP status, is stored under the shared key.
Depending on the application, the stored entry is one of the following:
notFound(): served to every URL under the shell key with "revalidate": false, across server restarts, with no error logged.cacheComponents: true with partialPrefetching unset or .Check it with your coding agent
It reads this page and tells you if your code is affected.
Are you affected?
Ask from here. InfraStack checks the affected versions against your stack and answers in your inbox.
InfraStack checks the affected versions against your stack and answers in Slack, with the evidence and the fix.
falsenext start rather than a managed host.Upgrade to 16.4.5
next to 16.4.5.partialPrefetching: true in next.config.falsenext start.generateStaticParams) whose requested value was not generated at build time.Set partialPrefetching: true in next.config. Otherwise, apps should upgrade to the patched version as soon as possible.