In short
- If you patched on December 11, 2025, check which release you got. React 19.0.2, 19.1.3 and 19.2.2 and Next.js 14.2.34, 15.0.6, 15.1.10, 15.2.7, 15.3.7, 15.4.9, 15.5.8 and 16.0.9 carry the incomplete fix.
- The complete fix shipped less than three hours later: React 19.0.3, 19.1.4 and 19.2.3, Next.js 14.2.35, 15.0.7 and so on up to 16.0.10. They do not cover CVE-2026-23864, disclosed in January 2026, or the React denial of service CVEs that followed.
- Only servers that decode React Server Components requests are affected: the Next.js App Router from 13.3, and other frameworks with RSC support. Pages Router apps and React that only runs in the browser are not.
- There is no workaround. Upgrade and redeploy: Next.js 16.4.5 or 15.5.29 as of November 2026, or the React server packages at 19.0.8, 19.1.9, 19.2.8 or later outside Next.js.
- No public report of attacks: CISA rated exploitation as none in December 2025, and the CVE is not in its Known Exploited Vulnerabilities catalog as of November 6, 2026. The damage is downtime: nothing is read or changed.
On this page
What CVE-2025-67779 is, in plain words
React Server Components (RSC) run part of a React app on the server. When the browser calls a Server Function (a Server Action, in Next.js), it sends the arguments in a serialized format and the server decodes them back into values. On December 11, 2025, React fixed a bug in that decoding step, CVE-2025-55184: a crafted request could send the server into an infinite loop. That fix did not cover every payload type. CVE-2025-67779 is the case it missed. On the releases that shipped the first fix, a crafted HTTP request to a Server Function endpoint still puts the process in an infinite loop that hangs it, and the server may stop serving other requests.
The React team found the missing case internally and shipped a complete fix the same day. The npm registry shows how short the window was: React 19.2.2, the first patch, was published at 20:02 UTC, and 19.2.3, the complete one, at 22:55 UTC. Next.js 14.2.34 went out at 21:01 UTC and 14.2.35 at 23:36 UTC. Anyone who upgraded during those hours, or pinned the version numbers from the first announcements, may still run a release with the gap.
What a stranger can and cannot do
- Hang your server process with one request and no account. The CVSS vector rates the attack as reachable over the network, with low complexity and no privileges needed.
- Keep it down. CISA rates the attack as automatable, so a restart only lasts until the next request arrives.
- Nothing more. The impact on confidentiality and integrity is rated none: no data, secret or source code leaks through this CVE. Code execution in the same React code was React2Shell, CVE-2025-55182.
Affected and fixed versions
Two databases draw the range a little differently. GitHub's advisories list mostly the releases that shipped the first patch (on Next.js 15 and 16, only those) and file older releases under CVE-2025-55184. NVD's record lists every Next.js release from 13.3.0 up to the complete fix. The fixed versions are the same in both, and an older release is affected by CVE-2025-55184 anyway. So the rule is simple: below the complete fix for your line, you are affected.
| Release line | Affected by CVE-2025-67779 (GitHub) | Complete fix |
|---|---|---|
| Next.js 13.3 to 14.x | 13.3 up to 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 |
| Next.js canaries | 15.6.0-canary.59, 16.1.0-canary.17 and 16.1.0-canary.18 | 15.6.0-canary.60, 16.1.0-canary.19 |
react-server-dom-webpack, -parcel, -turbopack | 19.0.2, 19.1.3, 19.2.2 | 19.0.3, 19.1.4, 19.2.3 |
There is no fixed Next.js 13 release: the Next.js advisory sends everyone on 13.3 or later to 14.2.35, which is still the newest 14.x release on npm.
Severity and exploitation status
Meta, the CVE numbering authority (CNA) for React, rates CVE-2025-67779 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: network access, low complexity, no privileges, no user interaction, and an impact on availability only. NVD displays Meta's score and has not published one of its own. It classifies the weakness as CWE-502, deserialization of untrusted data, and CISA adds CWE-400, uncontrolled resource consumption.
Who is affected
| Setup | Affected by CVE-2025-67779? |
|---|---|
| Next.js 13.3 or later with the App Router, on a release in the GitHub column above | Yes |
| Next.js 13.3 or later with the App Router, older than the first patch | Yes, through CVE-2025-55184, with the same fix |
| A Next.js app that uses only the Pages Router | No, though the Next.js team still recommends upgrading |
Another framework or bundler plugin with React Server Components support, with react-server-dom-* at 19.0.2, 19.1.3 or 19.2.2 | Yes |
| React that only runs in the browser, such as a Vite single-page app on Supabase | No: no server decodes these requests |
Your host does not change whether you are affected. The installed version does. Vercel updated its bulletin at 4:31 PM PST on December 11, 2025 to say the first fix was incomplete and that everyone must upgrade to the latest patched versions. On a server you run yourself, with next start on a VPS or in a container, a hung process is the whole site unless several instances share the traffic.
How to check your version
Check the version your lockfile installs, not the range in package.json. A project that pinned "next": "15.0.6" on December 11 stays on it until someone changes the line. 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
npx next --version# package-lock.json
grep -A1 '"node_modules/next"' package-lock.json
# pnpm-lock.yaml
grep -oE '(^| |/)next@[0-9][0-9A-Za-z.-]*' pnpm-lock.yaml | sort -u
# yarn.lock (Yarn 1 and Yarn Berry)
grep -A1 -E '^"?next@' yarn.lockCheck what production runs
A fixed lockfile in the repository says nothing about a build that was never redeployed. Near the top of its output, next build prints the Next.js version it runs, so read it in the log of your last production build. To see whether production answers React Server Components requests at all, send your own app the header the App Router uses for them:
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.How to fix CVE-2025-67779
There is no workaround: the Next.js advisory says upgrading to a patched version is required. The floors in the table above close this CVE, but they are not where you should stop. On January 26, 2026, the React team disclosed more denial of service cases as CVE-2026-23864, and GitHub's advisory for it lists 19.0.3, 19.1.4 and 19.2.3 as affected. The matching Next.js advisory lists every release from 13.0.0 below 15.0.8, and each later line below its January patch, 15.5.9 and 16.0.10 included. Three more React denial of service CVEs followed in April, May and July 2026. So install 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]
# other RSC frameworks: 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.8, 19.1.9 or 19.2.8, the versions that fix CVE-2026-44907 from July 2026. On November 6, 2026 the newest release of each line on npm was 19.0.9, 19.1.10, 19.2.9 and 19.3.1. If you are on Next.js 13 or 14 and cannot move yet, 14.2.35 closes CVE-2025-67779, but no newer 14.x release exists, and the 2026 Next.js advisories, such as CVE-2026-64641, another Server Actions denial of service, list every 14.x release with no 14.x fix. Treat it as a stopgap while you plan the move.
The December advisory also points to npx fix-react2shell-next, an interactive tool that checks your versions and bumps them to the releases that advisory recommended. It was built for the December releases, so check where it leaves you against the versions above.
What to do after upgrading
- 1
Confirm production runs the fix
Redeploy, then read the Next.js version in the build log, or run the version check on the lockfile your host built from. A build cache or an old container image can keep the vulnerable release online.
- 2
Retire old deployments
Preview and staging deployments built before the fix still run the old code, and they answer requests like production does. Delete the ones you do not need and put the rest behind access protection.
- 3
Rotate keys only if another CVE applies
This bug reads nothing, so it is no reason on its own to rotate secrets. If your version was also below the React2Shell fix, follow the React2Shell page: that one ran code on the server.
- 4
Make a hung process cost less
The symptom is a Node.js process pinned on CPU that stops answering while timeouts climb. Two or more instances, behind a health check that restarts a process that stops responding, limit the damage of this whole class of bug. It does not replace the upgrade.
Related CVEs in the same family
Every CVE below sits in the same React Server Components decoding code, and each one needs a newer release than the one before it. Next.js ships each fix in its own release, so on Next.js compare your next version with its advisory, not these React versions.
| 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 | Source code exposure | Medium, 5.3 | 19.0.2, 19.1.3, 19.2.2 |
| CVE-2025-55184 | Denial of service, infinite loop | High, 7.5 | 19.0.2, 19.1.3, 19.2.2 (incomplete) |
| CVE-2025-67779 (this page) | Denial of service, the case the fix above missed | High, 7.5 | 19.0.3, 19.1.4, 19.2.3 |
| CVE-2026-23864 | Several denial of service cases | High, 7.5 | 19.0.4, 19.1.5, 19.2.4 |
| CVE-2026-23869 | Denial of service | High, 7.5 | 19.0.5, 19.1.6, 19.2.5 |
| CVE-2026-23870 | Denial of service | 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 |
Timeline
| Date (UTC) | Event |
|---|---|
| December 3, 2025 | React2Shell (CVE-2025-55182) advisory published. |
| December 11, 20:02 | React 19.2.2 published, with 19.0.2 and 19.1.3, fixing CVE-2025-55184 and CVE-2025-55183. Next.js 15.5.8 follows at 20:08, 16.0.9 at 20:15 and 14.2.34 at 21:01. |
| December 11, 22:55 to 23:36 | The React team finds a missing denial of service case internally. React 19.2.3 is published at 22:55, Next.js 16.0.10 and 15.5.9 at 22:56, 14.2.35 at 23:36, and CVE-2025-67779 is published by Meta. |
| December 12, 00:31 | Vercel updates its bulletin: everyone must upgrade again. |
| December 12 | GitHub publishes GHSA-7gmr-mq3h-m5h9 for React and GHSA-5j59-xgg2-r9c4 for Next.js. CISA records its assessment: exploitation none, automatable. |
| January 26, 2026 | CVE-2026-23864: more denial of service cases, and the December fixes are no longer enough. |
| April 8, May 6, July 21, 2026 | CVE-2026-23869, CVE-2026-23870 and CVE-2026-44907 are published, each needing newer React server packages. |
| 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 lists the React2Shell family, its denial of service CVEs included, as a live surface that was not exploited. Whether that surface runs a patched release is what the version check above tells you.
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
What is CVE-2025-67779?
It is a high severity denial of service in React Server Components, assigned when the first fix for CVE-2025-55184 turned out to miss one case. A crafted request to a Server Function endpoint can put the server in an infinite loop. It affects React 19.0.2, 19.1.3 and 19.2.2 and the Next.js releases from the same first patch, such as 14.2.34 and 15.0.6.
I upgraded Next.js on December 11, 2025. Am I affected?
Check the exact version. 14.2.34, 15.0.6, 15.1.10, 15.2.7, 15.3.7, 15.4.9, 15.5.8 and 16.0.9 carry the incomplete fix and are affected. The complete fixes, 14.2.35 to 16.0.10, are in turn affected by CVE-2026-23864 from January 2026, so upgrade to Next.js 16.4.5 or 15.5.29.
Does react cve-2025-67779 affect apps without Next.js?
Only if a server decodes React Server Components requests: a framework or bundler plugin with RSC support that installs react-server-dom-webpack, -parcel or -turbopack at 19.0.2, 19.1.3 or 19.2.2. React that only renders in the browser is not affected, according to the React advisory. Today the server package should be at least 19.0.8, 19.1.9 or 19.2.8.
Is there a workaround for CVE-2025-67779?
No. The Next.js advisory says there is no workaround and that upgrading to a patched version is required. Running several instances behind a health check limits downtime while you upgrade, but it does not remove the bug.
Is CVE-2025-67779 exploited in the wild?
There is no public report of it. CISA rated exploitation as none on December 12, 2025, and the CVE is not in CISA's KEV catalog as of its November 6, 2026 release. The attack needs no account and CISA rates it as automatable, so patch as if someone will try it.
Is Next.js 14.2.35 enough?
For this CVE, yes: 14.2.35 is the complete fix on the 13.3 to 14.x line, and it is still the newest 14.x release on npm. The January 2026 Next.js advisory lists every release below 15.0.8 as affected by CVE-2026-23864, and no 14.x release fixes it or the later 2026 Next.js advisories. Treat 14.2.35 as a stopgap and plan the move to 15.5 or 16.
Sources
- 1.CVE-2025-67779 Detail, NIST National Vulnerability Database
- 2.CVE-2025-67779 record, CVE Program
- 3.Denial of Service Vulnerability in React Server Components (GHSA-7gmr-mq3h-m5h9), GitHub Advisory Database
- 4.Next has a Denial of Service with Server Components, Incomplete Fix Follow-Up (GHSA-5j59-xgg2-r9c4), 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.Security Bulletin: CVE-2025-55184 and CVE-2025-55183, Vercel
- 8.Denial of Service Vulnerability in React Server Components, CVE-2025-55184 (GHSA-2m3v-v2m8-q956), GitHub Advisory Database
- 9.React Server Components have multiple Denial of Service Vulnerabilities, CVE-2026-23864 (GHSA-83fc-fqcc-2hmg), GitHub Advisory Database
- 10.Next.js HTTP request deserialization can lead to DoS, January 2026 (GHSA-h25m-26qc-wcjf), GitHub Advisory Database
- 11.react-server-dom: Denial of Service in Server Functions, CVE-2026-44907 (GHSA-wx67-qw84-cm4g), GitHub Advisory Database
- 12.Next.js: Denial of Service in App Router using Server Actions, CVE-2026-64641 (GHSA-m99w-x7hq-7vfj), GitHub Advisory Database
- 13.November 2026 Security Release, Next.js
- 14.Known Exploited Vulnerabilities Catalog, CISA
- 15.EPSS score for CVE-2025-67779, FIRST
- 16.next: release dates and dist-tags, npm registry
- 17.react-server-dom-webpack: release dates and dist-tags, npm registry