On December 3, 2025, the React team published a security advisory that should have stopped every developer using Next.js in their tracks: CVE-2025-55182, a CVSS 10.0 unauthenticated Remote Code Execution vulnerability affecting React Server Components. No authentication required. No user interaction. Near-100% exploit reliability against default configurations. By the following day, exploitation had already begun. By April 2026, threat actors had compromised at least 766 Next.js servers, deploying cryptocurrency miners, backdoors, and credential stealers.

Next.js powers 68% of JavaScript developers' projects and is installed tens of millions of times per week. This article covers every major security vulnerability disclosed in 2025-2026, exactly which versions are affected, how the exploits work, and the concrete steps you need to take today.

The 2025-2026 Next.js Vulnerability Cluster

The December 2025 and January 2026 disclosures were not isolated bugs — they represent a systematic audit of React Server Components (RSC) that uncovered a cluster of related vulnerabilities in the Flight protocol, the serialization mechanism that powers RSC communication between server and client.

10.0
CVSS score — CVE-2025-55182 (React2Shell)
Source: React Security Advisory, Dec 2025
766
Next.js servers breached as of April 2026
Source: The Hacker News, April 2026
68%
of JavaScript developers use Next.js
Source: State of JavaScript 2024 survey
60%
year-over-year download growth for Next.js
Source: npm download trends, 2025

CVE-2025-55182 (React2Shell) — CVSS 10.0 — The Critical RCE

This is the headline vulnerability. React2Shell (CVE-2025-55182) is an unauthenticated Remote Code Execution vulnerability rooted in insecure deserialization within the React Flight protocol — the transport layer used by React Server Components to stream data from server to client.

How the exploit works

The Flight protocol accepts POST requests to Server Function endpoints. An attacker sends a specially crafted HTTP payload containing a malformed serialized object. Because the deserialization logic does not adequately validate input, the malicious payload triggers arbitrary privileged JavaScript execution server-side — with the full permissions of the Node.js process running your Next.js application.

Attack characteristics:

  • No authentication required
  • No user interaction needed
  • Attack complexity: Low
  • Near-100% exploit reliability against default configurations (Unit 42, Palo Alto Networks)
  • Exploitation observed within 24 hours of public disclosure (December 4, 2025)

Affected versions

CVE-2025-55182 affects the following React versions, which ship with Next.js:

Package Affected versions Patched version
react 19.0, 19.1.0, 19.1.1, 19.2.0 19.0.1, 19.1.2, 19.2.1+
react-dom 19.0, 19.1.0, 19.1.1, 19.2.0 19.0.1, 19.1.2, 19.2.1+
next All versions using React 19 before patch Update React to patched version

What attackers deployed after exploitation

Google Cloud Threat Intelligence documented the post-exploitation payloads deployed on compromised Next.js servers:

  • MINOCAT — tunneling tool for persistent access and lateral movement
  • SNOWLIGHT — multi-stage downloader for secondary payloads
  • HISONIC — backdoor for long-term covert access
  • XMRIG — cryptocurrency miner consuming CPU resources
  • Credential stealers targeting environment variables, SSH keys, and cloud provider tokens

CVE-2026-23864 — CVSS 7.5 — DoS via Memory Exhaustion

Disclosed on January 26, 2026, this vulnerability is a Denial of Service flaw in the same Flight protocol, caused by insufficient array size limits on incoming POST requests. An attacker sends HTTP requests containing circular references or deeply nested character sequences, triggering infinite serialization loops that exhaust server memory and crash the process.

Affected packages and versions:

  • react-server-dom-webpack — versions 19.0.0 through 19.2.3
  • react-server-dom-parcel — versions 19.0.0 through 19.2.3
  • react-server-dom-turbopack — versions 19.0.0 through 19.2.3

Patched versions: React 19.0.4, 19.1.5, 19.2.4 and 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 (Akamai, Vercel, January 2026).

