
Uno scanner di superficie non intrusivo per la CVE-2025-55182 (React Server Components RCE). Rileva endpoint RSC esposti nelle applicazioni React 19 e Next.js.
Uno scanner di superficie specializzato e non intrusivo per CVE-2025-55182 (RCE di React Server Components).

Leggi questo prima di eseguire la scansione:
Sebbene CVE-2025-55182 sia una vulnerabilità RCE critica (CVSS 10.0), lo sfruttamento nel mondo reale in ambienti di produzione Next.js è condizionato.
serverManifest per autorizzare i moduli consentiti. I tentativi diretti di caricare moduli pericolosi (come child_process) tramite RSC spesso falliscono perché non sono presenti in questo manifest.serverManifest in memoria e bypassare la whitelist.742 invece di "vm"). Gli exploit rigidi che indovinano i nomi falliranno (Falsi Negativi).Questo strumento è un rilevatore di superficie. Identifica se il protocollo RSC è esposto e attivo. Trovare un endpoint esposto è il passaggio preliminare per identificare la superficie d'attacco su cui potrebbe essere tentata una catena di Prototype Pollution.
La maggior parte dei PoC e scanner pubblici produce Falsi Negativi in ambienti di produzione perché cadono in quattro trappole comuni:
Rigidità dello sfruttamento: Provano a eseguire gadget specifici (come vm o child_process) che sono bloccati dalle whitelist, oppure si affidano a ID hardcoded (es., "id":"vm") che falliscono contro build Webpack minificate.
Reindirizzamenti della Root: Effettuare una POST / su Next.js spesso innesca un reindirizzamento 307/308 (es., a /login), causando la perdita del body della POST o la sua conversione in GET prima che il server lo elabori.
Mancata corrispondenza del trasporto: Molti scanner inviano i payload come text/plain o JSON grezzo. Le Server Actions rigorose di Next.js spesso richiedono l'incapsulamento multipart/form-data. Se il formato non è corretto, il server restituisce 404/200 senza mai attivare il parser vulnerabile.
Cecità verso i WAF: Gli strumenti standard vedono un 403 Forbidden e si arrendono. Non distinguono tra un blocco IP globale e un filtro di regole specifico, perdendo opportunità di bypassare il WAF usando tecniche di encoding o padding.
Questo scanner risolve tutte e tre le sfide:
✅ Sondaggio Intelligente del Percorso: Sonda automaticamente percorsi casuali inesistenti (es., /x7z9q2) per bypassare i reindirizzamenti root (307/308) e forzare l'App Router di Next.js a elaborare il contesto della richiesta.
✅ Trasporto Rigoroso (Multipart): Utilizza l'incapsulamento multipart/form-data invece del testo semplice. Questo risolve i Falsi Negativi su endpoint Server Action severi che altrimenti restituiscono 404.
✅ Analisi Differenziale WAF: Distingue tra blocchi globali ([BLOCKED]) e filtri di regole specifici ([FILTERED]). Se il backend consente il protocollo ma blocca il payload, lo scanner lo identifica come un target di alto valore.
✅ Modalità Auto-Bypass: Include un motore opzionale --bypass che tenta automaticamente tecniche di evasione (escape Unicode, mutazione degli spazi, padding spazzatura) contro i target [FILTERED].
✅ Rilevamento Hardened: Cattura i "crash silenziosi" ([SUSPICIOUS]) sui server enterprise che rimuovono gli header X-Powered-By e identifica la fingerprint del reindirizzamento 303 See Other di Assetnote.
✅ Fingerprinting Attivo: Utilizza un payload specializzato (["$1:aa:aa"]) per attivare l'errore "Digest" univoco di React 19 RSC, confermando che il parser è attivo anche senza una RCE completa.
Clona il repository:
git clone https://github.com/fatguru/CVE-2025-55182-scanner.git
cd CVE-2025-55182-scanner
Installa le dipendenze (consigliato in un ambiente virtuale):
pip install -r requirements.txt
Scansione di Base
Controlla un singolo URL. Nota: assicurati di puntare al percorso applicativo corretto (es., /dashboard, /login), non solo al dominio di root, poiché gli endpoint dell'App Router di Next.js sono specifici del percorso.
python3 cve_2025_55182_scanner.py -u http://localhost:3000/dashboard
Scansione in Massa
Scansiona un elenco di URL da un file (un URL per riga). Questa è la strategia consigliata per evitare di perdere percorsi specifici.
python3 cve_2025_55182_scanner.py -l targets.txt -o results.csv
Ignora gli errori dei certificati SSL/TLS (utile per scan basati su IP, laboratori locali o certificati self-signed).
python3 cve_2025_55182_scanner.py -u https://192.168.1.50 -k
Novità della v2.1: usa il flag --header per passare cookie di sessione o token se l'app è protetta da autenticazione o da un WAF che richiede header specifici.
python3 cve_2025_55182_scanner.py -u https://target.com --header "Cookie: session=123" --header "Authorization: Bearer xyz"
| Flag | Descrizione |
|---|---|
-u, --url | URL singolo del target (es., http://target.com/dashboard). |
-l, --list | File contenente un elenco di URL da scansionare (uno per riga). |
--bypass | (Novità v2.5) Abilita la modalità di evasione WAF. Tenta automaticamente tecniche di mutazione (Unicode, Padding, Whitespace) se un target viene rilevato come [FILTERED]. |
--header | Aggiungi header personalizzati (es., Cookie: session=xyz, Authorization: Bearer...). Può essere usato più volte. |
-o, --output | Salva i risultati in un file di testo. |
-k, --insecure | Disabilita la verifica dei certificati TLS (sopprime gli avvisi SSL). |
-t, --threads | Numero di thread concorrenti per la scansione in massa (default: 10). |
--timeout | Timeout delle richieste in secondi (default: 10s per supportare payload multipart). |
--verbose | Abilita la modalità debug. Mostra i passaggi di probing dettagliati, lo stato di blocco WAF e i tentativi di bypass. |
📊 Interpretazione dei Risultati (v2.5)
[EXPOSED] | 🔴 (Rosso) | Vulnerabile
Il server ha elaborato il payload e ha restituito un errore digest di React 19 oppure un Action Redirect (303). Alta confidenza di superficie esposta.
[BYPASSED] | 🟠 (Arancione) | WAF Evaso
Successo! Lo scanner ha inizialmente rilevato un filtro, ma lo ha aggirato con successo usando tecniche di mutazione (es., Padding/Unicode) per attivare la vulnerabilità.
[SUSPICIOUS] | 🟡 (Giallo) | Avviso
Il server è andato in crash (500) durante l'analisi del payload. Indica una logica di serializzazione esposta, anche su target hardened che rimuovono gli header X-Powered-By.
[FILTERED] | 🔵 (Blu) | Regola WAF Rilevata
Il server accetta il traffico RSC (il payload benigno è passato), ma una regola WAF specifica ha bloccato il payload di exploit. Il target è vivo dietro il WAF. Usa --bypass per tentare l'evasione.
[INFO] | 🔵 (Ciano) | Protocollo Rilevato
Il server parla il protocollo RSC (text/x-component) ma ha gestito il payload normalmente. Probabilmente è patchato o ha un comportamento standard.
[BLOCKED] | 🟣 (Magenta) | Blocco WAF Globale
Tutto è stato bloccato (403/406), incluso l'handshake benigno. Il WAF sta bloccando completamente il protocollo o il tuo IP.
[SAFE] | 🟢 (Verde) | Pulito
Il server ha restituito 404/200 ma ha ignorato gli header RSC e i body multipart su tutti i percorsi sondati.
Un template Nuclei basato su questa logica di rilevamento è incluso in questo repository: cve-2025-55182-detection.yaml.
nuclei -t cve-2025-55182-detection.yaml -l targets.txt
--bypass automatizza le tecniche di evasione (Whitespace, Unicode, Large Padding) quando un target viene rilevato come [FILTERED].multipart/form-data per correggere i Falsi Negativi su target che restituiscono 404 ai payload testuali.X-Powered-By.303 See Other usati da alcune implementazioni vulnerabili.text/plain a multipart/form-data. Questo risolve i Falsi Negativi su target che applicano rigorosamente i dati del modulo per le Server Actions e in precedenza restituivano 404.HTTP 303 See Other e gli header x-action-redirect, che sono forti indicatori di elaborazione RSC spesso nascosti quando gli scanner seguono automaticamente i reindirizzamenti.Questo strumento è pensato per aiutare ricercatori di sicurezza e amministratori a identificare superfici d'attacco esposte nei propri sistemi. L'autore non è responsabile per qualsiasi uso improprio di questo strumento. Non usarlo contro sistemi su cui non hai il permesso esplicito di testare.
Riferimenti:
- https://nvd.nist.gov/vuln/detail/CVE-2025-55182
- https://www.wiz.io/blog/critical-vulnerability-in-react-cve-2025-55182