flawopen.com/Teardowns/cve-2025-55182-react-server-components-rce
CVE-2025-55182: React2Shell en RSC
CVE-2025-55182 es ejecución remota de código sin autenticación al decodificar payloads React Server Components (RSC). React confirmó el fallo; Google Threat Intelligence documentó campañas con downloaders, backdoors y mineros.[1], [4], [5]
Imagina a una recepcionista consultando un directorio de servicios autorizados. Una búsqueda defectuosa trata un nombre heredado de la plantilla como si el responsable lo hubiera registrado. El parche de React comprueba que la exportación solicitada pertenezca al propio módulo; el aviso público no revela la secuencia completa del exploit. Actualiza los paquetes afectados.[1]
Conceptos Clave y Términos
React Server Components (RSC)- React Server Components: protocolo y paquetes React para renderizado servidor e intercambio de datos Flight.[1]
Mapeos de marcos
- Referencia CWE para la debilidad descrita en esta guía: CWE-502
- CISA KEV — añadido el 2025-12-05 — CVE-2025-55182
Análisis de Causa Raíz
React confirma que la RCE surgió al decodificar payloads enviados a endpoints React Server Functions; admitir RSC podía bastar para exponer la app. El aviso inicial reservó detalles del exploit. El parche upstream añade una comprobación de propiedad propia en requireModule() y manejo de errores multipart. Este fragmento muestra un cambio concreto, no reproduce todo el decoder ni afirma que una sola guarda explique la cadena completa.[1], [2]
Versiones afectadas y alcance del despliegue de React2Shell
| Componente o despliegue | Evaluación del alcance | Medida correctiva |
|---|---|---|
react-server-dom-webpack, react-server-dom-parcel o react-server-dom-turbopack en 19.0, 19.1.0, 19.1.1 o 19.2.0. | El soporte RSC del servidor puede exponer una aplicación aunque no declare un endpoint Server Function; el límite del servidor debe ser accesible. | Actualiza la línea del paquete a 19.0.1, 19.1.2 o 19.2.1 o posterior, según corresponda. Reconstruye y vuelve a desplegar el artefacto del servidor. |
| Next.js App Router en versiones afectadas 15.x/16.x o 14.3.0-canary.77 y canaries posteriores. | Las integraciones afectadas del framework incluyen los paquetes RSC vulnerables. No des por hecho que es seguro porque la aplicación no declare su propio endpoint Server Function. | Usa la versión corregida de la línea correspondiente: 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7 o 16.0.7 o posterior. Son las versiones mínimas registradas en el aviso citado; comprueba la rama actual del proveedor antes del despliegue. |
| Aplicación React solo de cliente, sin soporte RSC en el servidor. | Fuera del alcance documentado de la CVE porque no tiene el límite decodificador del servidor. | Esta configuración no necesita el parche de servidor de React2Shell. Reevalúa el alcance si se añade RSC o un componente de servidor. |
| Despliegue declarado como corregido. | La versión del manifiesto no demuestra que todas las regiones, servicios de vista previa, workers o contenedores en ejecución usen el artefacto corregido. | Verifica los digests de imagen y las versiones resueltas en producción, vista previa y workers; investiga cualquier período anterior de exposición. |
| Guía de versiones de Next.js por rama en la actualización de React del 2026-01-26 | La guía posterior de React incluye versiones de seguridad más recientes; no son las versiones mínimas que corrigieron inicialmente CVE-2025-66478. Los avisos RSC relacionados y las ramas con soporte pueden cambiar el destino de actualización. | Para los avisos RSC relacionados CVE-2025-55183, CVE-2025-55184, CVE-2025-67779 y CVE-2026-23864, React indicó como corregidas las versiones 19.0.4, 19.1.5 y 19.2.4. La guía de Next.js, fechada el 2026-01-26, fue: 14.2.35 para 13.3.x–14.x estable; 15.0.8 para 15.0.x; 15.1.12 para 15.1.x; 15.2.9 para 15.2.x; 15.3.9 para 15.3.x; 15.4.11 para 15.4.x; 15.5.10 para 15.5.x; 16.0.11 para 16.0.x; y 16.1.5 para 16.1.x. Esta es una guía posterior para problemas relacionados, no las versiones mínimas de Next.js que corrigieron CVE-2025-66478. Antes del despliegue, consulte el aviso más reciente del proveedor y confirme la rama con soporte. |
CVE-2026-23869 — denegación de servicio de RSC (2026-04-08). | React informa que las solicitudes HTTP especialmente diseñadas a los endpoints de Server Function pueden consumir CPU en exceso durante hasta un minuto antes de generar un error capturable. Las ramas afectadas de los paquetes react-server-dom-* llegan hasta 19.0.4, 19.1.5 y 19.2.4. | React indica que 19.0.5, 19.1.6 y 19.2.5 corrigen el problema, respectivamente. |
CVE-2026-23870 — denegación de servicio de RSC (2026-05-06). | React informa que las solicitudes HTTP especialmente diseñadas pueden provocar excepciones por falta de memoria o un consumo excesivo de CPU. Las ramas afectadas de los paquetes react-server-dom-* llegan hasta 19.0.5, 19.1.6 y 19.2.5. | React indica que 19.0.6, 19.1.7 y 19.2.6 corrigen el problema, respectivamente. |
CVE-2026-44907 — denegación de servicio de Server Functions (2026-07-21). | React informa que las solicitudes HTTP especialmente diseñadas pueden provocar excepciones por falta de memoria o un consumo excesivo de CPU. Las ramas afectadas de los paquetes react-server-dom-* llegan hasta 19.0.7, 19.1.8 y 19.2.7. | React indica que 19.0.8, 19.1.9 y 19.2.8 corrigen el problema, respectivamente. |
Flujo de Ataque Paso a Paso
Código Fuente: Vulnerable vs. Seguro
Este fragmento exacto del parche upstream solo devuelve una exportación propia del módulo; no reproduce todo el fallo del decodificador ni constituye una solución independiente. Actualiza React Server Components o el framework afectado.[2], [1]
Fragmento de origen: Método requireModule() en el cliente Parcel de React
export function requireModule<T>(metadata: ClientReference<T>): T {
const moduleExports = parcelRequire(metadata[ID /* module id */]);
return moduleExports[metadata[NAME]];
}
export function requireModule<T>(metadata: ClientReference<T>): T {
const moduleExports = parcelRequire(metadata[ID /* module id */]);
if (hasOwnProperty.call(moduleExports, metadata[NAME])) {
return moduleExports[metadata[NAME]];
}
return (undefined: any);
}
Lista de Verificación de Seguridad para Ingeniería
- ✓Revisa lockfiles, imágenes y bundles desplegados.[1], [4]
- ✓Actualiza a React RSC 19.0.1, 19.1.2 o 19.2.1 o posterior y versiones corregidas del framework. Para avisos RSC posteriores, consulta la matriz y actualiza los paquetes
react-server-dom-*resueltos a la versión corregida aplicable más reciente; los frameworks pueden incluir estos paquetes.[1], [4], [8], [9], [10] - ✓Recompila y redespliega; WAF es defensa temporal, no sustituye el parche.[1]
- ✓Verifica versiones en ejecución.[1]
- ✓Si estuvo expuesto sin parche, investiga procesos y conexiones y rota secretos.[5], [6]
Fuentes
- React Security Advisory — CVE-2025-55182
- React upstream patch — commit 7dc903c
- NVD — CVE-2025-55182, CWE-502 and KEV status
- Next.js Security Advisory — CVE-2025-66478
- Google Threat Intelligence — React2Shell exploitation
- CISA Known Exploited Vulnerabilities Catalog
- Aviso de seguridad de React — vulnerabilidades adicionales de RSC
- Aviso de seguridad de React — CVE-2026-23869 (DoS de RSC)
- Aviso de seguridad de React — CVE-2026-23870 (DoS de RSC)
- Aviso de seguridad de React — CVE-2026-44907 (DoS de Server Functions)