Note: this vulnerability is partially an incomplete fix of CVE-2025-55184, which disclosed the same DoS vector in December 2025.

CVE-2025-55183 & CVE-2025-55184 — Source Code Exposure and DoS

Disclosed alongside CVE-2025-55182 on December 3-11, 2025, these two companion vulnerabilities round out the Flight protocol vulnerability cluster:

CVE-2025-55183 — Source Code Exposure (Medium)

An information disclosure vulnerability in React Server Components that can leak server-side source code to unauthenticated clients in certain configurations. While less severe than the RCE, source code exposure gives attackers a significant advantage for further exploitation — allowing them to understand application logic, find additional endpoints, and map out secrets handling.

CVE-2025-55184 — Denial of Service (High)

A DoS vulnerability in React Server Components that causes server crashes via out-of-memory exceptions. This is the first disclosure of the DoS vector that CVE-2026-23864 only partially addressed — meaning servers that patched CVE-2025-55184 but not CVE-2026-23864 remained vulnerable to an evolved version of the same attack.

CVE-2025-29927 — The Middleware Bypass (Affects Next.js 11.1.4–15.2.2)

Before the React Server Components vulnerabilities dominated the news cycle, CVE-2025-29927 was already affecting a vast swath of the Next.js ecosystem. This vulnerability allows attackers to bypass authentication and authorization middleware entirely, with a particularly wide blast radius: every version of Next.js from 11.1.4 through 15.2.2 was affected.

If your middleware implements access control — protecting admin routes, subscription paywalls, or authenticated sections — this vulnerability allows unauthenticated attackers to access those protected routes by manipulating specific request headers. The attack requires no account, no session, and leaves minimal traces in standard access logs.

If you are running any version of Next.js below 15.2.3, you are currently vulnerable to this bypass.

How to Check Your Next.js Version

Checking which version of Next.js and React you are running takes 10 seconds:

# Check installed versions
cat package.json | grep -E '"next"|"react"'

# Or check what is actually installed in node_modules
cat node_modules/next/package.json | grep '"version"'
cat node_modules/react/package.json | grep '"version"'

# Or use npm ls
npm ls next react react-dom

You are looking for:

  • Next.js: 15.2.3+ (for CVE-2025-29927) and 16.1.5+ (for all 2026 patches)
  • React: 19.2.4+ (for CVE-2025-55182, CVE-2025-55183, CVE-2025-55184, CVE-2026-23864)

Remediation: What to Update and When

The remediation path depends on which vulnerabilities you are exposed to. Here is the priority order based on severity:

Priority 1 — CVE-2025-55182 (CVSS 10.0, actively exploited)

Update React to the patched version immediately if you use React Server Components or Next.js App Router with Server Actions:

# Update React to patched version
npm install react@19.2.4 react-dom@19.2.4

# Or with a specific Next.js version that bundles the fix
npm install next@16.1.5

Priority 2 — CVE-2025-29927 (middleware bypass)

If you are running Next.js 11.1.4 through 15.2.2, update to 15.2.3 or later:

npm install next@latest

# Verify
cat node_modules/next/package.json | grep '"version"'

Priority 3 — CVE-2026-23864 (DoS)

Update React server DOM packages to the patched versions:

npm install react-server-dom-webpack@19.2.4
# Or update Next.js to 16.0.11+ which ships with the fix

Interim mitigation while you test the update

If updating immediately is not possible, consider the following mitigations while you stage and test the update:

  • Rate-limit POST requests to /_next/ endpoints at your reverse proxy (nginx, Cloudflare) — this significantly raises the cost of exploitation
  • Monitor for unusual process CPU and memory spikes from your Node.js process
  • Review logs for unexpected POST requests to /__rsc__ or /_next/server-action endpoints
  • If you are on Vercel or Netlify, the platform-level patches for CVE-2026-23864 were applied at the infrastructure level — but application-layer patches are still recommended

