In short
- Affected:
next16.0.0 to 16.4.0. Fixed in 16.4.1; 16.4.5 is current. No 15.x version is listed. - The advisory's condition: the App Router with Cache Components (
cacheComponents: true) and ause cachefunction that returns multiple typed arrays, such asUint8ArrayorFloat32Array. - GitHub rates it 9.5 Critical (CVSS 4.0). As of 8 November 2026 it has no CVE id, it is not in CISA's KEV catalog, and we found no public report of exploitation and no public proof of concept.
- There is no workaround. Upgrade even if your code has no matching function, as the advisory asks.
On this page
What GHSA-673q-mjm6-r5xr is
use cache is a directive that tells Next.js to store what a function, a component or a whole file returns, and reuse it across requests. It belongs to Cache Components, the caching model you switch on with cacheComponents: true in next.config. The directive arrived as an experimental feature in Next.js 15 and became stable in 16.0.0, behind that flag.
Cached results are stored in React's own serialization format, which accepts typed arrays: fixed-size arrays of binary numbers such as Uint8Array or Float32Array. The advisory says an App Router app with Cache Components is exposed when it has "a use cache function that returns multiple typed arrays", and files the flaw under CWE-502, deserialization of untrusted data. No login is needed. Remote code execution (RCE) means a stranger runs their own commands on your server, with everything the server can reach: environment variables, database credentials, internal services.
The root cause sits upstream, in the React Server Components transport. React published its own critical advisory the same day, GHSA-xqc2-xf4c-x3h3, for react-server-dom-webpack, react-server-dom-turbopack and react-server-dom-parcel. The Next.js fix, a commit titled "Improve Server Component transport protocol", updates the copies of React's server packages that ship inside next.
Severity and exploitation status
| Source | Rating | Detail |
|---|---|---|
| GitHub and Vercel (CVSS 4.0) | 9.5 Critical | AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:N: over the network, no account, no user action. AT:P marks the precondition, the typed-array function. |
| React upstream advisory GHSA-xqc2-xf4c-x3h3 | 9.5 Critical | Same vector. Fixed in the React server packages 19.0.9, 19.1.10, 19.2.9 and 19.3.1 |
| NVD | No record | No CVE id assigned as of 8 November 2026 |
| CISA KEV catalog | Not listed | Catalog version 2026.11.06, checked 8 November 2026. KEV only lists flaws that have a CVE id. |
| Public reports | No exploitation reported | The Cloud Security Alliance found none as of 15 October. We found none, and no public proof of concept, as of 8 November. |
React and Netlify both describe the precondition as rare. React says it "only affects extremely rare cases where responses transport multiple typed arrays and an attacker-controlled value". Netlify calls it "an unusual configuration not expected in normally functioning applications". For an app that matches, the impact is still full code execution.
Who is affected
Per the advisory, your app is exposed when all three of these are true:
- It runs
next16.0.0 to 16.4.0. - It uses the App Router with Cache Components enabled, which means
cacheComponents: trueinnext.config. Since 16.0.0,use cacheonly works with that flag. - At least one
use cachefunction, component or file returns multiple typed arrays.
The advisory sets no condition on hosting or operating system, unlike the SVG flaw fixed in the same release, which needs glibc-based Linux. Cache Components requires the Node.js runtime, so the cached function runs in your server's Node.js process wherever that process lives.
| Setup | What applies |
|---|---|
Self-hosted: next start, Docker, a VPS | Affected when the three conditions hold. |
| Netlify | Netlify says apps that meet the conditions are affected on its platform and that upgrading Next.js resolves it. |
| Vercel | Neither the advisory nor any Vercel statement we found says Vercel-hosted apps are shielded. Treat them as affected and upgrade. |
| 16.x without Cache Components | Outside the advisory's conditions. Upgrade anyway: the same release fixes two other flaws. |
| Next.js 15 and older | Not listed as affected, and the 15.5.28 release notes do not include this advisory. Upgrade to 15.5.29 for the other fixes. |
The advisory still asks every app on an affected version to upgrade "even if your application does not have similar functions". A typed array can hide inside a nested object or come from a library you did not write.
How to check your Next.js version
Read the version your lockfile resolves, not the range in package.json: "next": "^16.2.0" can install any 16.x from 16.2.0 up. At the root of the project:
# The installed version, from the project root
npm ls next
pnpm why next
yarn why next
# Or straight from the lockfile
grep -A2 '"node_modules/next"' package-lock.json
grep -E "^ '?/?next@" pnpm-lock.yamlIn a monorepo, check each app. npm audit reads the GitHub Advisory Database, which only published the reviewed record on 22 October, a week after the fix, so an audit from mid-October may have missed it. Run it again.
How to find use cache functions in your code
This search tells you how urgent the upgrade is, not whether to do it. Run it in your own project:
# Is Cache Components on?
grep -n "cacheComponents" next.config.*
# Every file with a use cache directive (use cache: remote and use cache: private included)
grep -rnE "^\s*['\"]use cache" . \
--include='*.ts' --include='*.tsx' --include='*.js' --include='*.jsx' --include='*.mjs' \
--exclude-dir=node_modules --exclude-dir=.next
# In those files, the lines that mention typed arrays, Buffers or raw bytes
grep -rlZE "^\s*['\"]use cache" . \
--include='*.ts' --include='*.tsx' --include='*.js' --include='*.jsx' --include='*.mjs' \
--exclude-dir=node_modules --exclude-dir=.next \
| xargs -0 -r grep -nHE "(Big)?U?[Ii]nt(8|16|32|64)(Clamped)?Array|Float(16|32|64)Array|Buffer|arrayBuffer"For each match, read what the function returns, including values nested in objects and arrays. Look for:
- Typed arrays by name:
Uint8Array,Int32Array,Float32Array,Float64Array,BigInt64Arrayand their siblings. A TypeScript return type that names one is the fastest tell. - Node.js
Buffervalues. The Node.js docs describeBufferas a subclass ofUint8Array, andfs.readFilewithout an encoding returns one, as doessharp(...).toBuffer(). - Bytes read from a response, such as
new Uint8Array(await res.arrayBuffer())after afetch. - Values passed through from a database driver or SDK that returns binary columns as
BufferorUint8Array, where the name never appears in your code.
A match does not prove your app can be exploited, and no match does not clear it. If a cached function on a public server returns several typed arrays, upgrade first, then work through the checklist below.
How to fix GHSA-673q-mjm6-r5xr
- 1
Upgrade Next.js
16.4.1 is the first fixed release. Install the latest 16.x instead, 16.4.5 from the 3 November 2026 security release:
npm install [email protected],pnpm add [email protected],yarn add [email protected]orbun add [email protected]. - 2
Upgrade next, not only react
The fix ships inside the
nextpackage, in its bundled copies of React's server packages. Bumpingreactorreact-domalone leaves those copies as they were. - 3
Commit the lockfile and redeploy
The fix reaches production only through the lockfile. If you build a Docker image, make sure the install step does not come from a stale cache.
- 4
Retire old deployments
Deploy previews, branch deploys and staging copies keep the old version while they stay online. Netlify warns about this for its previews, and it holds on any host that keeps old builds reachable.
What to check after upgrading
npm ls next, or the pnpm or yarn equivalent, shows 16.4.1 or later for every app in the repository.- Production was rebuilt from the new lockfile, and old previews and branch deploys are deleted or rebuilt.
npm auditno longer lists GHSA-673q-mjm6-r5xr.- If a cached function returned typed arrays on a public server before the upgrade, review that server's logs for the period and rotate the secrets it held if you cannot rule out misuse.
The November release that brought 16.4.5 also fixed advisories where Cache Components served one tenant's cached content to another. The Next.js security guide covers keeping per-user data out of shared caches.
Related Next.js advisories
- GHSA-2464-fhr4-w9xw: the other critical fix in 16.4.1, code execution through SVG images in the image optimizer, also patched in 15.5.28.
- CVE-2026-94482: the Server Actions denial of service fixed in the same release.
- CVE-2025-55182, React2Shell: an earlier code execution flaw in how React Server Components decode requests, listed in CISA's KEV catalog.
- CVE-2026-94483: the image optimizer SSRF fixed in 16.3.8.
Timeline
| Date | Event |
|---|---|
| 8 October 2026 | Next.js announces an out-of-band security update for 14 October: two critical and one high severity fix in upstream dependencies. |
| 14 October 2026 | React publishes GHSA-xqc2-xf4c-x3h3. Vercel publishes GHSA-673q-mjm6-r5xr in the Next.js repository, crediting the researcher evolutionstorm, and ships the fix in 16.4.1. 15.5.28 ships the same day for the other two flaws. |
| 16 October 2026 | The Cloud Security Alliance reports no public exploitation as of 15 October and notes the advisory was not yet in npm's advisory feed. |
| 22 October 2026 | The GitHub Advisory Database publishes the reviewed record, which npm audit and Dependabot read. |
| 3 November 2026 | The November security release ships 16.4.5 and 15.5.29. |
| 8 November 2026 | Still no CVE id. Not in CISA's KEV catalog (version of 6 November). |
Questions
Is Next.js 15 affected by GHSA-673q-mjm6-r5xr?
Not according to the advisory, which lists only next 16.0.0 to 16.4.0, and the 15.5.28 release notes do not include it. Next.js 15 is affected by the SVG image optimizer flaw fixed the same day, so upgrade to the latest 15.5 release, 15.5.29 today.
What is the Next.js use cache RCE?
It is a remote code execution flaw in Next.js 16 that affects App Router apps with Cache Components when a use cache function returns multiple typed arrays. No login is needed. GitHub rates it 9.5 Critical, and Next.js 16.4.1 fixes it.
Does it affect apps hosted on Vercel?
The advisory makes no hosting exception, and we found no Vercel statement that its platform blocks it. The fix is a dependency upgrade, so upgrade and redeploy wherever you host.
Is there a CVE for GHSA-673q-mjm6-r5xr?
Not as of 8 November 2026: the GitHub record lists no CVE id and NVD has no entry. Search for it by its GHSA id, which npm audit and Dependabot use.
Am I affected if Cache Components is off?
Not under the advisory's conditions: in Next.js 16, use cache needs cacheComponents: true. Upgrade anyway, because 16.4.1 also fixes the SVG code execution flaw and the Server Actions denial of service.
Is there a workaround for the Next.js use cache vulnerability?
No. The advisory says there is no known workaround for apps with such functions, and asks every app on an affected version to upgrade, even without similar functions.
Does Keybrum test for GHSA-673q-mjm6-r5xr?
No. Proving it would mean running code on your server, and Keybrum never runs remote code execution payloads.
Sources
- 1.GHSA-673q-mjm6-r5xr: Unauthenticated Remote Code Execution in use cache functions returning typed arrays, Vercel, GitHub Security Advisory
- 2.GHSA-673q-mjm6-r5xr, GitHub Advisory Database
- 3.GHSA-xqc2-xf4c-x3h3: Unauthenticated Remote Code Execution in React Server Components, React, GitHub Security Advisory
- 4.Next.js v16.4.1 release notes, vercel/next.js on GitHub
- 5.Improve Server Component transport protocol, vercel/next.js on GitHub
- 6.Next.js Security Update for Upstream Vulnerabilities, Next.js Blog
- 7.Upcoming Next.js Security Update for Upstream Vulnerabilities, Next.js Blog
- 8.November 2026 Security Release, Next.js Blog
- 9.use cache, Next.js Docs
- 10.cacheComponents, Next.js Docs
- 11.Next.js and React security release (Oct 2026): what to know, Netlify
- 12.Next.js out-of-band patch: critical RCE in use cache and librsvg, Cloud Security Alliance
- 13.Known Exploited Vulnerabilities Catalog, CISA
- 14.Reducing the significant risk of known exploited vulnerabilities (KEV criteria), CISA
- 15.Buffer, Node.js Docs
- 16.next: versions, npm