
Exploit de preuve de concept pour CVE-2025-55182 (React2Shell), une RCE critique pré-authentification dans React Server Components. Démontre une désérialisation non sécurisée dans le protocole Flight pour des tests de sécurité autorisés et de l'éducation.
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 autorisés uniquement.
Cette vulnérabilité (CVSS 10.0) est activement exploitée par des acteurs de menace 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 Known Exploited Vulnerabilities (KEV).
CVE-2025-55182 (React2Shell) est une vulnérabilité critique d'exécution de code à distance (RCE) avant authentification dans le protocole « Flight » des composants serveur React (RSC). Un identifiant distinct, CVE-2025-66478, a été attribué à Next.js mais a depuis été rejeté comme étant 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]
# Target specific URL
./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érieures | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7 | Framework principal affecté. |
| Autres frameworks | React Router, Waku, RedwoodJS, Parcel (@parcel/rsc), Plugin Vite RSC | Mettez à jour vers des versions utilisant les 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és : Next.js 13.x, les versions stables de Next.js 14.x, les applications Pages Router et l'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).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.
# For Next.js users, upgrade to the latest patched version in your release line.
# Example: If you are on Next.js 15.5.x:
npm install [email protected]
# Also ensure React dependencies are updated:
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).
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.
Rappel : Cet outil démontre pourquoi le correctif est urgent. 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.