
Un outil de preuve de concept pour démontrer la vulnérabilité critique React2Shell
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 et autorisés.
CVE-2025-55182 (React2Shell) est une vulnérabilité critique d'exécution de code à distance (RCE) avant 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 paquets React spécifiques, affectant tout framework qui les inclut.
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 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 d'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.
Des chercheurs en sécurité ont observé des exploits réussis conduisant à :
.aws/credentials).L'application du correctif est obligatoire et constitue 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 de 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 paquets react-server-dom-* (19.0.1, 19.1.2 ou 19.2.1).
En attendant l'application du correctif, déployez des règles de pare-feu applicatif (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 constituent une atténuation temporaire et incomplète. Elles ne remplacent pas la nécessité d'appliquer le correctif.
Examinez les journaux pour détecter 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 fait l'objet d'une exploitation active soutenue par des États.
Rappel : Cet outil démontre pourquoi l'application des correctifs est urgente. Utilisez ces connaissances pour améliorer la sécurité et défendre les systèmes, et non pour les compromettre. Assurez-vous que toutes vos dépendances sont mises à jour vers les versions corrigées listées ci-dessus.
TAHA MOUNIR
| Composant | Versions affectées | Versions corrigées | Notes |
|---|
| Paquets 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 versions ultérieures | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7 | Framework principalement affecté. |
| Autres frameworks | React Router, Waku, RedwoodJS, Parcel (@parcel/rsc), plugin RSC Vite | Mettez à jour vers des versions utilisant des paquets React corrigés (>19.0.1, 19.1.2, 19.2.1). | Vulnérable si vous utilisez les paquets React affectés. |