Vulnérabilité React2Shell (CVE-2025-55182 / CVE-2025-66478) Script complet
Un outil de preuve de concept pour démontrer la vulnérabilité critique React2Shell (CVE-2025-55182 / CVE-2025-66478) uniquement sur des environnements de test locaux autorisés.
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 chinois, dont Earth Lamia et Jackpot Panda, ont commencé à armer des exploits publics quelques heures après la divulgation. La Cybersecurity and Infrastructure Security Agency (CISA) américaine l'a ajoutée à son catalogue des 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 React Server Components (RSC). Un identifiant distinct, CVE-2025-66478, a été attribué pour Next.js mais a depuis été rejeté comme doublon de CVE-2025-55182, les deux partageant 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 inclut.
| Composant | Versions affectées | Versions corrigées | Notes |
|---|---|---|---|
| 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 and later | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7 | Framework principal concerné. |
| Autres frameworks | React Router, Waku, RedwoodJS, Parcel (@parcel/rsc), Vite RSC Plugin | Mettez à jour vers des versions utilisant les packages React corrigés (>19.0.1, 19.1.2, 19.2.1). | Vulnérable si utilise les packages React concernés. |
Non concernés : 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 Flight des RSC sérialise les données pour la communication client-serveur. La vulnérabilité réside dans la logique de désérialisation côté serveur, qui étend de manière non sécurisée les propriétés des objets à partir 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 prototype 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, menant à une exécution de code à distance (RCE) complète.
Les chercheurs en sécurité ont observé des exploits réussis conduisant à :
.aws/credentials).Le 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 à niveau 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 des packages react-server-dom-* (19.0.1, 19.1.2 ou 19.2.1).
Pendant l'attente du 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.Note : Les règles WAF sont une atténuation temporaire et incomplète. Elles ne remplacent pas la nécessité de corriger.
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.
Rappel : Cet outil démontre pourquoi la correction est urgente. Utilisez ces connaissances pour améliorer la sécurité et défendre les systèmes, pas pour les compromettre. Assurez-vous que toutes vos dépendances sont mises à jour vers les versions corrigées listées ci-dessus.