Next.js 16.4.5 security release: who must patch now
Next.js 16.4.5 and 15.5.29 (3 Nov 2026) fix seven advisories, four in use cache and Cache Components. Who is affected, which line is fixed and how to patch.

Next.js 16.4.5 and 15.5.29, the November 2026 security release, fix seven vulnerabilities, four of them in use cache and Cache Components. Both reached npm on 3 November 2026, at 18:01 and 18:36 UTC, and npm's latest tag is now 16.4.5. Run npm install next@16.4.5 on Next.js 16 or npm install next@15.5.29 on 15. That includes 16.4.4: the Next.js 16.4.4 bug-fix patch from the day before fixes none of these. 15.5.29 carries three of the fixes: response injection behind a proxy, the SVG bypass in image optimisation and the cookie header on Edge routes. The other four affect only 16.x apps with Cache Components or use cache. If you run Cache Components with root params, self-host with next start, set cookies in Edge routes or optimise remote images, patch today; we would also empty any cache that survives a deploy. We checked every claim below against the advisories, the GitHub releases, the npm registry and the Next.js blog on 4 November 2026. We did not reproduce any of the issues.
What changed in Next.js 16.4.5 and 15.5.29
The 16.4.5 release notes (opens in a new tab) list seven advisories. The 15.5.29 release notes (opens in a new tab) list three of them. In the comparison of 16.4.4 and 16.4.5 (opens in a new tab), the release is eight commits: one fix per advisory and the version bump, no other change. The 15.5.28 to 15.5.29 comparison (opens in a new tab) adds the three fixes to three commits that only touch Next.js's own release and CI pipeline. On the npm registry (opens in a new tab), both versions keep the third-party dependencies, the React peer range and the Node.js range of the patch before them (>=20.9.0 on 16.4.5). The only other change in your lockfile is @next/, which is pinned to the exact next version and moves with it.
| Version | On npm (UTC) | Line | dist-tag on 4 Nov | November fixes |
|---|---|---|---|---|
| 16.4.4 | 2 Nov 2026, 10:49 | 16.x, Active LTS | - | None |
| 16.4.5 | 3 Nov 2026, 18:01 | 16.x, Active LTS | latest | All seven |
| 15.5.28 | 14 Oct 2026, 17:36 | 15.x, Maintenance LTS | - | None |
| 15.5.29 | 3 Nov 2026, 18:36 | 15.x, Maintenance LTS | backport | Response injection, SVG bypass, Edge cookie header |
Every advisory carries a severity, a CVSS 4.0 score and a CVE ID on GitHub, read through GitHub's advisory API (opens in a new tab) on 4 November. The Next.js post (opens in a new tab) gives its own severity and no CVE:
| Advisory | What goes wrong | Next.js blog | GitHub (CVSS 4.0) | Fixed in |
|---|---|---|---|---|
| GHSA-mfr8-8qww-v76h (opens in a new tab), CVE-2026-119790 | A use cache result for one root param value is served for others when the function is also called through unstable_cache | High | Moderate (6.3) | 16.4.5 |
| GHSA-vc7v-qv4w-wrv8 (opens in a new tab), CVE-2026-119351 | An outer use cache entry is stored without the root param an inner one read | Medium | Moderate (6.3) | 16.4.5 |
| GHSA-vvgp-ww4w-46vf (opens in a new tab), CVE-2026-119350 | One request can poison a fallback shell that a family of routes shares | Medium | Moderate (6.3) | 16.4.5 |
| GHSA-rhh4-g77r-r9qj (opens in a new tab), CVE-2026-119349 | Different binary arguments to a use cache function get the same cache key | Medium | Moderate (6.3) | 16.4.5 |
| GHSA-pc58-hwjq-p385 (opens in a new tab), CVE-2026-119348 | A forwarded fetch response keeps compressed framing headers on a decompressed body | Medium | Moderate (6.3) | 16.4.5, 15.5.29 |
| GHSA-7qx7-33qx-rqx2 (opens in a new tab), CVE-2026-119347 | An SVG passed off as AVIF gets past dangerouslyAllowSVG: false | Medium | Moderate (6.9) | 16.4.5, 15.5.29 |
| GHSA-f3mh-rxg3-f5g2 (opens in a new tab), CVE-2026-119346 | A cookie set on an Edge route is copied into the x-middleware-set-cookie header, readable by same-origin JavaScript | Medium | Moderate (6.0) | 16.4.5, 15.5.29 |
A root param is a route parameter of the root layout, such as [locale] or [tenant] in app/, read with next/. The advisories describe how a use cache entry should depend on every root param its function reads, on top of what makes two calls share an entry. Two of the four cache bugs drop that root param from the key, so an app that separates tenants, sites or locales by root param can serve one tenant's cached content to another.
Is the November release high or medium severity?
Both, depending on whom you read. The advance notice of 27 October (opens in a new tab) announced "seven medium vulnerabilities". The release post of 3 November calls the unstable_cache leak High and the other six Medium. The GitHub advisories and both release notes rate all seven Moderate. The scores sit close together: six advisories score between 6.0 and 6.3, and the SVG bypass scores 6.9, the highest, the only one whose CVSS vector lists no attack requirements (AT:N) alongside low complexity and no user interaction. Record the High rating if you track the unstable_cache leak, because a cross-tenant leak is a serious finding for a multi-tenant app whatever the score.
Who is affected by the Next.js November 2026 vulnerabilities
Every advisory needs a specific setup. Find yours in the left column; the conditions come from each advisory and the Next.js post.
| You are affected if | Advisory | Lines |
|---|---|---|
Cache Components is on and one public use cache function that reads a root param is called both directly and inside unstable_cache, and the unstable_cache call arrives while the function's first fill after a process start is still in flight (outside that race, the nesting throws an error) | GHSA-mfr8 | 16.x from 16.3.0 |
An inner use cache function reads a root param and returns ready data alongside a still-pending promise, and the outer use cache function finishes without awaiting it | GHSA-vc7v | 16.x from 16.2.0 |
You self-host with next start, cacheComponents: true and partialPrefetching unset or false, and a dynamic route has a blocking fallback shell with the route shape the advisory describes | GHSA-vvgp | 16.x from 16.4.0 |
A use cache function takes binary arguments (Uint8Array, Blob) that tell users or accounts apart | GHSA-rhh4 | 16.x |
You self-host, a route handler or the fetch cache returns a fetched upstream Response unchanged, and an HTTP/1.1 reverse proxy queues pipelined requests on a shared backend connection | GHSA-pc58 | 16.x, 15.x and older |
You self-host the image optimiser (/), keep images.dangerouslyAllowSVG at its default false, optimise images from a permitted source an attacker can control, and use a native backend that can decode SVG | GHSA-7qx7 | 16.x, 15.x |
An App Router Edge route handler or a Pages Router Edge API route sets a cookie with NextResponse.cookies.set() | GHSA-f3mh | 16.x, 15.x |
The Next.js post narrows two of them. The Edge cookie leak did not reproduce in Node.js route handlers or with cookies().set(). It also needs attacker-controlled JavaScript already running on your origin, so it is not a way to run scripts. The response injection needs the pipelining proxy behaviour and does not apply to every reverse proxy. Three advisories (shell poisoning, response injection and the SVG bypass) describe self-hosted deployments only. Netlify's changelog entry on the Next.js vulnerabilities (opens in a new tab), updated on 4 November, lists four of the seven as affecting sites on Netlify and ships its adapter @netlify/ 5.16.6 for the Middleware cookie case.
How to tell whether your app uses the affected patterns
From the project root, these checks find the setups in the table:
npx next --version # below 16.4.5 or 15.5.29: upgrade
grep -rn "cacheComponents\|partialPrefetching" next.config.*
grep -rln "next/root-params" app src lib 2>/dev/null # root params read in cached code
grep -rln "unstable_cache" app src lib 2>/dev/null # combined with "use cache": GHSA-mfr8
grep -rln "runtime = \"edge\"" app src pages 2>/dev/null # Edge routes: look for cookies.set()For the Edge cookie, request a route that sets a cookie and look for the internal header in the response. After the upgrade, the fix commit (opens in a new tab) strips it from Edge responses:
curl -s -D - -o /dev/null https://your-app.example/api/login | grep -i x-middleware-set-cookieWhich Next.js versions get a fix?
Only the two LTS lines. The Next.js support policy (opens in a new tab) puts 16.x in Active LTS and 15.x in Maintenance LTS with security releases until 31 January 2027, and 14.x and older are unsupported. On npm, no 16.2.x or 16.3.x release came out on 3 November: the newest are still 16.2.12 (25 July) and 16.3.8 (30 September).
- 16.0 to 16.4.4: upgrade to 16.4.5. There is no 16.2 or 16.3 backport, so a minor upgrade comes with the patch. Read the 16.4.4 release notes (opens in a new tab) and the 16.4 changes before you move.
- 15.0 to 15.5.28: upgrade to 15.5.29. The cache advisories don't affect 15.x.
- 14.x and older: the response injection advisory's version field reads
>= 16.0.0and< 16.0.0together, which we read as every version, and the newest 14.x on npm is still 14.2.35, from December 2025. The other six list no version below 15.0.0. The advisory lists no workaround and 14.x gets no patch, so the way out is 15.5.29 or 16.4.5.
Read the advisories' own version fields with care. On 4 November most of them listed no patched version. The nested use cache advisory named 16.4.2, which the 16.4.5 release notes contradict, and three gave 16.4.2 as the last affected version, although 16.4.3 and 16.4.4 carry no security fix. None of the seven was in the global GitHub Advisory Database yet (its API answered 404 for each), and Dependabot alerts only on GitHub-reviewed advisories (opens in a new tab). So no Dependabot alert today doesn't mean you are patched. Go by the release notes: 16.4.5 and 15.5.29.
How to upgrade to Next.js 16.4.5 or 15.5.29
Find the version you run
Run
npx next --versionornpm ls next. In a monorepo, check every app: each one that resolves to a version below 16.4.5 on 16.x, or below 15.5.29 on 15.x, needs the upgrade.Install the patched version
Run
npm install next@16.4.5on 16.x ornpm install next@15.5.29on 15.x (pnpm addandyarn addwork the same). Node.js and the React peer range don't change, soreactandreact-domstay as they are.Check what the lockfile resolved
Run
npm ls nextagain and deploy from a clean install. A caret range like^16.4.4inpackage.jsononly takes 16.4.5 once the lockfile is updated.Empty caches that outlive a deploy
Entries written before the fix stay wrong after it: the
unstable_cacheleak keeps serving until the entry is revalidated or evicted, and a poisoned shell keeps its 404 across restarts. The advisories don't ask you to purge anything; our own advice is that if you use a shared cache handler or a persistent cache volume, you empty it after the upgrade. On Netlify, follow its changelog: purge branch deploys and Deploy Previews, which a production deploy doesn't clear.Use the workarounds only while you can't upgrade
The
unstable_cacheadvisory says that not calling ause cachefunction insideunstable_cacheis a complete workaround. The shell advisory's workaround ispartialPrefetching: trueinnext.config. The other five list none, so upgrade as soon as you can.
What to watch out for
- 16.4.4 is not patched. It came out a day earlier and is a bug-fix release. Close a security ticket only on 16.4.5 or 15.5.29.
- The install comment says "16.5". In the Next.js post, the line
npm install next@16.4.5carries the comment# for 16.5. The command is right. 16.5 is still in canary (16.5.0-canary.40on npm on 4 November), so don't go looking for a 16.5 release. - The release post doesn't link the shell advisory. It describes the shared shell poisoning without a link. GHSA-vvgp-ww4w-46vf is in the 16.4.5 release notes.
- No exploitation reported. None of the sources mentions exploitation in the wild or a public proof of concept. With the advisories public since 3 November, that is no reason to wait.
- When we read each source. The Next.js posts, both GitHub releases, the seven advisories, the npm registry, the support policy and Netlify's changelog, all on 4 November 2026. We did not run 16.4.5 on a demo or reproduce any advisory.
What vulnerabilities are fixed in Next.js 16.4.5?
Seven, all published as GitHub advisories on 3 November 2026: two cache leaks across root params (use cache called through unstable_cache, and nested use cache), shared fallback shell poisoning on self-hosted next start, cross-user cache keys for binary use cache arguments, response injection behind pipelining HTTP/1.1 proxies, an SVG bypass in image optimisation and HttpOnly cookie exposure on Edge routes. 16.4.5 contains the seven fixes and nothing else.
Is the November 2026 Next.js release high or medium severity?
It depends on the source. The Next.js blog rates GHSA-mfr8-8qww-v76h (use cache called through unstable_cache) High and the other six Medium. The GitHub advisories and both release notes rate all seven Moderate, with CVSS 4.0 scores between 6.0 and 6.9, and the advance notice of 27 October announced seven medium vulnerabilities.
Which Next.js versions are affected by the November 2026 vulnerabilities?
Every 16.x release before 16.4.5 carries at least one of them, including 16.4.4, which has no security fix. On 15.x, three advisories apply up to 15.5.28 and are fixed in 15.5.29. 16.2 and 16.3 got no new patch, so those apps move to 16.4.5. The response injection advisory's version field also covers versions below 16.0.0, and 14.x, which is unsupported, has no patched release.
How do I upgrade to Next.js 16.4.5 or 15.5.29?
Run npm install next@16.4.5 on 16.x or npm install next@15.5.29 on 15.x (pnpm add or yarn add work the same), then check the lockfile resolved that version. Node.js and React requirements are unchanged from 16.4.4 and 15.5.28. If your cache outlives a deploy, we also recommend emptying it after upgrading, since the advisories say affected entries persist until they are revalidated or evicted.
Are the Next.js CVEs from November 2026 being exploited?
Neither the Next.js post nor any of the seven advisories mentions exploitation in the wild or a public proof of concept, as of 4 November 2026. The advisories were published on 3 November with the patches, so the details are now public; patch rather than wait for reports.