FlawOpen

flawopen.com/Teardowns/cve-2025-55182-react-server-components-rce

● CVE-2025-55182 · CVSS 10.0[1] · Crítica
Investigación · FlawOpen

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]

💡 Explicación en Lenguaje Sencillo (ELI5)

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

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 despliegueEvaluación del alcanceMedida 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-26La 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

Paso 1

Una frontera RSC expuesta recibe una solicitud sin autenticar

React indica que admitir RSC podía afectar la aplicación aunque no definiera un endpoint propio de Server Function. Las apps solo cliente, sin servidor, quedan fuera de esta CVE.[1], [4]

Paso 2

Una petición preparada alcanza el decoder vulnerable

El proveedor describe decodificación insegura de solicitudes Server Function. Los avisos reservaron una receta completa; no infieras mecánicas no documentadas.[1], [2]

Paso 3

La ejecución usa los privilegios del proceso web

El aviso indica ejecución con los privilegios del proceso afectado. El impacto depende de la cuenta de servicio y los secretos y servicios accesibles.[1], [4]

Paso 4

Google GTIG observó campañas con túneles, downloaders, backdoors y mineros

GTIG observó campañas con túneles, downloaders, backdoors y mineros. Confirma explotación real, no que todos los hosts vulnerables fueran comprometidos.[5], [6]

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

IMPLEMENTACIÓN VULNERABLE
export function requireModule<T>(metadata: ClientReference<T>): T {
  const moduleExports = parcelRequire(metadata[ID /* module id */]);
  return moduleExports[metadata[NAME]];
}
PARCHE SEGURO Y ROBUSTO
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

Fuentes