CVE-2026-23864: the React Server Components DoS, affected versions and fix

CVE-2026-23864 is a group of denial of service bugs in React Server Components, published January 26, 2026 and rated 7.5 (high). Crafted requests to a Server Function endpoint can crash the server, exhaust its memory or pin its CPU, with no login. It affects React's server packages before 19.0.4, 19.1.5 and 19.2.4, and Next.js App Router apps from 13.0.0 below each line's fix. Next.js 13 and 14 never got one.

The team behind Keybrum's attacksUpdated 11 min read
CVE-2026-23864high ยท CVSS 7.5
Component
React Server Components (react-server-dom-webpack, -parcel, -turbopack) and the Next.js App Router (next)
Affected
React server packages 19.0.0 to 19.0.3, 19.1.0 to 19.1.4 and 19.2.0 to 19.2.3; Next.js 13.0.0 to 16.1.4 with the App Router, before the fixed release of each line
Fixed in
React 19.0.4, 19.1.5, 19.2.4; Next.js 15.0.8, 15.1.12, 15.2.9, 15.3.9, 15.4.11, 15.5.10, 16.0.11, 16.1.5 (no fix on 13.x or 14.x). Current patches: Next.js 16.4.5 or 15.5.29
Published
January 26, 2026

In short

  • CVE-2026-23864 takes an app offline and does nothing else: crafted requests to a Server Function endpoint, sent without an account, can crash the process, exhaust its memory or pin its CPU. It runs no code and reads no data.
  • React 19.0.3, 19.1.4 and 19.2.3, the December 2025 fixes, are not enough. The fixed React versions are 19.0.4, 19.1.5 and 19.2.4, and for Next.js 15.0.8, 15.1.12, 15.2.9, 15.3.9, 15.4.11, 15.5.10, 16.0.11 and 16.1.5.
  • Next.js 13 and 14 got no patch for this CVE. The first fixed release for them is 15.0.8, so the fix is a major upgrade.
  • In a Next.js app, read the next version. Next.js ships its own copy of the React server code, so npm ls react-server-dom-webpack can print nothing and updating react changes nothing.
  • Treat the fixed versions as a floor. In November 2026 the current Next.js patches are 16.4.5 and 15.5.29.
On this page

What CVE-2026-23864 is, in plain words

React Server Components (RSC) run part of a React app on the server. Server Functions, called Server Actions in Next.js, are functions on the server that the browser calls with an HTTP POST request, and React decodes the body of that request on the server before your code sees it. CVE-2026-23864 covers several bugs in that decoding: a specially crafted request can crash the server, cause out-of-memory exceptions or burn CPU, depending on the code path it reaches, the app's configuration and its own code. The bugs live in three npm packages, react-server-dom-webpack, react-server-dom-turbopack and react-server-dom-parcel, and in every framework that ships them.

The React team published it on January 26, 2026, after security researchers found more denial of service cases in code it had already patched twice in December 2025. Its blog post is blunt about it: the earlier fixes were incomplete, and anyone who had updated to 19.0.3, 19.1.4 or 19.2.3 had to update again. Vercel's summary credits Mufeed VH of Winfunc Research, Joachim Viide, RyotaK of GMO Flatt Security and Xiangwei Zhang of Tencent Security YUNDING LAB.

What it does not do matters as much. It runs no code on your server and reads no data: Vercel states that these bugs do not allow remote code execution, and the CVSS vector rates confidentiality and integrity as untouched. The cost is downtime. A self-hosted next start server is a single Node.js process by default, so while that process is stuck on CPU or restarting after a crash, the whole site stops answering.

Affected and fixed versions

Two advisories carry the ranges: GHSA-83fc-fqcc-2hmg for the React packages and GHSA-h25m-26qc-wcjf for Next.js. In a Next.js app, the next rows are the ones to read.

