
"Une seule requête HTTP malveillante peut compromettre l'ensemble de votre serveur." — React Security Team, Dec 2025
Sévérité : CRITIQUE | CVSS v3.1 : 10.0 (Maximum) | Statut : Activement exploité
React2Shell est une vulnérabilité de sécurité critique dans React Server Components (RSC) — une fonctionnalité moderne qui permet à React d'exécuter certaines parties de votre application web sur le serveur au lieu du navigateur.
La faille permet à n'importe quel attaquant sur Internet — sans aucune connexion, aucun accès spécial et aucune connaissance préalable de votre système — d'envoyer une seule requête HTTP malveillante à votre serveur et d'exécuter n'importe quel code qu'il souhaite. Cela signifie qu'il peut voler des données, installer des malwares, verrouiller vos fichiers avec un rançongiciel ou prendre le contrôle total de votre serveur.
Pensez-y comme ceci : votre serveur a une porte qui était censée ne s'ouvrir que pour les visiteurs de confiance, mais il s'avère que n'importe qui peut entrer — juste en frappant d'une manière spécifique.
| Propriété | Valeur |
|---|---|
| Identifiant CVE | CVE-2025-55182 (également appelé React2Shell) |
| Sévérité | Critique — Exécution de code à distance (RCE) |
| Score CVSS v3.1 | 10.0 / 10.0 (maximum possible) |
| Score CVSS v4 | 9.3 / 10.0 |
| Type de faiblesse | CWE-502 — Désérialisation de données non fiables |
| Méthode d'attaque | Requête HTTP POST unique, aucune authentification requise |
| Découvert par | Lachlan Davidson (chercheur en sécurité) |
| Divulgué | 3 décembre 2025 |
| Statut de l'exploit | Exploit public disponible — activement utilisé par les attaquants |
| CVE associé | CVE-2025-66478 (Next.js — doublon confirmé) |
react-server-dom-webpack — versions 19.0.0, 19.1.0, 19.1.1, 19.2.0 react-server-dom-parcel — versions 19.0.0, 19.1.0, 19.1.1, 19.2.0 react-server-dom-turbopack — versions 19.0.0, 19.1.0, 19.1.1, 19.2.0
### Frameworks concernés
| Framework / Outil | Portée concernée |
|----------------------------|----------------------------------------------------|
| **Next.js 15.x – 16.x** | App Router uniquement — Pages Router n'est **PAS** concerné |
| **React Router RSC** | Canal instable / de prévisualisation uniquement |
| **Redwood SDK** | Mode RSC uniquement |
| **Waku** | Toutes les versions avec RSC activé |
| **Expo** | Builds de prévisualisation RSC uniquement |
| **Vite RSC Plugin** | Toutes les intégrations |
| **Parcel RSC Plugin** | Toutes les intégrations |
| **Toute configuration RSC personnalisée** | Tout serveur utilisant la désérialisation Flight RSC |
> ⚠️ **Important :** Vous êtes vulnérable même si vous n'utilisez pas explicitement les Server Actions ou les Server Functions — tant que les composants serveur React sont activés dans votre application.
> ✅ **Non concerné :** Applications utilisant uniquement le Pages Router, ou applications sans React côté serveur du tout.
---
## Pourquoi est-ce si dangereux ?
Trois raisons rendent React2Shell exceptionnellement grave :
1. **Aucune authentification requise.** N'importe qui sur internet peut tenter cette attaque. Pas de compte, pas de jeton, aucun accès préalable nécessaire.
2. **Fonctionne sur les installations par défaut.** Une toute nouvelle application Next.js créée avec `create-next-app` — sans aucune configuration personnalisée — est immédiatement exploitable. Les développeurs n'ont rien à faire de mal pour être vulnérables.
3. **Fiabilité proche de 100 %.** Les chercheurs en sécurité ont confirmé que l'exploit fonctionne presque à chaque fois contre les serveurs non patchés.
---
## Comment fonctionne l'attaque ?
### La cause profonde — En termes simples
Lorsque votre serveur React reçoit des données d'un client, il les traite (désérialise) pour comprendre quoi faire ensuite. Le problème est que React **ne vérifie jamais si ces données sont sûres ou légitimes** — il fait aveuglément confiance à tout ce qui arrive.
Un attaquant exploite cela en envoyant des données spécialement conçues qui détournent le comportement JavaScript interne du serveur, lui permettant finalement d'injecter et d'exécuter son propre code.
### Explication technique
L'exploit utilise une technique appelée **pollution de prototype** :
1. L'attaquant envoie une requête HTTP POST élaborée à n'importe quel point de terminaison RSC (aucune URL spéciale nécessaire).
2. Le parseur du protocole React Flight traite la charge utile sans aucune validation structurelle.
3. La charge utile malveillante pollue `Object.prototype.then` — un objet JavaScript fondamental dont tous les autres objets héritent.
4. Cela donne à l'attaquant accès au constructeur `Function` de JavaScript.
5. L'attaquant utilise le constructeur `Function` pour exécuter du code arbitraire en tant que processus du serveur Node.js.```
Step 1 — Attacker sends crafted HTTP POST
↓
Step 2 — React deserializes payload blindly
↓
Step 3 — Object.prototype.then is hijacked (prototype pollution)
↓
Step 4 — Function constructor is accessed
↓
Step 5 — Attacker's code runs on the server
↓
Step 6 — Attacker has full server control
// This is a simplified version of the vulnerable code path inside React function parseFlightRequest(req) { const flight = req.body;
// ❌ NO validation — the server trusts whatever arrives
const decoded = dangerousDeserialize(flight); // Attack happens here
// If the attacker controls decoded.action → RCE
return executeServerReference(decoded.action);
}
### À quoi ressemble l'attaque```http
POST /?flight=1 HTTP/1.1
Content-Type: text/plain
{
"status": "resolved_model",
"$1:__proto__:then": "node:process.mainModule.require('child_process').execSync('id > /tmp/rce')",
"_formData.get": "$1:constructor:constructor"
}
ENTRÉE:```bash
curl -X POST https://target.com/react?flight=1
-H "Content-Type: text/plain"
--data '["$ACTION_REF","proto","constructor","<attacker_payload>"]'
> 🚫 **Avertissement légal :** N'utilisez pas cet outil contre un système dont vous n'êtes pas propriétaire ou pour lequel vous ne possédez pas une autorisation écrite explicite de test.
---
## Versions corrigées — Mettez à jour maintenant
### Paquets React RSC
| Paquet | Version corrigée |
|------------------------------|------------------------------|
| `react-server-dom-webpack` | 19.0.1, 19.1.2, **19.2.1+** |
| `react-server-dom-parcel` | 19.0.1, 19.1.2, **19.2.1+** |
| `react-server-dom-turbopack` | 19.0.1, 19.1.2, **19.2.1+** |
> 💡 **Recommandation :** Mettez à jour vers la version **19.2.3** pour également corriger les vulnérabilités connexes (CVE-2025-55183, CVE-2025-55184, CVE-2025-67779).
### Next.js
| Votre version | Mettez à jour vers |
|--------------|-------------|
| 13.x / 14.x | **14.2.35** |
| 15.0.x | **15.0.5** |
| 15.1.x | **15.1.9** |
| 15.2.x | **15.2.6** |
| 15.3.x | **15.3.6** |
| 15.4.x | **15.4.8** |
| 15.5.x | **15.5.7** |
| 16.0.x | **16.0.7** |
---
## Comment vous protéger — Étape par étape
Suivez ces étapes **dans l'ordre**. Les étapes 1 et 2 sont obligatoires. Les autres ajoutent des couches de défense supplémentaires.
### Étape 1 — Mettez à jour les paquets React (le plus important)```bash
# Check your current version
npm list react-server-dom-webpack
# Upgrade to the latest patched version
npm install react-server-dom-webpack@latest
npm install react-server-dom-parcel@latest
npm install react-server-dom-turbopack@latest
npm install next@X
### Étape 3 — Ajouter une protection WAF (défense en profondeur)
| Fournisseur cloud | Action requise |
|-------------------------|------------------------------------------------------------------------------------------|
| **AWS WAF** | Activer `AWSManagedRulesKnownBadInputsRuleSet` v1.24+ — Les règles React2Shell sont incluses |
| **AWS Network Firewall**| Activer les règles gérées Active Threat Defense (mise à jour automatique via MadPot) |
| **Google Cloud Armor** | Déployer l'ensemble de règles React2Shell depuis la console |
| **Cloudflare** | Règle WAF `react2shell-cve-2025-55182` — appliquée automatiquement pour les plans Pro+ |
> ⚠️ **Les règles WAF seules ne suffisent pas.** Elles ne peuvent pas bloquer toutes les variantes de payload. Corriger vos packages est le seul correctif complet.
### Étape 4 — Si vous ne pouvez pas corriger immédiatement
- Désactiver temporairement les **points de terminaison RSC Flight** sur votre serveur.
- Cela réduit votre surface d'attaque jusqu'à ce que vous puissiez appliquer le correctif.
### Étape 5 — Vérifier si vous avez déjà été attaqué
- **Auditez vos journaux serveur** à la recherche de requêtes POST suspectes vers les points de terminaison RSC/flight avant votre date de correctif.
- Recherchez des connexions sortantes inhabituelles, de nouveaux comptes utilisateur ou des processus inattendus.
### Étape 6 — Précaution en cas de compromission présumée
- **Renouvelez tous les secrets** — clés API, identifiants de base de données, jetons de session, variables d'environnement.
- Considérez tout serveur ayant exécuté une version vulnérable comme potentiellement compromis.
---
## Activité d'attaque réelle
### Échelle (En avril 2026)
| Métrique | Chiffre |
|-----------------------------------|--------------------------------------|
| Total des sessions d'attaque | **8,1 millions+** (GreyNoise) |
| Volume d'attaque quotidien | **300 000 – 400 000** requêtes/jour |
| Volume quotidien maximal | **430 000+** (fin décembre 2025) |
| Adresses IP d'attaquants uniques | **8 163** dans 101 pays |
| Délai avant première infection | **2 minutes** après exposition du serveur |
AWS à elle seule représente plus d'un tiers de l'infrastructure d'attaque observée — ce qui signifie que les attaquants opèrent principalement depuis des serveurs hébergés dans le cloud pour mener ces attaques à grande échelle.
### Qui attaque ?
Plusieurs groupes d'acteurs de menace distincts ont été confirmés en train d'exploiter cette vulnérabilité :
**China-nexus (State-sponsored)**
- **Earth Lamia** (également suivie sous le nom UNC5454 par Google) — liée au Ministère de la Sécurité d'État chinois (MSS)
- **Jackpot Panda** — identifié par les équipes de renseignement sur les menaces d'AWS et de Google
- Mène également une exploitation parallèle d'autres vulnérabilités récentes simultanément
**Iran-nexus**
- Acteurs affiliés à l'Iran observés par Google GTIG en décembre 2025
**North Korea (DPRK)** ⚠️ *Nouveau — janvier 2026*
- Indicateurs liés à la campagne **Contagious Interview** (une opération nord-coréenne de longue date qui cible les développeurs de logiciels)
- Déploient **EtherRAT** — une nouvelle porte dérobée qui utilise une **infrastructure de commande et contrôle basée sur la blockchain**, ce qui la rend très difficile à bloquer avec le blocage standard d'IP/domaine
**Cybercriminels / Motivés financièrement**
- Des opérateurs de ransomware ont été confirmés utilisant React2Shell pour un accès initial ⚠️ *Nouveau — décembre 2026*
- Au moins un cas documenté où un ransomware a été déployé **en moins d'une minute** après l'exploitation initiale
- Minage de cryptomonnaies (XMRig) largement déployé dans des campagnes opportunistes
### Malware observé dans la nature
| Malware / Outil | Ce qu'il fait | Qui l'utilise |
|------------------------------------|----------------------------|------------------------------------|
| SNOWLIGHT | Télécharge d'autres malwares | Earth Lamia (China) |
| MINOCAT | Crée des tunnels cachés | Earth Lamia (China) |
| HISONIC | Porte dérobée pour persistance | Earth Lamia (China) |
| COMPOOD | Survit aux redémarrages | Earth Lamia (China) |
| **EtherRAT** ⚠️ *Nouveau* | Porte dérobée C2 basée sur blockchain | DPRK / Contagious Interview |
| XMRig | Mine des cryptomonnaies | Plusieurs groupes |
| Cobalt Strike | Framework de contrôle à distance | campagnes "emerald" et "nuts" |
| Sliver / Nezha | Frameworks C2 | campagne "emerald" |
| Fast Reverse Proxy (FRP) | Tunneling réseau | Plusieurs groupes |
| Secret-Hunter | Vole des identifiants | campagne "nuts" |
| Mirai / Rondo botnets | DDoS / persistance | Acteurs opportunistes |
| MeshAgent (RMM tool) | Gestion à distance | Plusieurs groupes (persistance) |
| **In-memory Next.js web shell** ⚠️ *Nouveau* | Persistance furtive | Plusieurs acteurs (confirmé par GTIG) |
> 💡 **Qu'est-ce qu'un web shell en mémoire ?** C'est une porte dérobée qui s'exécute entièrement dans la mémoire du serveur — ne laissant aucun fichier sur le disque, ce qui la rend extrêmement difficile à détecter avec les antivirus ou outils d'analyse de fichiers standard.
> 💡 **Qu'est-ce que le C2 basé sur blockchain ?** Au lieu de se connecter aux serveurs attaquants via des adresses IP ou domaines normaux (qui peuvent être bloqués), EtherRAT reçoit ses commandes à partir de transactions blockchain — un système décentralisé qui ne peut pas être facilement neutralisé ou bloqué.
---
## Outils de détection
### Microsoft Defender for Cloud
Deux modèles dédiés sont disponibles dans la galerie de l'explorateur de sécurité :
- *Conteneurs exposés à Internet exécutant des images de conteneurs vulnérables à React2Shell — CVE-2025-55182*
- *Machines virtuelles exposées à Internet vulnérables à React2Shell — CVE-2025-55182*
Microsoft Security Exposure Management cartographie également automatiquement les chemins d'attaque React2Shell sur votre infrastructure cloud.
### GreyNoise
Un modèle de blocage prêt à l'emploi est disponible : **Tentative d'exécution de code à distance (RCE) par désérialisation non sécurisée des composants serveur React CVE-2025-55182**
Les ensembles complets d'empreintes d'attaquants (ASN, JA4T, JA4H) sont disponibles publiquement :```
github.com/GreyNoise-Intelligence/gn-research-supplemental-data/tree/main/2026-01-06-react2shell
Utilisez Runtime Vulnerability Analytics — filtrez par CVE-2025-55182 pour identifier les packages React ou Next.js vulnérables dans votre environnement.
Après la divulgation, environ 145 faux outils d'exploitation non fonctionnels ont circulé en ligne — dont beaucoup générés par IA. Risques liés à l'utilisation d'outils non vérifiés :
Utilisez uniquement des scanners provenant de sources vérifiées et fiables de la communauté.
Nov 29, 2025 Lachlan Davidson privately reports the vulnerability to Meta / React team
Dec 03, 2025 Patched packages published to npm CVE-2025-55182 publicly disclosed Vercel deploys runtime-level protections (not just WAF) Cloudflare WAF rules activated Mass automated scanning begins within hours of disclosure
Dec 04, 2025 First working public exploit released by Moritz Sanft Default create-next-app confirmed exploitable with no changes
Dec 05, 2025 Discoverer Lachlan Davidson releases his own PoC (~30 hours post-disclosure) Active exploitation observed in Datadog and Rapid7 honeypots Darktrace honeypot infected in 2 minutes after deployment
Dec 05–08 "emerald" and "nuts" malware campaigns deploy Cobalt Strike, Sliver, Nezha, FRP, Secret-Hunter; Mirai and Rondo botnets also active 362 unique attacker IPs observed; 152 with identifiable payloads
Dec 08, 2025 Rapid7 confirms exploitation using the public PoC
Dec 11, 2025 Follow-on CVEs disclosed: CVE-2025-55183 and CVE-2025-55184
Dec 12, 2025 Google GTIG identifies China-nexus threat clusters Iran-nexus activity also flagged
Dec 15, 2025 Microsoft confirms hundreds of compromised machines Coin miners and backdoors (SNOWLIGHT, HISONIC) deployed at scale Microsoft Defender for Cloud templates published
Dec 17, 2025 ⚠️ [NEW] Ransomware operators confirmed using React2Shell for initial access — malware deployed in under one minute post-exploitation (Reported by BleepingComputer, based on S-RM and Microsoft Defender)
Dec 29, 2025 AWS formally attributes activity to Earth Lamia and Jackpot Panda AWS Network Firewall Active Threat Defense rules updated
Jan 06, 2026 GreyNoise publishes full attacker fingerprint dataset (8.1M+ attack sessions recorded)
Jan 13, 2026 ⚠️ [NEW] IronGate Security identifies DPRK (North Korea) exploitation Indicators linked to Contagious Interview campaign EtherRAT (blockchain C2 backdoor) deployed post-exploitation Attacker staging involves downloading Node.js runtime before payload
Jan 26, 2026 Additional DoS vulnerability CVE-2026-23864 disclosed and patched
Mar 04, 2026 Dynatrace advisory updated with latest remediation guidance
---
## Références
| Source | Lien |
|---------------------------------|-----------------------------------------------------------------------------------------------|
| Avis officiel de React | https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components |
| React2Shell (découvreur) | https://react2shell.com |
| Avis de Next.js | https://nextjs.org/blog/CVE-2025-66478 |
| Analyse approfondie de Wiz | https://www.wiz.io/blog/critical-vulnerability-in-react-cve-2025-55182 |
| Blog sécurité Microsoft | https://www.microsoft.com/en-us/security/blog/2025/12/15/defending-against-the-cve-2025-55182-react2shell-vulnerability-in-react-server-components/ |
| Renseignement sur les menaces Google | https://cloud.google.com/blog/topics/threat-intelligence/threat-actors-exploit-react2shell-cve-2025-55182 |
| Bulletin de sécurité AWS | https://aws.amazon.com/security/security-bulletins/AWS-2025-030/ |
| Attribution Chine-Nexus par AWS | https://aws.amazon.com/blogs/security/china-nexus-cyber-threat-groups-rapidly-exploit-react2shell-vulnerability-cve-2025-55182/ |
| Palo Alto Unit 42 | https://unit42.paloaltonetworks.com/cve-2025-55182-react-and-cve-2025-66478-next/ |
| Recherche Trend Micro | https://www.trendmicro.com/en_us/research/25/l/CVE-2025-55182-analysis-poc-itw.html |
| Grille d'observation GreyNoise | https://www.greynoise.io/blog/cve-2025-55182-react2shell-opportunistic-exploitation-in-the-wild-what-the-greynoise-observation-grid-is-seeing-so-far |
| Analyse Darktrace | https://www.darktrace.com/blog/react2shell-how-opportunist-attackers-exploited-cve-2025-55182-within-hours |
| Avis Dynatrace | https://www.dynatrace.com/news/blog/cve-2025-55182-react2shell-critical-vulnerability-what-it-is-and-what-to-do/ |
| BleepingComputer — Rançongiciel | https://www.bleepingcomputer.com/news/security/critical-react2shell-flaw-exploited-in-ransomware-attacks/ |
| IronGate — Activité RPDC | https://www.irongatesecurity.com/ironintel/react2shell-cve-2025-55182 |
| Entrée NVD | https://nvd.nist.gov/vuln/detail/CVE-2025-55182 |
---
**Crédit de la vulnérabilité :**
Découverte initiale et divulgation responsable par **Lachlan Davidson** (29 novembre 2025).
---
*Dernière mise à jour : 16 avril 2026*
*Ce document est destiné uniquement à des fins éducatives et de sécurité défensive.*
| CVE ID | Description | Severity | Status |
|---|
| CVE-2025-55182 | Exécution de code à distance RSC — cette vulnérabilité | 10.0 | Corrigé |
| CVE-2025-66478 | RCE en aval de Next.js (duplicata confirmé) | 10.0 | Rejeté — duplicata |
| CVE-2025-55183 | Exposition du code source via RSC | 5.3 | Corrigé dans 19.2.2+ |
| CVE-2025-55184 | Déni de service via boucle infinie dans l'analyseur RSC | 7.5 | Corrigé dans 19.2.2+ |
| CVE-2025-67779 | DoS — correctif incomplet pour CVE-2025-55184 | 7.5 | Corrigé dans 19.2.3+ |
| CVE-2026-23864 | Déni de service RSC supplémentaire (janvier 2026) | 7.5 | Corrigé |