Why Next.js Vulnerabilities Are Especially Dangerous in 2026

Next.js occupies a uniquely risky position in the modern web ecosystem. It is not just a library — it is the full-stack framework that defines the server boundary for millions of applications. When a vulnerability exists in the transport layer between server and client (the Flight protocol), it exposes the entire server-side execution environment.

Several factors amplify the risk:

  • Default on: React Server Components are now the default in Next.js App Router. The vulnerable surface is opt-in by default.
  • Trust model mismatch: Many developers think of Next.js as a "frontend" framework and apply less rigorous server-side security review to their Server Actions and Server Components code.
  • Slow update cycles: Enterprise environments and agencies running Next.js for clients often lag months behind on major framework updates — especially after Next.js 15 introduced breaking changes that required migration effort.
  • High-value targets: Next.js apps frequently handle authentication, payments, and user data — exactly what attackers want after gaining RCE.

How to Stay Ahead of Next.js CVEs

The CVE-2025-55182 cluster was patched within 24 hours of disclosure. The problem is that most teams did not learn about it until days or weeks later — and some are still running vulnerable versions today. The gap between patch available and patch applied is where real-world exploitation happens.

The three practices that close this gap:

  1. Automated lockfile scanning: Your package-lock.json or yarn.lock contains the exact resolved version of every package in your dependency tree. A daily scan against known CVEs catches vulnerabilities the moment they are published — not when you happen to read a security blog post.
  2. Subscribed to Next.js security releases: Follow nextjs.org/blog and watch the vercel/next.js GitHub repository for security advisories.
  3. Keep Next.js on a regular update cadence: Treat Next.js like an operating system, not a set-and-forget dependency. Monthly minor version updates prevent the accumulation of unpatched CVEs.

Frequently Asked Questions

Am I vulnerable to CVE-2025-55182 if I use the Pages Router (not App Router)?

CVE-2025-55182 specifically targets React Server Components, which are only available in the Next.js App Router. If your application uses only the Pages Router (pages/ directory) and does not use Server Actions or React Server Components, you are not directly exposed to the React2Shell RCE. However, you may still be exposed to CVE-2025-29927 (middleware bypass), which affects both App Router and Pages Router in Next.js 11.1.4–15.2.2.

I'm on Vercel — does the platform protect me?

Vercel applied infrastructure-level mitigations for CVE-2026-23864 (DoS) at the platform level for applications hosted on their infrastructure. This reduces the blast radius of DoS attacks. However, CVE-2025-55182 (RCE) is an application-layer vulnerability — Vercel cannot patch it without you updating your application's dependencies. You must update React in your package.json regardless of where you deploy.

How do I know if my server was already compromised?

Check for these indicators of compromise (IOCs): unusual POST requests to /_next/ routes in your access logs, unexpected outbound network connections from your Node.js process, abnormal CPU usage or new background processes (XMRIG is a common crypto miner), new files in /tmp or your application directory, and modified SSH authorized_keys. If you suspect compromise, treat the entire server as untrusted — rotate all secrets and credentials stored in environment variables immediately.

Does npm audit catch these vulnerabilities?

npm audit will flag known vulnerabilities in your direct and transitive dependencies — including the React/Next.js CVEs listed in this article — once they are published to the npm advisory database. The limitation is that npm audit only runs when you explicitly invoke it. It does not run continuously. If a CVE is published after your last npm audit run, you will not be notified. Continuous monitoring against your lockfile closes this gap.

Should I block Server Actions entirely as a mitigation?

Disabling Server Actions is a valid interim mitigation if you cannot apply the patch immediately and your application does not rely on them. You can add network-level blocks at your reverse proxy for POST requests to /_next/server-action endpoints. However, this is a temporary measure — the correct fix is updating React and Next.js to the patched versions. Some legitimate functionality may break if you rely on Server Actions for form submissions and mutations.

Are there Next.js versions below 15.x that are safe?