Package and lineAffectedFirst fixed
react-server-dom-* 19.019.0.0 to 19.0.319.0.4
react-server-dom-* 19.119.1.0 to 19.1.419.1.5
react-server-dom-* 19.219.2.0 to 19.2.319.2.4
next 13.x and 14.xEvery release from 13.0.0None: move to 15.0.8 or later
next 15.015.0.0 to 15.0.715.0.8
next 15.115.1.0 to 15.1.1115.1.12
next 15.215.2.0 to 15.2.815.2.9
next 15.315.3.0 to 15.3.815.3.9
next 15.415.4.0 to 15.4.1015.4.11
next 15.515.5.0 to 15.5.915.5.10
next 16.016.0.0 to 16.0.1016.0.11
next 16.116.1.0 to 16.1.416.1.5
next canaries15.6 before canary.61, 16.2 before canary.915.6.0-canary.61, 16.2.0-canary.9
From the two GitHub advisories and Vercel's summary. The 16.2.0-canary.9 fix appears only in Vercel's list. The Next.js advisory starts its 15.1 and 15.5 ranges at 15.1.1-canary.0 and 15.5.1-canary.0, which leaves 15.1.0 and 15.5.0 out, while its own text says Next.js 15.x is affected. Treat both as affected.

Severity and exploitation status

ItemValue
CVSS 3.1 score7.5, high. The React blog post, both GitHub advisories, CISA and Red Hat all give it. Meta's CVE record carries no score of its own, and NVD shows the CISA and Red Hat scores without adding one.
VectorAV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H: over the network, low complexity, no account, no user action, availability only
WeaknessesCWE-400 (uncontrolled resource consumption), CWE-502 (deserialization of untrusted data), CWE-1284 (unchecked quantity in input)
CISA KEVNot listed in the catalog released on November 6, 2026
CISA assessment at publicationExploitation: none. Automatable: yes. Technical impact: partial.
Exploited in the wildUnknown. No vendor or CISA source reports attacks.

The line to weigh is automatable: no login and no user action means a script can send these requests on its own.

Who is affected

Your app is affected if a server runs React Server Components with one of the vulnerable package versions. In practice:

  • Next.js 13.x to 16.x with the App Router (an app directory), below the fixed release of its line. The Next.js advisory names the App Router, so a project that only uses the pages directory is outside its scope.
  • Other RSC frameworks and plugins. Vercel's summary lists Vite, Parcel, React Router, RedwoodSDK and Waku setups that embed React Server Components. There, the react-server-dom-* version in your lockfile decides.
  • Not affected: React code that only runs in the browser. The React advisory says an app whose React code does not use a server, or that uses no framework, bundler or plugin with React Server Components support, is not affected. A single page app or a Next.js static export (output: 'export') fits that description.

Server Actions are not the dividing line. The advisories describe the trigger as a request to a Server Function endpoint, but neither says that an App Router app without Server Actions is safe. If you run the App Router on an affected version, treat the app as affected.

Vercel, Netlify, Cloudflare or your own server

Where the app runsProtection while you upgradeWhat to do
VercelWAF rules deployed on January 26, 2026 to every project, at no cost. Vercel adds that you should not rely on them for full protection.Upgrade and redeploy.
NetlifyNetlify calls the impact minimal there: its serverless functions scale out, so a crashed or hung function does not affect other requests. It warns that attacks could still raise your function costs.Upgrade and redeploy.
Behind Cloudflare, proxiedManaged Ruleset rules named React Server - DOS - CVE:CVE-2026-23864, released on January 26, 2026 with the action Block. In May 2026 Cloudflare wrote that they are on by default for Managed Ruleset customers, Free plan included.Check the rules in your dashboard, then upgrade.
Your own server: next start, a container, a VPSNothing, unless you put a filter in front.Upgrade first. This is the most exposed setup.

How to check if your app is affected

Read the version that is installed, not the range in package.json: "next": "^15.1.0" installs whatever your lockfile pinned, which can be years old. Run these at the root of the project:

bash
# npm
npm ls next

# pnpm (add -r in a monorepo)
pnpm why next

# yarn
yarn why next

# the version Next.js reports for itself
npx next --version

# other RSC frameworks: the React server packages
npm ls react-server-dom-webpack react-server-dom-turbopack react-server-dom-parcel
Compare the result with the table above.

Read it from the lockfile

bash
# package-lock.json
grep -A2 '"node_modules/next": {' package-lock.json

# pnpm-lock.yaml
grep -E '^  /?next@' pnpm-lock.yaml

# yarn.lock (Yarn 1 and Yarn Berry)
grep -A2 -E '^"?next@' yarn.lock
Your host installs what the lockfile says at build time. In a monorepo, check every app that has its own next.

Check what production runs

A fixed lockfile proves nothing about a build that never shipped. Load a page of your live app and type next.version in the browser console: Vercel's React2Shell bulletin gives it as the way to read the running version. To see whether production answers React Server Components requests at all, send your own app the header the App Router uses:

