
Scanner de vulnérabilités passif pour CVE-2025-55182 et CVE-2025-66478, détectant une RCE non authentifiée dans les composants serveur React via framework fingerprinting, version analysis et RSC endpoint probing.
Outil de détection d'exécution de code à distance via le protocole Flight des React Server Components
Ce scanner identifie les systèmes potentiellement vulnérables aux CVE-2025-55182 (React) et CVE-2025-66478 (Next.js), des vulnérabilités critiques d'exécution de code à distance sans authentification dans le protocole « Flight » des React Server Components (RSC).
Facteurs de risque clés :
Une vulnérabilité critique de désérialisation non sécurisée dans l'implémentation des Server Components de React. Le protocole « Flight » du RSC ne parvient pas à valider correctement la structure et les types des charges utiles entrantes, permettant aux attaquants d'injecter des données malveillantes qui influencent l'exécution côté serveur.
| Package | Versions vulnérables | Versions corrigées |
|---|---|---|
| react-server-dom-webpack | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
| react-server-dom-parcel | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
| react-server-dom-turbopack | 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.77+, 15.x, 16.0.0-16.0.6 | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7 |
Attaquant → Requête HTTP POST conçue → Point d'accès RSC → Désérialisation → Exécution de code (RCE)
L'attaque nécessite uniquement une requête HTTP spécialement conçue vers n'importe quel point d'accès de fonction serveur. Aucune authentification n'est nécessaire et les configurations par défaut sont vulnérables.
Le scanner utilise l'empreinte passive et le sondage de protocole pour identifier les systèmes potentiellement vulnérables. Il ne tente PAS d'exploitation.
┌─────────────────────────────────────────────────────────────────┐
│ CHAÎNE DE DÉTECTION │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. Détection du framework │
│ ├── En-têtes HTTP (X-Powered-By: Next.js) │
│ ├── Code source de la page (__NEXT_DATA__, artefacts React)│
│ └── Manifests de construction │
│ │
│ 2. Empreinte de version │
│ ├── Chaînes de version intégrées dans les bundles JS │
│ ├── Motifs de version des packages │
│ └── Analyse du manifest de construction │
│ │
│ 3. Découverte des points d'accès RSC │
│ ├── Envoi d'en-têtes RSC (RSC: 1, Accept: text/x-component)│
│ ├── Analyse du Content-Type de la réponse │
│ └── Détection des marqueurs du protocole Flight │
│ │
│ 4. Sondage des actions serveur │
│ ├── Requête POST avec une charge utile Flight minimale │
│ ├── Vérification du traitement de désérialisation │
│ └── Identification des points d'accès d'action │
│ │
│ 5. Évaluation de la vulnérabilité │
│ ├── Corrélation de la version avec les plages vulnérables │
│ ├── Pondération de la présence de points d'accès RSC │
│ └── Génération d'un verdict avec score de confiance │
│ │
└─────────────────────────────────────────────────────────────────┘
| Indicateur | Méthode de détection | Confiance |
|---|---|---|
X-Powered-By: Next.js | Inspection des en-têtes HTTP | Élevée |
__NEXT_DATA__ script tag | Analyse du code source HTML | Élevée |
/_next/ chemins d'actifs | Analyse du code source HTML | Moyenne |
| Marqueurs d'hydratation React | Analyse du code source HTML | Moyenne |
Le protocole Flight utilise un format de transmission spécifique :
0:["$","div",null,{"children":"Hello"}]
1:["$","$L1",null,{}]
2:{"name":"ServerComponent"}
Le scanner recherche :
text/x-component{numéro}:{charge utile}$, $L, $F, $@, $undefinedRecherche des motifs de version dans :
/_next/static/chunks/)[email protected])requests# Clonez ou téléchargez les fichiers du scanner
# Installez les dépendances
pip install -r requirements.txt
# Vérifiez l'installation
python3 cve-2025-55182-scanner.py --help
# Cible unique
python3 cve-2025-55182-scanner.py -t https://example.com
# Avec sortie détaillée
python3 cve-2025-55182-scanner.py -t https://example.com -v
# Créez un fichier de cibles (une URL par ligne)
echo "https://app1.example.com" > targets.txt
echo "https://app2.example.com" >> targets.txt
# Analysez toutes les cibles
python3 cve-2025-55182-scanner.py -f targets.txt -o results.json
python3 cve-2025-55182-scanner.py -t https://example.com \
--timeout 15 \
--threads 10 \
--user-agent "SecurityAudit/1.0" \
-v \
-o scan_results.json
| Option | Description | Défaut |
|---|---|---|
-t, --target | URL cible unique | - |
-f, --file | Fichier contenant la liste des cibles | - |
-o, --output | Fichier de sortie JSON | - |
-v, --verbose | Afficher les preuves détaillées | False |
--timeout | Délai d'attente de la requête (secondes) | 10 |
--threads | Threads concurrents | 5 |
--verify-ssl | Vérifier les certificats SSL | False |
--user-agent | User-Agent personnalisé | Mozilla/5.0... |
--no-banner | Supprimer la bannière | False |
Pour une analyse plus approfondie du protocole :
python3 rsc_analyzer.py https://example.com 2>/dev/null
Ceci fournit une analyse détaillée du protocole Flight et l'énumération des composants.