CVE-2025-55182 (React2Shell) targets React 19.x Server Components, which were introduced with Next.js 13+ App Router. If you are on Next.js 12 or below (Pages Router only, React 18), you are not exposed to the React2Shell RCE. However, all versions from 11.1.4 through 15.2.2 are exposed to CVE-2025-29927 (middleware bypass). Remaining on older Next.js versions is not a sustainable security posture — legacy versions accumulate unpatched vulnerabilities over time.

Monitor Your Next.js Dependencies Automatically

CVE OptiBot scans your package-lock.json daily, matches against the latest CVE databases, and alerts you the moment a new vulnerability is disclosed — before attackers exploit it.

Start free monitoring

No code access required. Upload your lockfile, get instant results.

Related reading

npm Security: Common Vulnerabilities and How to Fix Them → npm Supply Chain Attacks in 2026: How to Protect Your Projects → CVE Monitoring: Why npm audit Is Not Enough →

Le 3 décembre 2025, l'équipe React a publié un avis de sécurité qui aurait dû alerter immédiatement tout développeur utilisant Next.js : CVE-2025-55182, une vulnérabilité d'exécution de code à distance (RCE) non authentifiée avec un score CVSS de 10.0, affectant les React Server Components. Aucune authentification requise. Aucune interaction utilisateur nécessaire. Fiabilité d'exploitation proche de 100 % sur les configurations par défaut. Le lendemain, les premières exploitations étaient déjà détectées. En avril 2026, des acteurs malveillants avaient compromis au moins 766 serveurs Next.js, y déployant des mineurs de cryptomonnaie, des backdoors et des voleurs de credentials.

Next.js équipe 68 % des projets des développeurs JavaScript et est installé des dizaines de millions de fois par semaine. Cet article couvre toutes les vulnérabilités majeures divulguées en 2025-2026, les versions exactes affectées, le fonctionnement des exploits, et les étapes concrètes à mettre en œuvre dès aujourd'hui.

Le cluster de vulnérabilités Next.js 2025-2026

Les divulgations de décembre 2025 et janvier 2026 ne sont pas des bugs isolés — elles représentent un audit systématique des React Server Components (RSC) qui a mis au jour un cluster de vulnérabilités liées dans le protocole Flight, le mécanisme de sérialisation au cœur de la communication RSC entre serveur et client.

10.0
Score CVSS — CVE-2025-55182 (React2Shell)
Source : React Security Advisory, déc. 2025
766
serveurs Next.js compromis en avril 2026
Source : The Hacker News, avril 2026
68%
des développeurs JavaScript utilisent Next.js
Source : State of JavaScript 2024
60%
de croissance annuelle des téléchargements Next.js
Source : Tendances npm, 2025

CVE-2025-55182 (React2Shell) — CVSS 10.0 — Le RCE Critique

C'est la vulnérabilité phare. React2Shell (CVE-2025-55182) est une vulnérabilité d'exécution de code à distance non authentifiée, enracinée dans une désérialisation non sécurisée au sein du protocole React Flight — la couche de transport utilisée par les React Server Components pour streamer des données du serveur vers le client.

Comment fonctionne l'exploit

Le protocole Flight accepte des requêtes POST vers les endpoints Server Function. Un attaquant envoie un payload HTTP spécialement conçu contenant un objet sérialisé malformé. Parce que la logique de désérialisation ne valide pas correctement les entrées, le payload malveillant déclenche l'exécution arbitraire de JavaScript privilégié côté serveur — avec les permissions complètes du processus Node.js qui fait tourner votre application Next.js.

Caractéristiques de l'attaque :

  • Aucune authentification requise
  • Aucune interaction utilisateur nécessaire
  • Complexité d'attaque : Faible
  • Fiabilité d'exploitation proche de 100 % sur les configurations par défaut (Unit 42, Palo Alto Networks)
  • Exploitation détectée dans les 24h suivant la divulgation publique (4 décembre 2025)

