Vulnérabilité React2Shell (CVE-2025-55182 / CVE-2025-66478)
Un outil de preuve de concept pour démontrer la vulnérabilité critique React2Shell (CVE-2025-55182 / CVE-2025-66478) sur des environnements de test locaux et autorisés uniquement.
Cette vulnérabilité (CVSS 10.0) est activement exploitée par des acteurs menaçants sophistiqués. Amazon Threat Intelligence rapporte que plusieurs groupes parrainés par l'État liés à la Chine, dont Earth Lamia et Jackpot Panda, ont commencé à armer des exploits publics quelques heures après la divulgation. L'Agence de cybersécurité et de sécurité des infrastructures des États-Unis (CISA) l'a ajoutée à son catalogue de vulnérabilités connues exploitées (KEV).
CVE-2025-55182 (React2Shell) est une vulnérabilité critique d'exécution de code à distance (RCE) sans authentification dans le protocole 'Flight' des composants serveur React (RSC). Un identifiant distinct, CVE-2025-66478, a été attribué pour Next.js mais a depuis été rejeté comme un doublon de CVE-2025-55182, car les deux partagent la même cause racine.
chmod +x pwn-nextjs.sh
./pwn-nextjs.sh [TARGET_URL] [COMMAND]
# Cibler une URL spécifique
./pwn-nextjs.sh https://vulnerable-app.example.com "whoami"
root
La vulnérabilité provient de packages React spécifiques, affectant tout framework qui les intègre.
| Composant | Versions affectées | Versions corrigées | Remarques |
|---|---|---|---|
| Packages React ( react-server-dom-webpack, -parcel, -turbopack) | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 | Source du défaut en amont. |
| Next.js (App Router) | 15.x, 16.x, 14.3.0-canary.77 et ultérieur | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7 | Cadre principal affecté. |
| Autres frameworks | React Router, Waku, RedwoodJS, Parcel (@parcel/rsc), Plugin Vite RSC | Mettez à jour vers des versions utilisant des packages React corrigés (>19.0.1, 19.1.2, 19.2.1). | Vulnérable si vous utilisez les packages React affectés. |
Non affecté : Next.js 13.x, les versions stables de Next.js 14.x, les applications Pages Router et Edge Runtime ne sont pas affectés.
Le protocole RSC Flight sérialise les données pour la communication client-serveur. La vulnérabilité réside dans la logique de désérialisation du serveur, qui développe de manière non sécurisée les propriétés des objets de la charge utile entrante sans validation adéquate. Cela permet à un attaquant d'injecter des clés malveillantes (comme __proto__ ou constructor) dans la requête, conduisant à une pollution de prototype.
Une fois la chaîne de prototypes polluée, le serveur suit des chemins d'exécution influencés par l'attaquant. Cela peut être enchaîné pour exécuter du code JavaScript arbitraire avec les privilèges du serveur, conduisant à une exécution de code à distance (RCE) complète.
Les chercheurs en sécurité ont observé des exploits réussis conduisant à :
.aws/credentials).L'application du correctif est obligatoire et le seul moyen d'éliminer complètement la vulnérabilité. Il n'existe aucun paramètre de configuration pour désactiver le chemin de code vulnérable.
# Pour les utilisateurs de Next.js, mettez à jour vers la dernière version corrigée dans votre ligne de version.
# Exemple : Si vous êtes sur Next.js 15.5.x :
npm install [email protected]
# Assurez-vous également que les dépendances React sont mises à jour :
npm install react@latest react-dom@latest
Vérifiez que vos fichiers package-lock.json ou yarn.lock reflètent les versions corrigées du package react-server-dom-* (19.0.1, 19.1.2 ou 19.2.1).
En attendant le correctif, déployez des règles de pare-feu d'application Web (WAF) pour bloquer les tentatives d'exploitation :
AWSManagedRulesKnownBadInputsRuleSet (v1.24+) inclut des règles pour cette CVE.cve-canary est disponible.Remarque : Les règles WAF sont une atténuation temporaire et incomplète. Elles ne remplacent pas la nécessité d'appliquer le correctif.
Examinez les journaux pour ces signes de tentatives d'exploitation :
next-action ou rsc-action-id. Corps de requête contenant des motifs comme $@ ou "status":"resolved_model".whoami, id, uname), lectures de /etc/passwd, ou écritures de fichiers dans /tmp/ (par exemple pwned.txt) par des processus Node.js.Cet outil démontre une vulnérabilité avec un score CVSS de 10,0 (Sévérité maximale) qui est activement exploitée par des acteurs parrainés par des États.