Freym PC Blog

React2Shell - Vulnerabilidad crítica de ejecución remota de código

Admin
December 6, 2025
React2Shell - Vulnerabilidad crítica de ejecución remota de código
Translate to:

CVE‑2025‑55182 (apodado “React2Shell”) es una vulnerabilidad crítica de ejecución remota de código no autenticada en React Server Components (RSC), con CVSS 10.0. Afecta al paquete react-server y al protocolo Flight usado en React 19 y frameworks que lo implementan (sobre todo Next.js con App Router), permitiendo que un atacante ejecute JavaScript arbitrario en el servidor enviando peticiones HTTP especialmente manipuladas.

Afectación y versiones vulnerables

  • React Server Components: versiones 19.0.0, 19.1.0, 19.1.1 y 19.2.0 de React con soporte de RSC.
  • Frameworks impactados:
    • Next.js 15.x y 16.x cuando usan App Router y RSC (el CVE-2025‑66478 de Next.js se ha consolidado como duplicado de CVE‑2025‑55182).
    • Otros ecosistemas RSC: React Router con APIs RSC, Expo, Redwood, Waku y plugins de Vite/Parcel que integran Flight.
  • Riesgo: incluso apps “en blanco” creadas con create-next-app con configuración por defecto pueden ser explotables si exponen endpoints RSC.

Detalle técnico del fallo

Naturaleza de la vulnerabilidad

  • Tipo de fallo: deserialización insegura y “server‑side prototype pollution” en el protocolo Flight de RSC.
  • Vector: el servidor recibe payloads Flight en peticiones HTTP (normalmente POST) y los deserializa sin validación suficiente de estructura ni de claves especiales; un atacante puede inyectar propiedades que terminan modificando prototipos de objetos y forzando ejecución de funciones peligrosas (child_process.execSync, etc.).

Cambio de código que ilustra el bug

  • El parche en facebook/react añade comprobación explícita de que la propiedad existe en moduleExports antes de devolverla; previamente, se retornaba moduleExports[metadata[NAME]] de forma directa, lo que permitía abusar de propiedades “envenenadas”.
  • Esta ausencia de comprobación abría la puerta a la contaminación del prototipo y a la ejecución de código en contexto de servidor (“React2Shell”).

Explotación

  • El atacante envía un payload Flight malformado que:
    • Inyecta referencias a funciones del core de Node (por ejemplo, vm.runInThisContext o constructores) a través de campos específicos del protocolo.
    • Encadena esa referencia con llamadas a process.mainModule.require('child_process').execSync(...) u otras primitivas para ejecutar comandos del sistema.
  • PoCs públicos demuestran:
    • Creación de un fichero en /tmp ejecutando whoami con permisos de root en despliegues Docker típicos de Next.js.
    • Ejecución de comandos arbitrarios y exfiltración de datos mediante solicitudes HTTP salientes desde el servidor comprometido.

Estado de explotación

  • Línea temporal:
    • 29 nov: el fallo se reporta vía bug bounty a Meta.
    • 1–3 dic: se desarrolla el fix, se coordina con proveedores cloud y se publica en npm junto al aviso de seguridad.
    • 3–4 dic: investigadores (Datadog, Wiz, etc.) publican análisis y proof‑of‑concepts funcionales.
    • A partir del 3–5 dic: se observan campañas de explotación activas, incluyendo grupos vinculados a China contra infraestructuras cloud que ejecutan apps React/Next.js vulnerables.
  • Algunos informes indican “explotación fiable casi al 100%” contra configuraciones por defecto de Next.js con App Router.

Mitigación y hardening

Parches y versiones seguras

  • Actualizar React y RSC:
    • Migrar a las versiones parcheadas posteriores al 3 de diciembre (React > 19.2.0 con el fix integrado).
  • Actualizar frameworks:
    • Next.js: versiones parcheadas que integran la corrección (sustituyen el CVE‑2025‑66478 por la referencia a CVE‑2025‑55182), disponibles en branches 15.x/16.x.

Medidas adicionales (si no puedes parchear ya mismo)

  • Exposición:
    • Restringir acceso externo a endpoints RSC/Flight mediante WAF, proxies o reescrituras de rutas; si es posible, desactivar temporalmente RSC en entornos críticos.
  • Detección:
    • Monitorear patrones anómalos de payloads Flight (valores extraños en IDs, estructuras JSON atípicas) y llamadas sospechosas a child_process, vm, Function constructor y similares en logs de Node.
  • Infraestructura:
    • Asegurar que los procesos Node se ejecutan con el mínimo privilegio (sin root en contenedores, sin capacidades extra en el host).
    • Revisar accesos salientes (egress) desde servidores de aplicaciones para dificultar exfiltración post‑explotación.

Resumen rápido

  • Tipo: RCE no autenticada por deserialización insegura / prototype pollution en React Server Components (Flight), CVSS 10.0.
  • Afecta: React 19.x con RSC, Next.js 15.x/16.x con App Router y otros frameworks basados en RSC.
  • Estado: PoCs públicos, explotación ya observada en Internet contra despliegues por defecto (“React2Shell”).
  • Acción: actualizar React/Next.js ya, limitar exposición de endpoints RSC, reforzar ejecución de Node y monitorizar actividad sospechosa.
Comments (0)

No comments yet. Be the first to comment!