Versions affectées

Package Versions affectées Version corrigée
react 19.0, 19.1.0, 19.1.1, 19.2.0 19.0.1, 19.1.2, 19.2.1+
react-dom 19.0, 19.1.0, 19.1.1, 19.2.0 19.0.1, 19.1.2, 19.2.1+
next Toutes versions React 19 avant le patch Mettre React à jour vers la version corrigée

Ce que les attaquants déploient après l'exploitation

Google Cloud Threat Intelligence a documenté les payloads post-exploitation déployés sur les serveurs Next.js compromis :

  • MINOCAT — outil de tunneling pour l'accès persistant et le mouvement latéral
  • SNOWLIGHT — téléchargeur multi-étapes pour les charges utiles secondaires
  • HISONIC — backdoor pour un accès furtif à long terme
  • XMRIG — mineur de cryptomonnaie consommant les ressources CPU
  • Voleurs de credentials ciblant les variables d'environnement, clés SSH et tokens de fournisseurs cloud

CVE-2026-23864 — CVSS 7.5 — DoS par Épuisement Mémoire

Divulguée le 26 janvier 2026, cette vulnérabilité est un déni de service dans le même protocole Flight, causé par des limites insuffisantes sur la taille des tableaux dans les requêtes POST entrantes. Un attaquant envoie des requêtes HTTP contenant des références circulaires ou des séquences de caractères profondément imbriquées, déclenchant des boucles de sérialisation infinies qui épuisent la mémoire serveur et font planter le processus.

Packages et versions affectés :

  • react-server-dom-webpack — versions 19.0.0 à 19.2.3
  • react-server-dom-parcel — versions 19.0.0 à 19.2.3
  • react-server-dom-turbopack — versions 19.0.0 à 19.2.3

Versions corrigées : React 19.0.4, 19.1.5, 19.2.4 et 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 (Akamai, Vercel, janvier 2026).

CVE-2025-55183 & CVE-2025-55184 — Exposition du Code Source et DoS

Divulguées avec CVE-2025-55182 les 3-11 décembre 2025, ces deux vulnérabilités complémentaires forment le cluster de vulnérabilités du protocole Flight :

CVE-2025-55183 — Exposition du Code Source (Medium)

Une vulnérabilité de divulgation d'information dans les React Server Components pouvant exposer le code source côté serveur à des clients non authentifiés dans certaines configurations. Bien que moins sévère que le RCE, l'exposition du code source donne aux attaquants un avantage significatif pour des exploitations ultérieures.

CVE-2025-55184 — Déni de Service (High)

Une vulnérabilité DoS dans les React Server Components causant des crashs serveur via des exceptions de type out-of-memory. C'est la première divulgation du vecteur DoS que CVE-2026-23864 n'a que partiellement corrigé.

CVE-2025-29927 — Le Bypass Middleware (Next.js 11.1.4–15.2.2)

Avant que les vulnérabilités React Server Components dominent l'actualité, CVE-2025-29927 affectait déjà une grande partie de l'écosystème Next.js. Cette vulnérabilité permet aux attaquants de contourner complètement les middlewares d'authentification et d'autorisation, avec un rayon d'impact particulièrement large : toutes les versions de Next.js de 11.1.4 à 15.2.2 sont affectées.

Si vous utilisez une version de Next.js inférieure à 15.2.3, vous êtes actuellement vulnérable à ce bypass.

Comment Vérifier Votre Version Next.js

# Vérifier les versions installées
cat package.json | grep -E '"next"|"react"'

# Ou vérifier ce qui est réellement installé dans node_modules
cat node_modules/next/package.json | grep '"version"'
cat node_modules/react/package.json | grep '"version"'

# Ou utiliser npm ls
npm ls next react react-dom

