
Scanner passivo di vulnerabilità per CVE-2025-55182 e CVE-2025-66478, che rileva RCE non autenticato in React Server Components tramite fingerprinting del framework, analisi delle versioni e probing degli endpoint RSC.
Strumento di Rilevamento di Esecuzione di Codice Remoto nel Protocollo Flight di React Server Components
Questo scanner identifica i sistemi potenzialmente vulnerabili a CVE-2025-55182 (React) e CVE-2025-66478 (Next.js), vulnerabilità critiche di esecuzione di codice remoto non autenticate nel protocollo "Flight" di React Server Components (RSC).
Fattori di Rischio Chiave:
Una vulnerabilità critica di deserializzazione insicura nell'implementazione dei Server Components di React. Il protocollo RSC "Flight" non convalida correttamente la struttura e i tipi dei payload in arrivo, consentendo agli aggressori di iniettare dati malevoli che influenzano l'esecuzione lato server.
| Package | Versioni Vulnerabili | Versioni Corrette |
|---|---|---|
| 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 |
Attaccante → Richiesta HTTP POST appositamente costruita → Endpoint RSC → Deserializzazione → RCE
L'attacco richiede solo una richiesta HTTP appositamente costruita verso qualsiasi endpoint di Server Function. Non è necessaria autenticazione e le configurazioni predefinite sono vulnerabili.
Lo scanner utilizza fingerprinting passivo e sondaggio del protocollo per identificare i sistemi potenzialmente vulnerabili. Non tenta lo sfruttamento.
┌─────────────────────────────────────────────────────────────────┐
│ DETECTION PIPELINE │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. Framework Detection │
│ ├── HTTP Headers (X-Powered-By: Next.js) │
│ ├── Page Source (__NEXT_DATA__, react artifacts) │
│ └── Build Manifests │
│ │
│ 2. Version Fingerprinting │
│ ├── Embedded version strings in JS bundles │
│ ├── Package version patterns │
│ └── Build manifest analysis │
│ │
│ 3. RSC Endpoint Discovery │
│ ├── Send RSC headers (RSC: 1, Accept: text/x-component) │
│ ├── Analyze response Content-Type │
│ └── Detect Flight protocol markers in response │
│ │
│ 4. Server Actions Probing │
│ ├── POST request with minimal Flight payload │
│ ├── Check for deserialization processing │
│ └── Identify action endpoints │
│ │
│ 5. Vulnerability Assessment │
│ ├── Correlate version with known vulnerable ranges │
│ ├── Weight RSC endpoint presence │
│ └── Generate confidence-scored verdict │
│ │
└─────────────────────────────────────────────────────────────────┘
| Indicatore | Metodo di Rilevamento | Confidenza |
|---|---|---|
X-Powered-By: Next.js | Ispezione dell'intestazione HTTP | Alta |
__NEXT_DATA__ script tag | Analisi del sorgente HTML | Alta |
/_next/ percorsi asset | Analisi del sorgente HTML | Media |
| Marcatori di hydration di React | Analisi del sorgente HTML | Media |
Il protocollo Flight utilizza un formato wire specifico:
0:["$","div",null,{"children":"Hello"}]
1:["$","$L1",null,{}]
2:{"name":"ServerComponent"}
Lo scanner cerca:
text/x-component Content-Type{numero}:{payload}$, $L, $F, $@, $undefinedCerca pattern di versione in:
/_next/static/chunks/)[email protected])requests# Clona o scarica i file dello scanner
# Installa le dipendenze
pip install -r requirements.txt
# Verifica l'installazione
python3 cve-2025-55182-scanner.py --help
# Target singolo
python3 cve-2025-55182-scanner.py -t https://example.com
# Con output verboso
python3 cve-2025-55182-scanner.py -t https://example.com -v
# Crea file dei target (un URL per riga)
echo "https://app1.example.com" > targets.txt
echo "https://app2.example.com" >> targets.txt
# Scansiona tutti i target
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
| Opzione | Descrizione | Predefinito |
|---|---|---|
-t, --target | URL del target singolo | - |
-f, --file | File con elenco dei target | - |
-o, --output | File di output JSON | - |
-v, --verbose | Mostra evidenze dettagliate | False |
--timeout | Timeout richiesta (secondi) | 10 |
--threads | Thread concorrenti | 5 |
--verify-ssl | Verifica certificati SSL | False |
--user-agent | User-Agent personalizzato | Mozilla/5.0... |
--no-banner | Sopprimi banner | False |
Per un'analisi più approfondita del protocollo:
python3 rsc_analyzer.py https://example.com 2>/dev/null
Questo fornisce un'analisi dettagliata del protocollo Flight e l'enumerazione dei componenti.
| Stato | Significato | Azione Richiesta |
|---|---|---|
| 🔴 VULNERABLE | Versione vulnerabile confermata rilevata | Correzione immediata |
| 🔴 LIKELY_VULNERABLE | React 19.x con RSC, versione in intervallo vulnerabile | Correzione urgente |
| 🟡 POTENTIALLY_VULNERABLE | Endpoint RSC trovati, versione sconosciuta | Indaga e correggi |
| 🟢 NOT_VULNERABLE | Versione corretta confermata | Monitora per aggiornamenti |
| 🔵 UNKNOWN | Impossibile determinare lo stato | Verifica manuale necessaria |
| ⚪ ERROR | Scansione fallita | Riprova o verifica manualmente |
======================================================================
Target: https://app.example.com
Status: VULNERABLE
Framework: Next.js
Version: 19.1.0
RSC Endpoints: /, /_next/data
Evidence:
- X-Powered-By header: Next.js
- React version detected: 19.1.0
- RSC Flight response at / (Content-Type: text/x-component)
- Flight protocol markers detected at /
Recommendations:
→ CRITICAL: Immediate patching required!
→ Upgrade React to 19.0.1, 19.1.2, or 19.2.1
→ Upgrade Next.js to latest patched version (15.0.5+, 16.0.7)
→ Enable WAF rules to block malicious RSC payloads
→ Monitor for anomalous POST requests to RSC endpoints
======================================================================
{
"target": "https://app.example.com",
"status": "VULNERABLE",
"framework": "Next.js",
"version": "19.1.0",
"rsc_endpoints": ["/", "/_next/data"],
"evidence": [
"X-Powered-By header: Next.js",
"React version detected: 19.1.0",
"RSC Flight response at / (Content-Type: text/x-component)"
],
"recommendations": [
"CRITICAL: Immediate patching required!",
"Upgrade React to 19.0.1, 19.1.2, or 19.2.1"
]
}
| Tipo di Risultato | Confidenza | Spiegazione |
|---|---|---|
| VULNERABLE con versione | ALTA (90%+) | Stringa di versione corrispondente a versione vulnerabile nota |
| VULNERABLE tramite header | ALTA (85%+) | X-Powered-By ha esposto versione vulnerabile |
| LIKELY_VULNERABLE | MEDIO-ALTA (70-85%) | React 19.x rilevato, RSC attivo, versione non esplicitamente corretta |
| POTENTIALLY_VULNERABLE | MEDIA (50-70%) | Endpoint RSC rispondono, ma versione sconosciuta |
| NOT_VULNERABLE | ALTA (85%+) | Versione corretta esplicitamente rilevata |
| UNKNOWN | BASSA (<50%) | Informazioni insufficienti raccolte |
✅ Stringa di versione esplicita trovata nei bundle
✅ Intestazione X-Powered-By espone la versione
✅ Più indicatori RSC presenti
✅ Risposta del protocollo Flight confermata
✅ Il server accetta richieste POST RSC
❌ Nessuna informazione sulla versione esposta
❌ WAF/CDN mascherano le risposte
❌ Implementazione del framework personalizzata
❌ Caching pesante che blocca i probe
❌ Limitazione della frequenza che blocca il rilevamento
| Scenario | Perché Succede | Mitigazione |
|---|---|---|
| Vecchia stringa di versione in cache | Cache CDN/build | Controlla più endpoint |
| RSC disabilitato dopo l'aggiornamento | Modifica configurazione senza rebuild | Verifica data build |
| Implementazione RSC non standard | Framework personalizzato | Verifica manuale |
| Scenario | Perché Succede | Mitigazione |
|---|---|---|
| Versione rimossa dai bundle | Ottimizzazione produzione | Controlla manifest di build |
| WAF blocca i probe | Controlli di sicurezza | Test da IP autorizzato |
| RSC su percorsi non standard | Routing personalizzato | Espandi wordlist percorsi |
| SPA senza indicatori SSR | Rendering solo client | Controlla endpoint API |
| Fattore | Impatto sul Rilevamento |
|---|---|
| Cloudflare/WAF | Può bloccare i probe, mascherare gli header |
| Cache CDN | Può fornire informazioni di versione obsolete |
| Bilanciatori di carico | Può instradare a versioni diverse dell'app |
| Kubernetes/Containers | Ogni pod può differire |
| Feature Flag | RSC può essere abilitato condizionalmente |
Per risultati critici, convalidare sempre con:
npm audit o yarn auditAzioni Immediate (0-24 ore):
Correggi immediatamente
npm install [email protected] [email protected]
npm install [email protected] # or latest patched
Abilita regole WAF - Cloudflare, Akamai e AWS WAF hanno distribuito regole protettive
Monitora i log per richieste POST sospette verso endpoint RSC
Azioni a Breve Termine (24-72 ore):
package.json# Scansione batch di tutti gli asset aziendali
cat domains.txt | while read domain; do
python3 cve-2025-55182-scanner.py -t "$domain" -o "results_${domain//\//_}.json"
done
# Aggrega risultati
jq -s '[.[] | select(.status == "VULNERABLE" or .status == "LIKELY_VULNERABLE")]' results_*.json > critical_findings.json
# GitHub Actions example
- name: CVE-2025-55182 Check
run: |
python3 cve-2025-55182-scanner.py -t ${{ env.APP_URL }} -o results.json
if grep -q '"status": "VULNERABLE"' results.json; then
echo "::error::Critical vulnerability detected!"
exit 1
fi
| Version | Date | Changes |
|---|---|---|
| 1.0.0 | 2025-12-03 | Rilascio iniziale |
Questo strumento è fornito esclusivamente per test di sicurezza autorizzati. Usalo solo su sistemi di tua proprietà o per i quali hai esplicita autorizzazione scritta di test. Gli autori non si assumono alcuna responsabilità per l'uso improprio o i danni causati da questo strumento.