In short
- A stranger can hang the Node.js process that serves your app with one request and no account. Nothing is read or changed: the damage is downtime, for as long as they keep sending.
- Next.js 13.3 and 14.x with the App Router are affected, though React2Shell did not touch them. Pages Router apps and React that only runs in the browser are not.
- The first patch was incomplete (CVE-2025-67779), and four more denial of service CVEs followed in the same React code through July 2026. On Next.js, go straight to 16.4.5 or 15.5.29.
- There is no workaround. Vercel and Cloudflare filter known request patterns, but Cloudflare's changelogs list its rule for this CVE as disabled by default, and both say to upgrade anyway.
- CISA rates exploitation as proof of concept and the attack as automatable, yet CVE-2025-55184 is not in CISA's Known Exploited Vulnerabilities catalog as of November 2026.
On this page
What CVE-2025-55184 is, in plain words
React Server Components (RSC) run part of a React app on the server. When a page calls a Server Function (a Server Action, in Next.js), the browser sends the arguments in React's Flight format and the server decodes them back into values. CVE-2025-55184 is a bug in that decoding step: the affected versions unsafely deserialize the request, and a crafted payload sends the server into an infinite loop. The process hangs, keeps burning CPU and stops answering other requests.
No account is needed: it happens before any login. No Server Function of your own is needed either: the React team warns that an app can be vulnerable as soon as it supports React Server Components. And one request is enough, because Node.js runs your server's JavaScript on a single thread per process. The Node.js documentation describes the general case: input that blocks that thread keeps the server from working for other clients, which is a denial of service.
What a stranger can and cannot do
- Take your app offline. A crafted request hangs the server process that receives it. If your app runs as one
next startprocess on a VPS, that is the whole site. - Keep it offline. The request is cheap to repeat and CISA rates the attack as automatable, so a restart only lasts until the next one arrives.
- Nothing more. This CVE gives no access to your data, your secrets or your code. Remote code execution in the same code was React2Shell, CVE-2025-55182, and the source code leak disclosed the same day is CVE-2025-55183.
Severity and exploitation status
Meta, the CVE numbering authority (CNA) for React, rates it 7.5, high, with the CVSS 3.1 vector AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H: reachable over the network, low complexity, no privileges, no user interaction, no impact on confidentiality or integrity, high impact on availability. NVD displays Meta's score and has not published a different one. The weakness classes are CWE-502, deserialization of untrusted data, and CWE-400, uncontrolled resource consumption.
Who is affected
| Setup | Affected by CVE-2025-55184? |
|---|---|
| Next.js 13.3 to 14.x with the App Router, before 14.2.35 | Yes, unlike React2Shell |
| Next.js 15.x or 16.0.x with the App Router, before 15.0.7, 15.1.11, 15.2.8, 15.3.8, 15.4.10, 15.5.9 or 16.0.10 | Yes, with default settings |
| Next.js canaries before 15.6.0-canary.60 or 16.1.0-canary.19 | Yes |
| A Next.js app that uses only the Pages Router | No, though the Next.js team still recommends upgrading |
React Router (RSC APIs), Waku, @parcel/rsc, the Vite RSC plugin or RedwoodSDK, with a react-server-dom-* package at 19.0.0, 19.0.1, 19.1.0 to 19.1.2, 19.2.0 or 19.2.1 | Yes |
| React that only runs in the browser, such as a Vite single-page app on Supabase | No: no server decodes Flight requests |
Look at the first row twice. Teams on Next.js 14 sat out the React2Shell rush in December 2025 because it did not apply to them. This CVE does, and so do the 2026 follow-ups, which have no fix on Next.js 14 at all.
Hosted on Vercel, behind Cloudflare, or self-hosted
Your version decides. Hosting only changes how exposed you are until you patch. Vercel deployed WAF rules (a web application firewall filters requests before they reach your app) for this CVE to every project at no cost, and blocks new deployments of vulnerable versions. It also states that WAF rules cannot cover every variant of an attack and that upgrading is required.
Cloudflare added a managed rule on December 11, 2025, named React - DoS - CVE-2025-55184. The rule tables in its December 2025 and May 2026 changelogs give its default action as Disabled, while the rule for CVE-2026-23864 blocks, even though the May post's text says both block by default. If you count on Cloudflare in front of a self-hosted app, open the Managed Ruleset in your dashboard and check what that rule does. On a server you run yourself with next start, in a container or on a VPS, you only have the filters you set up, and a single process is a single point of failure.
How to check if your app is affected
Check the version that is installed, not the range in package.json: "next": "^14.1.0" can still resolve to 14.1.0 in your lockfile. Run these at the root of your project:
# npm
npm ls next react-server-dom-webpack react-server-dom-turbopack react-server-dom-parcel
# pnpm (add -r in a monorepo)
pnpm why next
# yarn
yarn why next
# the version Next.js reports for itself
npx next --versionRead it from the lockfile
# package-lock.json
grep -A1 '"node_modules/next"' package-lock.json
# pnpm-lock.yaml
grep -E '^ /?next@' pnpm-lock.yaml
# yarn.lock (Yarn 1 and Yarn Berry)
grep -A1 -E '^"?next@' yarn.locknext dependency.Check what production runs
A patched repository says nothing about a build that was never redeployed. Open your live site, open the browser console and type next.version: Vercel's bulletin lists it as a way to read the running version. To see whether production serves React Server Components at all, send your own app the header the App Router uses for RSC requests:
curl -s -o /dev/null -D - -H "RSC: 1" https://your-app.example/ | grep -i content-typetext/x-component means the App Router answers RSC requests, so the code path of this CVE is live. text/html usually means a Pages Router or static page. If the address redirects, run it on the page it redirects to.How to fix CVE-2025-55184
There is no workaround: the Next.js team says upgrading is required. The fixes came in two steps on December 11, 2025, because the first one missed some payloads:
| Release line | First patch (incomplete) | Complete fix (CVE-2025-67779) |
|---|---|---|
| Next.js 13.3 to 14.x | 14.2.34 | 14.2.35 |
| Next.js 15.0 | 15.0.6 | 15.0.7 |
| Next.js 15.1 | 15.1.10 | 15.1.11 |
| Next.js 15.2 | 15.2.7 | 15.2.8 |
| Next.js 15.3 | 15.3.7 | 15.3.8 |
| Next.js 15.4 | 15.4.9 | 15.4.10 |
| Next.js 15.5 | 15.5.8 | 15.5.9 |
| Next.js 16.0 | 16.0.9 | 16.0.10 |
| React server packages | 19.0.2, 19.1.3, 19.2.2 | 19.0.3, 19.1.4, 19.2.3 |
Those floors are history. In January 2026 the React team found more denial of service cases (CVE-2026-23864) and declared 19.0.3, 19.1.4 and 19.2.3 incomplete too. Three more CVEs followed in April, May and July 2026, and another React advisory in October 2026 (CVE-2026-94482 on the Next.js side). Next.js 13 and 14 got no fix for any of them: the January Next.js advisory already lists every version from 13.0.0 up to 15.0.8 as affected, and from April on the fixes ship only on the 15.5 and 16 lines. So the target is the current patch of a supported line:
# Next.js 16 (Active LTS), current patch on November 6, 2026
npm install [email protected]
# Next.js 15 (Maintenance LTS), if 16 is not possible yet
npm install [email protected]
# the same with pnpm or yarn
pnpm add [email protected]
yarn add [email protected]
# React Router, Waku, Parcel, the Vite RSC plugin, RedwoodSDK:
# update React and the server package your bundler uses (webpack, parcel or turbopack)
npm install react@latest react-dom@latest react-server-dom-webpack@latestOutside Next.js, the React server packages need at least 19.0.9, 19.1.10, 19.2.9 or 19.3.1, the versions that fix the October 2026 advisory GHSA-h3gv-c5rc-p453; the latest release is 19.3.1. Stuck on Next.js 13 or 14 for now? 14.2.35 closes this CVE but none of the 2026 ones, so treat it as a stopgap while you plan the move.
What to do after upgrading
- 1
Confirm production runs the fix
Redeploy, then type
next.versionin the console of your live site. A build cache or an old container image can keep the vulnerable version online. - 2
Protect old deployments
Preview deployments built before the fix still run the old code. Vercel recommends Standard Protection on every deployment except your production domain, and a review of the shareable links that point to previews.
- 3
Rotate secrets only if another CVE applies
This bug reads nothing, so it is no reason on its own to rotate keys. If your
nextversion was also below the React2Shell fix, follow the React2Shell page. If secrets are written in plain text inside Server Functions, CVE-2025-55183 could expose them, and those need rotating. - 4
Make a hung process cost less
Learn the symptom: a Node.js process pinned on CPU that stops answering while timeouts climb. More than one instance, behind a health check that restarts a process that stops responding, limits the damage of this whole class of bug. It does not replace the upgrade.
Related CVEs in the same family
CVE-2025-55184 was found by researchers studying the React2Shell patch, and more bugs followed in the same decoding code. Each row below needs a newer version than the one before it.
| CVE | What it does | Severity | Fixed React versions |
|---|---|---|---|
| CVE-2025-55182 | Remote code execution (React2Shell) | Critical, 10.0 | 19.0.1, 19.1.2, 19.2.1 |
| CVE-2025-55183 | Returns the source code of Server Functions | Medium, 5.3 | 19.0.2, 19.1.3, 19.2.2 |
| CVE-2025-55184 (this page) | Denial of service, infinite loop | High, 7.5 | 19.0.2, 19.1.3, 19.2.2 (incomplete) |
| CVE-2025-67779 | Denial of service, completes the fix above | High, 7.5 | 19.0.3, 19.1.4, 19.2.3 |
| CVE-2026-23864 | Denial of service: CPU, memory or crash | High, 7.5 | 19.0.4, 19.1.5, 19.2.4 |
| CVE-2026-23869 | Denial of service, CPU | High, 7.5 | 19.0.5, 19.1.6, 19.2.5 |
| CVE-2026-23870 | Denial of service: CPU, memory or crash | High, 7.5 | 19.0.6, 19.1.7, 19.2.6 |
| CVE-2026-44907 | Denial of service in Server Functions | High, 7.5 | 19.0.8, 19.1.9, 19.2.8 |
| GHSA-h3gv-c5rc-p453 (no CVE id; CVE-2026-94482 in Next.js) | Denial of service in Server Functions | High | 19.0.9, 19.1.10, 19.2.9, 19.3.1 |
next version, not these.Next.js has also fixed two denial of service bugs of its own in App Router apps with Server Actions, CVE-2026-64641 (July 2026) and CVE-2026-94482 (October 2026). 16.4.5 and 15.5.29 include both.
Timeline
| Date | Event |
|---|---|
| December 3, 2025 | React2Shell (CVE-2025-55182) disclosed and patched. |
| December 4 | RyotaK of GMO Flatt Security reports the denial of service to Meta's bug bounty. |
| December 6 to 10 | The React team confirms it and builds fixes. Hosting providers are notified and put mitigations in place. |
| December 11 | Shinsaku Nomura of Bitforest reports another denial of service case. React 19.0.2, 19.1.3 and 19.2.2 ship with matching Next.js releases, CVE-2025-55184 and CVE-2025-55183 are published, and Cloudflare releases emergency WAF rules. |
| December 11, later | A missed case, found internally, is fixed as CVE-2025-67779: React 19.0.3, 19.1.4, 19.2.3 and Next.js 14.2.35 to 16.0.10. |
| January 26, 2026 | CVE-2026-23864: more denial of service cases, and the December patches are declared incomplete. |
| April 10, May 11, July 24 | CVE-2026-23869, CVE-2026-23870 and CVE-2026-44907. |
| October 14, 2026 | React advisory GHSA-h3gv-c5rc-p453, fixed in 19.0.9, 19.1.10, 19.2.9 and 19.3.1; Next.js ships the matching fix in 16.4.1 and 15.5.28 (CVE-2026-94482). |
| November 3, 2026 | Next.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: hanging a server to prove a point is downtime for its owner. So for this CVE, a Keybrum attack proves the surface, not the bug. With one ordinary request carrying the RSC header, it confirms that your production domain answers the React Server Components protocol, counts the Server Action ids your JavaScript ships, and reports the version floor for the whole family, CVE-2025-55184 and CVE-2025-67779 included. The version check above tells you whether that surface runs a patched release.
The Next.js security guide covers the rest of the framework, and vibe coding security risks covers what AI-built apps leak most often.
Questions
Is CVE-2025-55184 a remote code execution vulnerability?
No. It lets a stranger hang your server process, and gives no access to code, data or secrets. Remote code execution in the same React code was CVE-2025-55182, React2Shell, patched eight days earlier.
Does CVE-2025-55184 affect Next.js 14?
Yes, from Next.js 13.3 onward with the App Router, unlike React2Shell. The fix on that line is 14.2.35. The 2026 denial of service CVEs in the same family have no fix on Next.js 14, and their current fixes ship only on 15.5 and 16, so plan the upgrade.
I patched React2Shell in December 2025. Am I covered?
No. The React2Shell fixes, React 19.0.1, 19.1.2 and 19.2.1 and Next.js 15.0.5 to 16.0.7, are affected by CVE-2025-55184. Upgrade to the current patch: Next.js 16.4.5 or 15.5.29 as of November 2026.
What is the difference between CVE-2025-55184 and CVE-2025-67779?
They are the same denial of service. The first fix, published on December 11, 2025, did not cover every payload type, and CVE-2025-67779 was assigned the same day for the complete fix. If you stopped at React 19.0.2, 19.1.3 or 19.2.2, or at Next.js 14.2.34 or 15.0.6, you are still affected.
Is there a workaround for the React Server Components denial of service?
No. The Next.js team says upgrading is the only fix. Vercel and Cloudflare WAF rules filter known request patterns while you upgrade, and both providers say not to rely on them.
Is CVE-2025-55184 exploited in the wild?
Not confirmed. CISA rates exploitation as proof of concept and the attack as automatable, but the CVE is not in CISA's Known Exploited Vulnerabilities catalog as of November 2026. Treat it as easy to run: the CVSS vector rates attack complexity as low.
Sources
- 1.CVE-2025-55184 Detail, NIST National Vulnerability Database
- 2.CVE-2025-55184 record, CVE Program
- 3.Denial of Service Vulnerability in React Server Components (GHSA-2m3v-v2m8-q956), GitHub Advisory Database
- 4.Next Vulnerable to Denial of Service with Server Components (GHSA-mwv6-3258-q52c), GitHub Advisory Database
- 5.Denial of Service and Source Code Exposure in React Server Components, React
- 6.Next.js Security Update: December 11, 2025, Next.js
- 7.Next has a Denial of Service with Server Components, Incomplete Fix Follow-Up (GHSA-5j59-xgg2-r9c4), GitHub Advisory Database
- 8.Denial of Service Vulnerability in React Server Components, CVE-2025-67779 (GHSA-7gmr-mq3h-m5h9), GitHub Advisory Database
- 9.Next.js HTTP request deserialization can lead to DoS, January 2026 (GHSA-h25m-26qc-wcjf), GitHub Advisory Database
- 10.Next.js has a Denial of Service with Server Components, April 2026 (GHSA-q4gf-8mx6-v5v3), GitHub Advisory Database
- 11.react-server-dom: Denial of Service in Server Functions, CVE-2026-44907 (GHSA-wx67-qw84-cm4g), GitHub Advisory Database
- 12.November 2026 Security Release, Next.js
- 13.Security Bulletin: CVE-2025-55184 and CVE-2025-55183, Vercel
- 14.WAF Release 2025-12-11, Emergency, Cloudflare
- 15.WAF and framework adapter mitigations for React and Next.js vulnerabilities, Cloudflare
- 16.Known Exploited Vulnerabilities Catalog, CISA
- 17.EPSS score for CVE-2025-55184, FIRST
- 18.Don't Block the Event Loop (or the Worker Pool), Node.js
- 19.Denial of Service in Server Functions (GHSA-h3gv-c5rc-p453), React