Ce que vous cherchez :

  • Next.js : 15.2.3+ (pour CVE-2025-29927) et 16.1.5+ (pour tous les patches 2026)
  • React : 19.2.4+ (pour CVE-2025-55182, CVE-2025-55183, CVE-2025-55184, CVE-2026-23864)

Remédiation : Quoi Mettre à Jour et Quand

Priorité 1 — CVE-2025-55182 (CVSS 10.0, activement exploitée)

# Mettre React à jour vers la version corrigée
npm install react@19.2.4 react-dom@19.2.4

# Ou avec une version spécifique de Next.js incluant le fix
npm install next@16.1.5

Priorité 2 — CVE-2025-29927 (bypass middleware)

npm install next@latest

# Vérifier
cat node_modules/next/package.json | grep '"version"'

Mitigation temporaire pendant les tests

  • Rate-limiter les requêtes POST vers les endpoints /_next/ au niveau de votre reverse proxy (nginx, Cloudflare)
  • Surveiller les pics inhabituels de CPU et mémoire du processus Node.js
  • Examiner les logs pour des requêtes POST inattendues vers /__rsc__ ou /_next/server-action

Questions Fréquentes

Suis-je vulnérable si j'utilise le Pages Router (pas l'App Router) ?

CVE-2025-55182 cible spécifiquement les React Server Components, disponibles uniquement avec l'App Router. Si votre application utilise uniquement le Pages Router et ne recourt pas aux Server Actions ni aux React Server Components, vous n'êtes pas directement exposé au RCE React2Shell. En revanche, vous pouvez être exposé à CVE-2025-29927 (bypass middleware), qui affecte à la fois l'App Router et le Pages Router dans Next.js 11.1.4–15.2.2.

Je suis sur Vercel — la plateforme me protège-t-elle ?

Vercel a appliqué des mitigations au niveau infrastructure pour CVE-2026-23864 (DoS) pour les applications hébergées sur leur infrastructure. Cependant, CVE-2025-55182 (RCE) est une vulnérabilité au niveau applicatif — Vercel ne peut pas la corriger sans que vous mettiez à jour vos dépendances. Vous devez mettre à jour React dans votre package.json quel que soit votre hébergeur.

Comment savoir si mon serveur a déjà été compromis ?

Recherchez ces indicateurs de compromission : requêtes POST inhabituelles vers les routes /_next/ dans vos logs d'accès, connexions réseau sortantes inattendues depuis votre processus Node.js, utilisation CPU anormale ou nouveaux processus en arrière-plan (XMRIG est un mineur courant), nouveaux fichiers dans /tmp ou dans le répertoire applicatif, et modifications des authorized_keys SSH. En cas de compromission suspectée, traitez l'ensemble du serveur comme non fiable — faites pivoter immédiatement tous les secrets et credentials stockés dans les variables d'environnement.

npm audit détecte-t-il ces vulnérabilités ?

npm audit signale les vulnérabilités connues dans vos dépendances directes et transitives — y compris les CVE React/Next.js de cet article — une fois publiées dans la base de données d'advisories npm. La limitation est que npm audit ne s'exécute que lorsque vous le lancez explicitement. Il ne tourne pas en continu. Si une CVE est publiée après votre dernier npm audit, vous ne serez pas notifié. Un monitoring continu de votre lockfile comble cette lacune.

Surveillez Vos Dépendances Next.js Automatiquement

CVE OptiBot scanne votre package-lock.json quotidiennement, le compare aux dernières bases CVE, et vous alerte dès qu'une nouvelle vulnérabilité est divulguée — avant que les attaquants ne l'exploitent.

Démarrer le monitoring gratuit

Aucun accès au code requis. Déposez votre lockfile, obtenez les résultats instantanément.

Lecture connexe

Sécurité npm : Vulnérabilités courantes et comment les corriger → Attaques Supply Chain npm en 2026 : Comment Protéger Vos Projets → Monitoring CVE : Pourquoi npm audit ne suffit pas →