
React2Shell (CVE-2025-55182) exploit de prueba de concepto (PoC) que demuestra una vulnerabilidad CRÍTICA de ejecución remota de código (RCE) en marcos web modernos que utilizan React Server Components (RSC).
React2Shell es una prueba de concepto (PoC) de explotación que demuestra una vulnerabilidad CRÍTICA de ejecución remota de código (RCE) en marcos web modernos que usan React Server Components (RSC).
Esta PoC ataca CVE-2025-55182, una vulnerabilidad con CVSS 10.0 que permite a ejecutar comandos arbitrarios del sistema mediante deserialización insegura dentro de la implementación de React Server Components.
React2Shell explota una falla en cómo React Server Components procesa entradas no confiables durante la fase de rehidratación.
| Métrica | Detalles |
|---|---|
| Gravedad | CRITICAL (10.0 / 10.0) |
| Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| Vector de ataque | Red (Remoto) |
| Interacción del usuario | Ninguna |
La vulnerabilidad se origina en los paquetes subyacentes react-server-dom-* responsables de serializar y deserializar los árboles de componentes.
Las aplicaciones que usan versiones afectadas de React Server Components pueden procesar cargas maliciosas de una manera que conduce a ejecución remota de código (RCE) bajo los privilegios del proceso servidor.
Un atacante puede:
Si su despliegue coincide con alguna de las versiones vulnerables que se indican a continuación y expone endpoints RSC, usted es vulnerable.
La vulnerabilidad está presente en las versiones 19.0.0, 19.1.0, 19.1.1 y 19.2.0 de:
react-server-dom-parcelreact-server-dom-webpackreact-server-dom-turbopackEstos paquetes se incluyen en múltiples marcos, incluyendo pero no limitado a:
15.0.0 hasta 16.0.614.3.0-canary.76RSC (v19.0.0–19.2.0), como:
ViteParcelReact RouterRedwoodSDKWakuCualquier marco que incorpore la implementación vulnerable de React Server Components está potencialmente afectado.
React2Shell incluye un generador de cargas modulares diseñado para eludir restricciones comunes de Node.js y reglas WAF:
Inyección estándar
process.mainModule.requireNext.js / Webpack.By‑pass asíncrono
import() dinámico para entornos ESM estrictos donde require no está disponible.Ofuscación
child_process) en búferes hexadecimales para evadir firmas WAF simples.Fallback de módulo
module.createRequire para cargar módulos en contextos alternativos.Orientación universal
//RSC/foo.txtNode.js v18.0.0 o superior.git clone https://github.com/rsch-io/CVE-2025-55182-React2Shell.git
cd CVE-2025-55182-React2Shell
npm install form-data
React2Shell está diseñado para ser importado como un módulo en sus propios scripts de prueba.
Cree un archivo llamado exploit.js:
const React2Shell = require('./src/react2shell');
// Inicializar con la URL base del objetivo
const target = new React2Shell('http://localhost:3000');
// Ejecutar comando usando la estrategia "standard"
// Argumentos: execute(command, endpoint, strategy)
target.execute('whoami', '/', 'standard');
Luego ejecute:
node exploit.js
Nota
endpointdebe configurarse en una ruta habilitada para RSC (por ejemplo,/,/RSC/foo.txto endpoints RSC específicos del marco).strategypuede cambiarse (por ejemplo,standard,async,obfuscatedo cualquier otra estrategia implementada enreact2shell).
Waku y otros marcos a menudo exponen el manejo de RSC en rutas específicas:
// Apuntar a una aplicación Waku
// Nota: Use la estrategia 'async' ya que Waku a menudo se ejecuta en ESM estricto
target.execute('ls -la', '/RSC/foo.txt', 'async');
Si el servidor bloquea las cadenas que contienen child_process, puede usar la estrategia obfuscated:
target.execute('cat /etc/passwd', '/', 'obfuscated');
Actualice inmediatamente. Los lanzamientos actualizados de React y los marcos descendientes afectados incluyen un manejo reforzado de las entradas del usuario para evitar comportamientos no deseados.
Todos los usuarios deben actualizar a una versión parcheada lo antes posible.
A continuación se muestra la lista definitiva de versiones parcheadas. Si su versión desplegada es inferior a estas, usted es vulnerable.
| Software / Paquete | Rama / Tipo | 🛡️ Versión(es) corregida(s) / segura(s) |
|---|---|---|
React | Stable | 19.0.1, 19.1.2, 19.2.1 |
Next.js | v15 (Stable) | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7 |
Next.js | v16 (Stable) | 16.0.7 |
Next.js | Canary | 15.6.0-canary.58 |
Advertencia para usuarios de Next.js 14
Si está usandoNext.js 14.3.0-canary.77o una versión canary posterior, usted esvulnerable.
Debe degradar inmediatamente a la última versión estable14.x, ya que la vulnerabilidad afecta la implementación experimental de RSC presente en esas compilaciones canary.
Este proyecto se proporciona únicamente para fines educativos y de pruebas de seguridad autorizadas.
Usar esta herramienta contra sistemas sin permiso explícito es ilegal y poco ético.
El(los) autor(es) no asumen ninguna responsabilidad por el mal uso o los daños causados por esta herramienta.
Este proyecto está licenciado bajo la Licencia MIT. Consulte el archivo LICENSE para más detalles.