
React2Shell Scanner (CVE-2025-55182 & CVE-2025-66478)
Un outil de détection non intrusif pour identifier les implémentations vulnérables de React Server Components (RSC) affectées par CVE-2025-55182 (React) et CVE-2025-66478 (Next.js). Cet outil effectue une détection active en utilisant des charges utiles bénignes et non malveillantes pour déterminer si un serveur est vulnérable sans exécuter de code nuisible.
CVE-2025-55182 et CVE-2025-66478 sont des vulnérabilités critiques d'exécution de code à distance (RCE) non authentifiées dans le protocole "Flight" des React Server Components. Ces vulnérabilités affectent :
react-server-dom 19.0.0, 19.1.0, 19.1.1 et 19.2.0Les vulnérabilités proviennent d'une désérialisation non sécurisée dans la logique de traitement des charges utiles RSC, permettant à des données contrôlées par l'attaquant d'influencer l'exécution côté serveur. Les configurations par défaut sont vulnérables – une application Next.js standard créée avec create-next-app peut être exploitée sans aucune modification de code.
Cet outil effectue une détection active de vulnérabilités en :
L'outil utilise trois méthodes de détection :
loadServerReferencearrayBufferImportant : Cet outil n'exécute AUCUN code malveillant. Il envoie uniquement des charges utiles bénignes soigneusement conçues pour déclencher des réponses d'erreur révélant l'état de vulnérabilité du serveur.
python react2shell_scanner.py --target https://example.com
python react2shell_scanner.py --target https://example.com --action-id VOTRE_IDENTIFIANT_ACTION
python react2shell_scanner.py --target https://example.com --verbose
[+] CVE-2025-55182 and CVE-2025-66478 Vulnerability Checker
[*] Target: https://example.com
[*] Action ID: c67c4e1a40fcc26b5e3c0d5d17f16786f4244989
[*] Test 1: Sending $F (Server Reference) payload...
Status: 500, Evidence: workers
[*] Test 2: Sending $L (Lazy) payload...
Status: 500, Evidence: arraybuffer
[+] Result:
[!] Status: LIKELY VULNERABLE
[!] Confidence: HIGH
[!] Evidence: workers
[!] Details: Server reached loadServerReference (Flight $F deserialization bypass)
[!] RECOMMENDATION: Upgrade to patched version
======================================================================
[+] CVE-2025-55182 and CVE-2025-66478 Vulnerability Checker
[*] Target: https://example.com
[*] Action ID: c67c4e1a40fcc26b5e3c0d5d17f16786f4244989
[*] Test 1: Sending $F (Server Reference) payload...
Status: 500, Evidence: could not find the module
[*] Test 2: Sending $L (Lazy) payload...
Status: 500, Evidence: in the react server manifest
[+] Result:
[+] Status: LIKELY NOT VULNERABLE
[+] Confidence: HIGH
[+] Evidence: could not find the module
[+] Details: Server rejected payload with security error (patched)
======================================================================
L'outil recherche ces motifs d'erreur indiquant une vulnérabilité :
workers – Le serveur a atteint loadServerReference (confiance ÉLEVÉE)arraybuffer – Le serveur a atteint le gestionnaire de type $L (confiance ÉLEVÉE)cannot read properties of null (reading 'id') – Le serveur a atteint loadServerReference avec des métadonnées nulles (confiance ÉLEVÉE)entries – L'action serveur a reçu un objet désérialisé au lieu de FormData (confiance MOYENNE)temporary client reference – Le serveur a traité une référence de type $T (confiance MOYENNE)Ces motifs d'erreur indiquent que le serveur est corrigé :
could not find the modulein the react server manifestInvalid server referenceServer reference not foundUnexpected tokenis probably a bug in the react server components bundler| Produit | Versions vulnérables | Versions corrigées |
|---|---|---|
react-server-dom | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
| Next.js | 14.3.0-canary, 15.x, 16.x (App Router) | 14.3.0-canary.88, 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7 |
D'autres frameworks utilisant RSC peuvent également être affectés :
Action immédiate requise : Mettez à niveau vers les versions corrigées :
react-server-dom 19.0.1, 19.1.2 ou 19.2.1react-serverCet outil est conçu pour les tests de sécurité défensifs et l'évaluation des vulnérabilités. Il utilise uniquement des charges utiles bénignes qui n'exécutent pas de code malveillant. Cependant :
Cet outil est fourni "en l'état" sans garantie. Les auteurs ne sont pas responsables de toute utilisation abusive ou de tout dommage causé par cet outil. Assurez-vous toujours d'avoir les autorisations appropriées avant de tester un système.
| Argument | Requis | Défaut | Description |
|---|
--target | Oui | - | URL cible à vérifier (doit commencer par http:// ou https://) |
--action-id | Non | c67c4e1a40fcc26b5e3c0d5d17f16786f4244989 | Identifiant d'action à utiliser dans la charge utile |
--verbose, -v | Non | False | Activer la sortie détaillée montrant le corps des réponses |