bash
curl -s -o /dev/null -D - -H "RSC: 1" https://your-app.example/ | grep -i content-type
Run it against your own app only: it is an ordinary page request with no payload. text/x-component means the App Router answers RSC requests, so the code path behind this CVE is live. text/html usually means a Pages Router or static page.

How to fix CVE-2026-23864

Upgrade, rebuild and redeploy. Neither advisory offers a setting that turns the flaw off. Aim above the fixed versions in the table: React has shipped new server package releases on every line since January, the latest being 19.0.9, 19.1.10, 19.2.9 and 19.3.1 on October 14, 2026, and Cloudflare's May 2026 changelog covers newly disclosed denial of service bugs in the same code. The current Next.js patches, from the November 2026 security release, are 16.4.5 on the Active LTS line and 15.5.29 on the Maintenance LTS line.

bash
# Next.js 16, Active LTS (current patch in November 2026)
npm install [email protected]

# Next.js 15, Maintenance LTS, if 16 is out of reach for now
npm install [email protected]

# the same with pnpm or yarn
pnpm add [email protected]
yarn add [email protected]

# React Router, Waku, RedwoodSDK, Vite or Parcel RSC setups:
# keep react, react-dom and the server package on the same version
npm install react@latest react-dom@latest react-server-dom-webpack@latest
Commit the new lockfile, then rebuild and redeploy. Use the server package your bundler needs: webpack, turbopack or parcel. Outside Next.js, also update the framework or plugin itself to its latest release, as Vercel's summary advises.

On Next.js 13 or 14, there is no patch to install. The advisory's first range runs from 13.0.0 up to 15.0.8, and the last 14.x release, 14.2.35, came out on December 11, 2025, before this CVE existed. Moving to 15.5 or 16 is a major upgrade: plan it with the Next.js upgrade guides, and keep a WAF in front of the app until it ships.

If you cannot upgrade today

  • Put a WAF in front. On Vercel the rules are already there. With Cloudflare, proxy the app's DNS record and check that the CVE-2026-23864 rules in the Managed Ruleset are set to Block.
  • Run more than one instance, behind a health check that restarts a process that stops answering. A stuck process then costs one instance, not the whole site.
  • Rate limit POST requests to your pages at the proxy. It caps how much a stranger can send, though one expensive request can still get through.
  • Learn the symptom: a Node.js process pinned at full CPU, memory that climbs until the process dies, or restarts that follow bursts of POST requests.

What to do after upgrading

  1. 1

    Confirm production runs the fix

    Redeploy without reusing an old build, then type next.version in the console of your live site. A cached build or an old container image can keep the vulnerable code online.

  2. 2

    Rebuild every environment

    Preview and staging deployments built before the upgrade keep running the old code. Rebuild or delete them, and check every app in a monorepo.

  3. 3

    Skip the key rotation, unless another CVE applies

    This bug reads nothing, so it is no reason by itself to rotate secrets. If your next version was also below the React2Shell fix, follow the CVE-2025-55182 page: that one allowed remote code execution.

  4. 4

    Turn on advisory alerts

    Dependabot alerts on GitHub, or npm audit in your build, flag new advisories on next and the React server packages once they reach the GitHub Advisory Database.

CVE-2026-23864 is the fifth CVE in React Server Components in eight weeks. A release that fixes a later row also contains the fixes above it on the same line.

CVEWhat it doesSeverityFixed in React
CVE-2025-55182 (React2Shell)Remote code executionCritical, 10.019.0.1, 19.1.2, 19.2.1
CVE-2025-55183Exposes the source code of Server FunctionsMedium, 5.319.0.2, 19.1.3, 19.2.2
CVE-2025-55184Denial of serviceHigh, 7.519.0.2, 19.1.3, 19.2.2 (incomplete)
CVE-2025-67779Denial of service, a case the fix above missedHigh, 7.519.0.3, 19.1.4, 19.2.3
CVE-2026-23864 (this page)Denial of service: crash, memory or CPUHigh, 7.519.0.4, 19.1.5, 19.2.4
Next.js shipped each fix in its own releases, so compare your next version with each CVE page, not with this column.

Timeline

