Actualización urgente: Grupos de amenazas vinculados a China explotan activamente la vulnerabilidad desde el 3 de diciembre de 2025
Una vulnerabilidad de severidad máxima (CVSS 10.0) en React Server Components permite a atacantes no autenticados ejecutar código arbitrario en servidores mediante una simple solicitud HTTP maliciosa. La falla, identificada como CVE-2025-55182 y apodada «React2Shell», afecta a React 19.x y frameworks derivados como Next.js 14.3+ y 15-16, con explotación confirmada por actores estatales chinos horas después de su divulgación pública.
Cronología de la Crisis
- 29 de noviembre de 2025: Lachlan Davidson reporta la vulnerabilidad al equipo de React
- 3 de diciembre de 2025: Divulgación pública coordinada por React y Vercel
- 3 de diciembre de 2025: Primeras horas posteriores a la divulgación, grupos de amenazas chinos (Earth Lamia, Jackpot Panda) comienzan explotación activa
- 4 de diciembre de 2025: Publicación de PoC funcional contra configuraciones por defecto por Moritz Sanft
- 4 de diciembre de 2025: Lachlan Davidson publica PoC oficial en react2shell.com
- 5 de diciembre de 2025: Amazon confirma explotación activa por múltiples APTs
Análisis Técnico de la Vulnerabilidad
Causa Raíz: Deserialización Insegura en el Protocolo Flight
CVE-2025-55182 es una vulnerabilidad de deserialización lógica en el protocolo «Flight» de React Server Components (RSC). Cuando un servidor procesa cargas útiles RSC enviadas por clientes, el protocolo deserializa los datos codificados sin validación adecuada de su estructura.
Flujo de explotación:
- Cliente envía solicitud HTTP POST con payload RSC malicioso
- Servidor deserializa el payload usando el protocolo Flight
- Datos controlados por el atacante influyen en la lógica de ejecución del servidor
- Ejecución de código JavaScript arbitrario con privilegios del servidor
Vector de Ataque
La explotación no requiere autenticación y puede ejecutarse sobre HTTP con una única petición diseñada. Investigadores de Wiz han confirmado tasa de éxito cercana al 100% en pruebas controladas.
Configuraciones vulnerables por defecto:
# Aplicación Next.js vulnerable creada con scaffolding estándar
npx [email protected] vulnerable-app --yes
cd vulnerable-app
npm run build
npm run start
# Esta aplicación ES vulnerable sin modificaciones de código
Paquetes Afectados
React 19.x:
react-server-dom-webpack(19.0.0, 19.1.0, 19.1.1, 19.2.0)react-server-dom-parcel(19.0.0, 19.1.0, 19.1.1, 19.2.0)react-server-dom-turbopack(19.0.0, 19.1.0, 19.1.1, 19.2.0)
Versiones parcheadas: 19.0.1, 19.1.2, 19.2.1
Next.js:
- Versiones ≥14.3.0-canary.77, todas las 15.x y 16.x con App Router
Versiones parcheadas: 16.0.7, 15.5.7, 15.4.8, 15.3.6, 15.2.6, 15.1.9, 15.0.5
Nota importante: CVE-2025-66478 (asignado inicialmente a Next.js) fue rechazado por NVD como duplicado de CVE-2025-55182, ya que la causa raíz es idéntica en todos los casos.
Alcance del Impacto
Frameworks y Herramientas Afectadas
Cualquier biblioteca que implemente React Server Components está potencialmente vulnerable:
- Next.js (App Router en versiones afectadas)
- React Router (vista previa de RSC)
- Vite (plugin RSC)
- Parcel (plugin RSC)
- RedwoodJS
- Waku
- Expo (en configuraciones específicas)
Datos de Exposición Global
Según investigación de Wiz y otras fuentes OSINT:
- 39% de entornos cloud contienen instancias vulnerables de React/Next.js
- 69% de entornos cloud tienen Next.js instalado
- 44% de todos los entornos cloud tienen instancias Next.js expuestas públicamente
- +968.000 servidores ejecutando React/Next.js identificados por Palo Alto Networks Unit 42
Datos OSINT de exposición pública:
| Motor de Búsqueda | Aplicaciones React Expuestas |
|---|---|
| FOFA | +20.000 |
| Shodan | +30.000 |
| ZoomEye | +3.1 millones |
Condiciones de Vulnerabilidad
Aplicaciones vulnerables:
- Cualquier aplicación React 19.x que use React Server Components
- Aplicaciones Next.js 14.3+ o 15-16 con App Router
- Incluso aplicaciones que NO implementan explícitamente React Server Functions pero SOPORTAN React Server Components
Aplicaciones NO afectadas:
- React sin servidor (aplicaciones puramente client-side)
- Aplicaciones sin framework/bundler compatible con RSC
- Next.js 13.x o versiones anteriores de 14.3
- Next.js con Pages Router (no App Router)
- Edge Runtime de Next.js
Explotación Activa: Amenazas Confirmadas
Actores de Amenaza Identificados
Amazon Web Services, a través de su infraestructura honeypot MadPot, identificó explotación activa por grupos con vínculos estatales chinos:
Earth Lamia (APT China)
- Previamente asociado con explotación de CVE-2025-31324 (SAP NetWeaver)
- Explotación confirmada en honeypots AWS horas después de divulgación
Jackpot Panda (APT China)
- Activo desde 2020, enfocado en industria del juego online en Asia-Pacífico
- Vinculado al compromiso de cadena de suministro de Comm100 (2022)
- Rastrado por ESET como «Operación ChattyGoblin»
- Posibles vínculos con contratista I-Soon
Características de los Ataques
Los analistas de amenazas observan:
- Explotación simultánea de múltiples CVEs (CVE-2025-55182, CVE-2025-1338)
- Uso de PoCs públicos, incluyendo versiones no funcionales
- Monitorización activa de bases de datos de vulnerabilidades
- Automatización de exploits inmediatamente tras divulgaciones públicas
Nota crítica: Amazon reporta que muchos PoCs públicos requieren configuraciones específicas (como registrar explícitamente módulos peligrosos fs, child_process, vm), pero el PoC funcional de diciembre 4 sí afecta configuraciones por defecto.
Mitigación Urgente
Paso 1: Actualización Inmediata
Para aplicaciones React 19.x:
# Verificar versión actual
npm list react-server-dom-webpack react-server-dom-parcel react-server-dom-turbopack
# Actualizar a versiones parcheadas
npm install [email protected] [email protected]
npm install [email protected]
npm install [email protected]
npm install [email protected]
# Verificar actualización
npm audit
Para aplicaciones Next.js:
# Identificar versión actual
npx next --version
# Actualizar según rama de versión
npm install [email protected] # Para 16.x
npm install [email protected] # Para 15.5.x
npm install [email protected] # Para 15.4.x
npm install [email protected] # Para 15.3.x
npm install [email protected] # Para 15.2.x
npm install [email protected] # Para 15.1.x
npm install [email protected] # Para 15.0.x
# Rebuild aplicación
npm run build
Herramienta de verificación automatizada:
Neurolint-CLI (disponible en GitHub) puede detectar versiones vulnerables y actualizar automáticamente:
npx neurolint-cli check
npx neurolint-cli update --backup
Paso 2: Protección WAF/CDN (Temporal)
Múltiples proveedores han implementado reglas WAF para mitigación temporal:
Cloudflare:
- Regla WAF activada por defecto para todos los clientes
- No requiere acción manual
Vercel:
- Protección a nivel de plataforma para todos los proyectos alojados
- Reglas WAF desplegadas automáticamente
Google Cloud Armor:
- Nueva regla WAF disponible para Application Load Balancers
- Detecta y bloquea intentos de explotación
AWS WAF:
- Regla personalizada disponible en boletín AWS-2025-030
- Incluida en
AWSManagedRulesKnownBadInputsRuleSetv1.24
Regla WAF personalizada AWS (ejemplo):
{
"Name": "ReactJSRCE_CUSTOM",
"Priority": 99,
"Statement": {
"AndStatement": {
"Statements": [
{
"RegexMatchStatement": {
"RegexString": "POST",
"FieldToMatch": {"Method": {}},
"TextTransformations": [{"Priority": 0, "Type": "NONE"}]
}
},
{
"RegexMatchStatement": {
"RegexString": "(?i)(?:next-action|rsc-action-id)",
"FieldToMatch": {
"Headers": {
"MatchPattern": {"All": {}},
"MatchScope": "KEY",
"OversizeHandling": "CONTINUE"
}
},
"TextTransformations": [{"Priority": 0, "Type": "NONE"}]
}
},
{
"RegexMatchStatement": {
"RegexString": "(?i)\"status\"\\s*:\\s*\"resolved_model\"",
"FieldToMatch": {
"Body": {"OversizeHandling": "CONTINUE"}
},
"TextTransformations": [
{"Priority": 0, "Type": "URL_DECODE_UNI"},
{"Priority": 1, "Type": "JS_DECODE"},
{"Priority": 2, "Type": "UTF8_TO_UNICODE"}
]
}
}
]
}
},
"Action": {"Block": {}}
}
ADVERTENCIA: Las protecciones WAF NO son sustitutas del parcheado. Son medidas temporales mientras se completa la actualización.
Paso 3: Detección de Compromiso
Análisis de logs de servidor:
# Buscar solicitudes POST sospechosas con headers RSC
grep -r "next-action\|rsc-action-id" /var/log/nginx/access.log
grep -r "POST.*_next/data" /var/log/apache2/access.log
# Buscar payloads con marcadores de Flight protocol
grep -r '\$@' /var/log/*/access.log
grep -r 'resolved_model' /var/log/*/access.log
Indicadores de Compromiso (IoCs):
Datadog Security Labs mantiene un repositorio actualizado de IPs maliciosas:
https://github.com/DataDog/indicators-of-compromise/tree/main/react-CVE-2025-55182
Escaneo con Tsunami (Google):
Google ha actualizado su escáner Tsunami para detectar CVE-2025-55182:
# Instalar Tsunami
git clone https://github.com/google/tsunami-security-scanner.git
cd tsunami-security-scanner
# Ejecutar escaneo
./tsunami --ip-v4-target=TU_SERVIDOR --scan-results-local-output-format=JSON
Paso 4: Evaluación de Superficie de Ataque
Escaneo de dependencias:
# Detectar paquetes vulnerables en proyecto
npm audit --production
# Análisis profundo con mejor salida
npx better-npm-audit audit
# Verificar toda la cadena de dependencias
npm ls react-server-dom-webpack
npm ls react-server-dom-parcel
npm ls react-server-dom-turbopack
Herramientas de seguridad empresarial:
- Tenable Cloud Security: Escaneo de workloads cloud e imágenes Docker
- Rapid7 InsightVM/Nexpose: Check no autenticado disponible desde 4 de diciembre
- Picus Security: Simulación de explotación con prueba gratuita 14 días
- Datadog Workload Protection: Detección con reglas personalizadas
Contexto de Severidad
Comparación con Log4Shell
React2Shell comparte características preocupantes con Log4Shell (CVE-2021-44228):
| Característica | Log4Shell | React2Shell |
|---|---|---|
| CVSS Score | 10.0 | 10.0 |
| Autenticación requerida | No | No |
| Complejidad de explotación | Baja | Baja |
| Vectores de ataque | Red | Red |
| Alcance en ecosistema | Masivo | Masivo (82% desarrolladores JS usan React) |
| Explotación en configuración default | Sí | Sí |
| PoC público disponible | Sí | Sí |
Por Qué Es Crítico
- Ubicuidad de React: Según State of JavaScript 2024, el 82% de desarrolladores JavaScript usan React
- Explotación trivial: Una sola petición HTTP diseñada logra RCE
- Configuraciones vulnerables por defecto: No requiere errores de codificación del desarrollador
- Superficie de ataque amplia: Afecta incluso aplicaciones que no usan explícitamente Server Functions
- Explotación activa confirmada: APTs estatales comenzaron ataques en horas, no días
Justin Moore (Palo Alto Networks Unit 42):
«Esta falla es una amenaza crítica porque es un exploit de llave maestra, exitoso no al crashear el sistema, sino al abusar de su confianza en las estructuras de datos entrantes. El sistema ejecuta el payload malicioso con la misma fiabilidad que el código legítimo.»
Estrategia de Respuesta para DevOps
Priorización de Parches
Prioridad 1 – CRÍTICO (0-24 horas):
- Aplicaciones Next.js 15-16 con App Router expuestas públicamente
- APIs React 19.x con RSC accesibles desde Internet
- Aplicaciones en producción con tráfico público
Prioridad 2 – ALTA (24-72 horas):
- Aplicaciones internas con RSC
- Entornos de staging/QA
- Aplicaciones con acceso limitado pero con datos sensibles
Prioridad 3 – MEDIA (1 semana):
- Entornos de desarrollo
- Aplicaciones legacy en fase de migración
- Aplicaciones sin RSC pero con React 19.x instalado
Pipeline CI/CD: Integración de Verificaciones
GitHub Actions (ejemplo):
name: React2Shell Vulnerability Check
on: [push, pull_request]
jobs:
security-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '20'
- name: Install dependencies
run: npm ci
- name: Audit for React2Shell
run: |
npm audit --json | jq '.vulnerabilities |
to_entries[] |
select(.value.via[].cve == "CVE-2025-55182")'
- name: Check React version
run: |
REACT_VERSION=$(npm list react --depth=0 --json | jq -r '.dependencies.react.version')
if [[ "$REACT_VERSION" =~ ^19\.(0\.0|1\.[0-1]|2\.0)$ ]]; then
echo "ERROR: Vulnerable React version detected: $REACT_VERSION"
exit 1
fi
- name: Check Next.js version
run: |
if npm list next --depth=0 2>/dev/null; then
NEXT_VERSION=$(npm list next --depth=0 --json | jq -r '.dependencies.next.version')
echo "Next.js version: $NEXT_VERSION"
# Agregar validación de versiones parcheadas
fi
Terraform/IaC: Verificación de imágenes Docker:
resource "docker_image" "app" {
name = "myapp:latest"
# Validación pre-deployment
provisioner "local-exec" {
command = <<EOT
docker run --rm ${self.name} npm audit --json | \
jq '.vulnerabilities | to_entries[] | select(.value.via[].cve == "CVE-2025-55182")' && \
exit 1 || exit 0
EOT
}
}
Comunicación de Crisis
Template para equipos:
ALERTA DE SEGURIDAD CRÍTICA - CVE-2025-55182 (React2Shell)
Severidad: CRÍTICA (CVSS 10.0)
Estado: EXPLOTACIÓN ACTIVA CONFIRMADA
Fecha límite de parcheado: [FECHA - dentro de 24-72h]
ACCIONES REQUERIDAS:
1. Identificar todas las aplicaciones React 19.x y Next.js 14.3+/15-16
2. Actualizar inmediatamente a versiones parcheadas
3. Activar protecciones WAF temporales
4. Revisar logs desde 3 de diciembre para IoCs
5. Reportar status a [RESPONSABLE DE SEGURIDAD]
RECURSOS:
- Guía de actualización: [LINK INTERNO]
- Versiones parcheadas: [TABLA]
- Soporte: [CONTACTO]
- Tracking ticket: [JIRA/TICKET ID]
FAQ: Preguntas Frecuentes
¿Mi aplicación React está afectada si no usa React Server Components?
No. Si tu aplicación React es puramente client-side (renderizada en el navegador sin servidor Node.js), no estás afectado. CVE-2025-55182 solo impacta aplicaciones que implementan React Server Components en el backend.
Para verificar, revisa si tienes imports de paquetes react-server-dom-* o si usas frameworks como Next.js con App Router.
¿Next.js con Pages Router está vulnerable?
No. Solo las versiones de Next.js que usan App Router (introducido en Next.js 13, estable en 14+) están afectadas. El Pages Router tradicional no implementa React Server Components y por lo tanto no es vulnerable a CVE-2025-55182.
Para verificar qué router usas, revisa si tienes un directorio app/ (App Router) o pages/ (Pages Router) en tu proyecto.
¿Debo actualizar aunque no use explícitamente Server Functions?
Sí, absolutamente. El equipo de React confirmó que las aplicaciones son vulnerables incluso si NO implementan endpoints de React Server Functions, siempre que soporten React Server Components. La vulnerabilidad reside en el protocolo Flight subyacente, no en el uso explícito de funciones de servidor.
¿CVE-2025-66478 (Next.js) es diferente de CVE-2025-55182?
No. La National Vulnerability Database (NVD) rechazó CVE-2025-66478 como duplicado de CVE-2025-55182. Aunque inicialmente se le asignó un CVE separado a Next.js, la causa raíz es idéntica en todos los casos: la vulnerabilidad de deserialización en React Server Components. Todas las referencias deben usar CVE-2025-55182.
¿Las protecciones WAF de Cloudflare/Vercel/AWS son suficientes?
No son suficientes por sí solas. Las reglas WAF son una mitigación temporal valiosa que compra tiempo, pero NO reemplazan la actualización del código. Los proveedores enfatizan que debes actualizar a versiones parcheadas inmediatamente.
Razones para no confiar solo en WAF:
- Los atacantes pueden encontrar bypasses de reglas WAF
- Las aplicaciones internas sin WAF quedan desprotegidas
- Los WAF no previenen explotación desde redes internas
¿Existe un PoC público funcional para esta vulnerabilidad?
Sí. Múltiples PoCs están disponibles públicamente:
- PoC oficial de Lachlan Davidson: Publicado el 4 de diciembre en react2shell.com
- PoC de Moritz Sanft: Publicado en GitHub el 4 de diciembre, confirmado funcional contra aplicaciones Next.js por defecto
- Múltiples PoCs no funcionales: Existen también exploits públicos que NO funcionan en escenarios reales (requieren configuraciones específicas)
Amazon confirma que actores de amenazas intentan usar tanto PoCs funcionales como no funcionales, indicando explotación masiva y automatizada.
¿Cómo detecto si mi aplicación ya fue comprometida?
Busca estos indicadores:
1. Análisis de logs HTTP:
# Headers RSC sospechosos
grep -E "(next-action|rsc-action-id)" /var/log/nginx/access.log
# Payloads con marcadores Flight
grep -E '(\$@|resolved_model)' /var/log/apache2/access.log
2. IPs maliciosas conocidas:
- Consulta el repositorio IoC de Datadog en GitHub (actualizado regularmente)
- Busca conexiones desde IPs vinculadas a Earth Lamia y Jackpot Panda
3. Actividad de proceso anómala:
- Procesos hijos inusuales del servidor Node.js/Next.js
- Conexiones de red salientes inesperadas
- Modificaciones de archivos en directorio de aplicación
4. Herramientas de escaneo:
- Tsunami de Google (actualizado con detección CVE-2025-55182)
- Datadog Workload Protection con reglas custom
- Tenable Nessus/InsightVM con checks no autenticados
¿Qué frameworks además de Next.js están afectados?
Cualquier framework que implemente React Server Components puede estar vulnerable:
Confirmados afectados:
- Next.js (App Router, versiones especificadas)
- React Router (vista previa RSC)
- Vite (con plugin RSC oficial)
- Parcel (con plugin RSC)
- RedwoodJS (con SDK RSC)
- Waku
- Expo (en configuraciones específicas con RSC)
Cómo verificar otros frameworks:
# Buscar dependencias RSC en package.json
cat package.json | jq '.dependencies, .devDependencies' | \
grep -E "react-server-dom-(webpack|parcel|turbopack)"
¿Cuál es el plazo realista para parchear en entornos empresariales?
Recomendación oficial de la industria:
- Aplicaciones críticas expuestas públicamente: 0-24 horas
- Aplicaciones de producción: 24-72 horas
- Aplicaciones internas/staging: 1 semana
- Entornos de desarrollo: 2 semanas
Dada la confirmación de explotación activa por APTs estatales y la disponibilidad de PoCs funcionales públicos, se recomienda priorizar el parcheado fuera de los ciclos normales de actualización. CISA y NCSC probablemente emitirán directrices requiriendo parcheado en 14 días o menos para entidades gubernamentales.
¿Las versiones anteriores a React 19 están afectadas?
No. CVE-2025-55182 afecta exclusivamente a React 19.x (versiones 19.0.0, 19.1.0, 19.1.1, 19.2.0). React Server Components fueron introducidos en React 18, pero las versiones vulnerables del protocolo Flight solo existen en React 19.
Si usas React 18 o anterior, no necesitas actualizar por esta vulnerabilidad específica, aunque deberías mantener tus dependencias actualizadas por otras razones de seguridad.
Recursos Adicionales
Avisos Oficiales
- React Team: Security Advisory CVE-2025-55182
- Next.js/Vercel: Security Advisory CVE-2025-66478
- AWS: Security Bulletin AWS-2025-030
- Google Cloud: Responding to CVE-2025-55182
Herramientas de Detección
- react2shell.com: Sitio oficial del investigador con PoC y detalles técnicos
- Neurolint-CLI: Herramienta automatizada de verificación y actualización
- Tsunami Scanner: Escáner actualizado de Google para detección
- Datadog IoCs: GitHub Repository
Análisis de Inteligencia de Amenazas
- Amazon Security: China-nexus threat groups exploit React2Shell
- Palo Alto Networks Unit 42: Critical Vulnerabilities in React and Next.js
- Rapid7: React2Shell Critical RCE
- Tenable: React2Shell FAQ
- Wiz: Critical RCE Vulnerabilities Discovered
Conclusión
CVE-2025-55182 (React2Shell) representa una amenaza de máxima severidad para el ecosistema JavaScript moderno. La combinación de CVSS 10.0, facilidad de explotación, configuraciones vulnerables por defecto, ubicuidad de React/Next.js y explotación activa confirmada por APTs estatales exige una respuesta inmediata.
La ventana entre divulgación pública y explotación se ha reducido a cero horas, eliminando el tiempo de gracia tradicional. Los equipos de desarrollo y operaciones deben tratar esta vulnerabilidad con la misma urgencia que Log4Shell, priorizando el parcheado inmediato sobre ciclos normales de actualización.
Acción prioritaria: Identificar todas las instancias de React 19.x y Next.js 14.3+/15-16 en tu infraestructura y actualizar a versiones parcheadas dentro de 24-72 horas. Las protecciones WAF son valiosas como medida temporal pero no sustituyen el parcheado.
Última actualización: 6 de diciembre de 2025
Fuentes verificadas: React Team, Vercel, AWS, Google Cloud, Wiz, Rapid7, Tenable, Datadog, Palo Alto Networks Unit 42
