Un scanner de surface non intrusif pour CVE-2025-55182 (React Server Components RCE). Détecte les points de terminaison RSC exposés dans les applications React 19 et Next.js.
Un détecteur de surface spécialisé et non intrusif pour CVE-2025-55182 (RCE des composants serveur React).

Lisez ceci avant d'analyser :
Bien que CVE-2025-55182 soit une vulnérabilité RCE critique (CVSS 10.0), l'exploitation réelle dans les environnements de production Next.js est conditionnelle.
serverManifest pour autoriser les modules autorisés. Les tentatives directes de charger des modules dangereux (comme child_process) via RSC échouent souvent car ils ne figurent pas dans ce manifeste.serverManifest en mémoire et contourner la liste blanche.742 au lieu de "vm"). Les exploits rigides qui devinent les noms échoueront (faux négatifs).Cet outil est un détecteur de surface. Il identifie si le protocole RSC est exposé et actif. Trouver un point d'accès exposé est l'étape préalable pour identifier la surface d'attaque où une chaîne de pollution de prototype pourrait être tentée.
La plupart des preuves de concept publiques et des scanners génèrent des faux négatifs dans les environnements de production parce qu'ils tombent dans quatre pièges courants :
Rigidité des exploits : Ils tentent d'exécuter des gadgets spécifiques (comme vm ou child_process) qui sont bloqués par les listes blanches, ou reposent sur des ID codés en dur (par exemple "id":"vm") qui échouent face aux builds Webpack minifiés.
Redirections racine : Frapper POST / sur Next.js déclenche souvent une redirection 307/308 (par exemple vers /login), ce qui entraîne la perte du corps POST ou sa conversion en GET avant que le serveur ne le traite.
Inadéquation du transport : De nombreux scanners envoient les charges utiles en text/plain ou en JSON brut. Les actions serveur strictes de Next.js requièrent souvent une encapsulation multipart/form-data. Si le format est erroné, le serveur retourne 404/200 sans jamais déclencher l'analyseur vulnérable.
Cécité au WAF : Les outils standards voient un 403 Interdit et abandonnent. Ils ne parviennent pas à distinguer entre un blocage IP global et un filtre de règle spécifique, manquant ainsi des opportunités de contourner le WAF en utilisant des techniques d'encodage ou de rembourrage.
Ce scanner résout tous les trois défis :
✅ Sondage intelligent de chemins : Sonde automatiquement des chemins aléatoires inexistants (par exemple /x7z9q2) pour contourner les redirections racine (307/308) et forcer le routeur d'application Next.js à traiter le contexte de la requête.
✅ Transport strict (Multipart) : Utilise l'encapsulation multipart/form-data au lieu du texte brut. Cela résout les faux négatifs sur les points d'accès d'actions serveur strictes qui retournent autrement des 404.
✅ Analyse différentielle du WAF : Distingue entre les blocages globaux ([BLOCKED]) et le filtrage par règle spécifique ([FILTERED]). Si le backend autorise le protocole mais bloque la charge utile, le scanner l'identifie comme une cible de grande valeur.
✅ Mode de contournement automatique : Inclut un moteur optionnel --bypass qui tente automatiquement des techniques d'évasion (échappements Unicode, mutation d'espaces, rembourrage inutile) contre les cibles [FILTERED].
✅ Détection durcie : Capture les « crashes silencieux » ([SUSPICIOUS]) sur les serveurs d'entreprise qui suppriment les en-têtes X-Powered-By, et identifie l'empreinte de redirection 303 See Other d'Assetnote.
✅ Empreinte active : Utilise une charge utile spécialisée (["$1:aa:aa"]) pour déclencher l'erreur unique « Digest » de React 19 RSC, confirmant que l'analyseur est actif même sans une RCE complète.
Clonez le dépôt :
git clone https://github.com/fatguru/CVE-2025-55182-scanner.git
cd CVE-2025-55182-scanner
Installez les dépendances (recommandé dans un environnement virtuel) :
pip install -r requirements.txt
Analyse de base
Vérifiez une URL unique. Remarque : assurez-vous de pointer vers le bon chemin d'application (par exemple /dashboard, /login), pas seulement le domaine racine, car les points d'accès du routeur d'application Next.js sont spécifiques au chemin.
python3 cve_2025_55182_scanner.py -u http://localhost:3000/dashboard
Analyse groupée
Analysez une liste d'URLs à partir d'un fichier (une URL par ligne). C'est la stratégie recommandée pour éviter d'omettre des chemins spécifiques.
python3 cve_2025_55182_scanner.py -l targets.txt -o results.csv
Ignore les erreurs de certificat SSL/TLS (utile pour l'analyse basée sur IP, les laboratoires locaux ou les certificats auto-signés).
python3 cve_2025_55182_scanner.py -u [https://192.168.1.50](https://192.168.1.50) -k
Nouveau dans v2.1 : utilisez le flag --header pour transmettre des cookies de session ou des jetons si l'application est derrière une authentification ou un WAF qui nécessite des en-têtes spécifiques.
python3 cve_2025_55182_scanner.py -u https://target.com --header "Cookie: session=123" --header "Authorization: Bearer xyz"
| Flag | Description |
|---|---|
-u, --url | URL cible unique (par exemple http://target.com/dashboard). |
-l, --list | Fichier contenant une liste d'URLs à analyser (une par ligne). |
--bypass | (Nouveau v2.5) Active le mode d'évasion WAF. Tente automatiquement des techniques de mutation (Unicode, Rembourrage, Espaces) si une cible est détectée comme [FILTERED]. |
--header | Ajoute des en-têtes personnalisés (par exemple Cookie: session=xyz, Authorization: Bearer...). Peut être utilisé plusieurs fois. |
-o, --output | Sauvegarde les résultats dans un fichier texte. |
-k, --insecure | Désactive la vérification du certificat TLS (Supprime les avertissements SSL). |
-t, --threads | Nombre de threads concurrents pour l'analyse groupée (défaut : 10). |
--timeout | Délai d'attente de la requête en secondes (défaut : 10s pour accommoder les charges utiles multipart). |
--verbose | Active le mode débogage. Affiche les étapes de sondage détaillées, l'état de blocage WAF et les tentatives de contournement. |
📊 Interprétation des résultats (v2.5)
[EXPOSED] | 🔴 (Rouge) | Vulnérable
Le serveur a traité la charge utile et a renvoyé une erreur de digest React 19 OU une redirection d'action (303). Haute confiance de surface exposée.
[BYPASSED] | 🟠 (Orange) | WAF contourné
Succès ! Le scanner a initialement détecté un filtre, mais l'a contourné avec succès en utilisant des techniques de mutation (par exemple Rembourrage/Unicode) pour déclencher la vulnérabilité.
[SUSPICIOUS] | 🟡 (Jaune) | Avertissement
Le serveur a planté (500) lors de l'analyse de la charge utile. Indique une logique de sérialisation exposée, même sur des cibles durcies qui suppriment les en-têtes X-Powered-By.
[FILTERED] | 🔵 (Bleu) | Règle WAF détectée
Le serveur accepte le trafic RSC (charge utile bénigne passée), mais une règle WAF spécifique a bloqué la charge utile d'exploitation. La cible est vivante derrière le WAF. Utilisez --bypass pour tenter de contourner.
[INFO] | 🔵 (Cyan) | Protocole détecté
Le serveur parle RSC (text/x-component) mais a géré la charge utile avec élégance. Probablement corrigé ou comportement standard.
[BLOCKED] | 🟣 (Magenta) | Blocage WAF global
Tout a été bloqué (403/406), y compris la poignée de main bénigne. Le WAF bloque entièrement le protocole ou votre IP.
[SAFE] | 🟢 (Vert) | Propre
Le serveur a renvoyé 404/200 mais a ignoré les en-têtes RSC / corps multipart sur tous les chemins sondés.
Un modèle Nuclei basé sur cette logique de détection est inclus dans ce dépôt : cve-2025-55182-detection.yaml.
nuclei -t cve-2025-55182-detection.yaml -l targets.txt
--bypass qui automatise les techniques d'évasion (Espaces, Unicode, Grand rembourrage) lorsqu'une cible est détectée comme [FILTERED].multipart/form-data pour corriger les faux négatifs sur les cibles retournant des 404 aux charges utiles textuelles.X-Powered-By.303 See Other utilisées par certaines implémentations vulnérables.text/plain à multipart/form-data. Cela résout les faux négatifs sur les cibles qui imposent strictement les données de formulaire pour les actions serveur et retournaient auparavant des 404.HTTP 303 See Other et x-action-redirect, qui sont des indicateurs forts du traitement RSC souvent cachés lorsque les scanners suivent automatiquement les redirections.Cet outil est conçu pour aider les chercheurs en sécurité et les administrateurs à identifier les surfaces d'attaque exposées dans leurs propres systèmes. L'auteur n'est pas responsable de toute utilisation abusive de cet outil. Ne l'utilisez pas contre des systèmes pour lesquels vous n'avez pas d'autorisation explicite de tester.
Références :
- https://nvd.nist.gov/vuln/detail/CVE-2025-55182
- https://www.wiz.io/blog/critical-vulnerability-in-react-cve-2025-55182