DateEvent
December 3, 2025React2Shell (CVE-2025-55182) is disclosed. React 19.0.1, 19.1.2 and 19.2.1 ship.
December 11, 2025CVE-2025-55184 and CVE-2025-55183, then CVE-2025-67779. React 19.0.3, 19.1.4 and 19.2.3 ship.
January 16, 2026Meta reserves CVE-2026-23864.
January 26, 2026React 19.0.4, 19.1.5 and 19.2.4 and Next.js 15.0.8 to 16.1.5 reach npm, the CVE is published, the React blog post is updated, and Vercel and Cloudflare deploy WAF rules.
January 28 and 29, 2026The Next.js and React advisories appear in the GitHub Advisory Database.
May 2026Cloudflare says its CVE-2026-23864 rules also cover newly disclosed denial of service bugs in React.
November 3, 2026Next.js 16.4.5 and 15.5.29, the current patches on the two LTS lines.

What Keybrum checks on a live app

Keybrum never sends a denial of service payload: crashing a server to prove a point is downtime for the person who asked for the test. So for this CVE it proves the surface, not the bug. With one ordinary request carrying the RSC header, it checks whether your production domain answers the React Server Components protocol and counts the Server Action ids your JavaScript ships. The report then lists the React2Shell family, its denial of service CVEs included, as not tested. The version checks above tell you whether that surface is patched.

For the rest of the framework, read the Next.js security guide. For what AI-built apps leak most often, see vibe coding security risks.

Questions

Is CVE-2026-23864 a remote code execution bug?

No. It is a denial of service: crafted requests can crash the server, exhaust its memory or pin its CPU. Vercel states that these bugs do not allow remote code execution, and the CVSS vector rates confidentiality and integrity as untouched.

Does React CVE-2026-23864 affect apps that do not use Next.js?

Yes, if a server runs React Server Components through react-server-dom-webpack, -turbopack or -parcel 19.0.0 to 19.2.3, as in React Router, Waku, RedwoodSDK, Vite or Parcel RSC setups. Update to 19.0.4, 19.1.5 or 19.2.4 or later. React that only runs in the browser is not affected.

I updated React to 19.2.4. Is my Next.js app fixed?

No. Next.js ships its own copy of the React server code, so the react version in your project does not patch it. Upgrade next itself, ideally to 16.4.5 or 15.5.29.

Is there a CVE-2026-23864 fix for Next.js 14?

No. The Next.js advisory marks every release from 13.0.0 up to 15.0.8 as affected, and the last 14.x release came out in December 2025, before the CVE. You have to move to Next.js 15 or 16.

Is the Next.js Pages Router affected?

The Next.js advisory names only apps that use the App Router, where Server Functions run. A project that only uses the pages directory is outside its scope, though no advisory states outright that Pages Router apps are safe.

Am I protected if my app is hosted on Vercel?

Vercel deployed WAF rules for every project on January 26, 2026, and says not to rely on them for full protection. Upgrade next and redeploy all the same.

Do I need to rotate my secrets after CVE-2026-23864?

Not because of this CVE: it reads no data. Rotate if your version was also below the fix for React2Shell or CVE-2025-55183, which can expose code and the secrets written in it.

Sources

  1. 1.CVE-2026-23864, NIST National Vulnerability Database
  2. 2.CVE-2026-23864 record, CVE Program
  3. 3.React Server Components have multiple Denial of Service Vulnerabilities (GHSA-83fc-fqcc-2hmg), GitHub Advisory Database
  4. 4.Next.js HTTP request deserialization can lead to DoS when using insecure React Server Components (GHSA-h25m-26qc-wcjf), GitHub Advisory Database
  5. 5.Denial of Service and Source Code Exposure in React Server Components (updated January 26, 2026), React
  6. 6.Summary of CVE-2026-23864, Vercel
  7. 7.Security Update: DoS vulnerability in Next.js and React Server Components, Netlify
  8. 8.Next.js November 2026 security release, Next.js
  9. 9.WAF Release 2026-01-26, Cloudflare
  10. 10.WAF and framework adapter mitigations for React and Next.js vulnerabilities, Cloudflare
  11. 11.Known Exploited Vulnerabilities Catalog, CISA
  12. 12.React2Shell security bulletin (checking the running Next.js version), Vercel
  13. 13.next on npm (versions and dependencies), npm
  14. 14.react-server-dom-webpack on npm (versions), npm

Your app is public. So are its mistakes.

Check what any attacker can already see in it, free, in ten seconds. The full attack, with proof and fixes: โ‚ฌ49 once, or โ‚ฌ29 a month on a plan.

or continue with Google or GitHub