
"Una solicitud HTTP especialmente manipulada puede comprometer todo tu servidor." — React Security Team, dic. 2025
Gravedad: CRÍTICA | CVSS v3.1: 10.0 (Máxima) | Estado: Explotado activamente
React2Shell es una vulnerabilidad de seguridad crítica en React Server Components (RSC) — una funcionalidad moderna que permite a React ejecutar partes de tu aplicación web en el servidor en lugar del navegador.
La falla permite que cualquier atacante en internet — sin inicio de sesión, sin acceso especial y sin conocimiento previo de tu sistema — envíe una única solicitud HTTP maliciosa a tu servidor y ejecute cualquier código que desee en él. Eso significa que puede robar datos, instalar malware, bloquear tus archivos con ransomware o tomar el control total de tu servidor.
Piénsalo así: tu servidor tiene una puerta que se suponía que solo se abría para visitantes de confianza, pero resulta que cualquiera puede entrar — solo con llamar de una manera específica.
| Propiedad | Valor |
|---|---|
| ID CVE | CVE-2025-55182 (también llamado React2Shell) |
| Gravedad | Crítica — Ejecución remota de código (RCE) |
| Puntuación CVSS v3.1 | 10.0 / 10.0 (la máxima posible) |
| Puntuación CVSS v4 | 9.3 / 10.0 |
| Tipo de debilidad | CWE-502 — Deserialización de datos no confiables |
| Método de ataque | Una única solicitud HTTP POST, sin autenticación necesaria |
| Descubierto por | Lachlan Davidson (investigador de seguridad) |
| Divulgado | 3 de diciembre de 2025 |
| Estado del exploit | Exploit público disponible — utilizado activamente por atacantes |
| CVE relacionado | CVE-2025-66478 (Next.js — duplicado confirmado) |
react-server-dom-webpack — versions 19.0.0, 19.1.0, 19.1.1, 19.2.0 react-server-dom-parcel — versions 19.0.0, 19.1.0, 19.1.1, 19.2.0 react-server-dom-turbopack — versions 19.0.0, 19.1.0, 19.1.1, 19.2.0
### Frameworks Afectados
| Framework / Herramienta | Alcance Afectado |
|---------------------------|-----------------------------------------------------|
| **Next.js 15.x – 16.x** | Solo App Router — Pages Router **NO** está afectado |
| **React Router RSC** | Solo canal inestable / vista previa |
| **Redwood SDK** | Solo modo RSC |
| **Waku** | Todas las versiones con RSC habilitado |
| **Expo** | Solo builds de vista previa RSC |
| **Vite RSC Plugin** | Todas las integraciones |
| **Parcel RSC Plugin** | Todas las integraciones |
| **Cualquier setup RSC personalizado** | Cualquier servidor que use deserialización de RSC Flight |
> ⚠️ **Importante:** Eres vulnerable incluso si no usas Server Actions o Server Functions explícitamente, siempre que React Server Components estén habilitados en tu aplicación.
> ✅ **No afectados:** Aplicaciones que usan solo el Pages Router, o aplicaciones sin React del lado del servidor en absoluto.
---
## ¿Por Qué Es Tan Peligroso?
Tres razones hacen que React2Shell sea excepcionalmente grave:
1. **No requiere autenticación.** Cualquier persona en internet puede intentar este ataque. No se necesita cuenta, token ni acceso previo.
2. **Funciona en instalaciones predeterminadas.** Una aplicación Next.js recién creada con `create-next-app` — sin configuración personalizada — es explotable de inmediato. Los desarrolladores no tienen que hacer nada mal para ser vulnerables.
3. **Fiabilidad cercana al 100%.** Los investigadores de seguridad confirmaron que el exploit funciona casi siempre contra servidores sin parchear.
---
## ¿Cómo Funciona el Ataque?
### La Causa Raíz — En Lenguaje Sencillo
Cuando tu servidor React recibe datos de un cliente, procesa (deserializa) esos datos para entender qué hacer a continuación. El problema es que React **nunca comprueba si esos datos son seguros o legítimos** — confía ciegamente en lo que llegue.
Un atacante explota esto enviando datos especialmente diseñados que secuestran el comportamiento interno de JavaScript en el servidor, lo que finalmente le permite inyectar y ejecutar su propio código.
### Explicación Técnica
El exploit utiliza una técnica llamada **contaminación de prototipos**:
1. El atacante envía una solicitud HTTP POST manipulada a cualquier endpoint RSC (no se necesita una URL especial).
2. El parser del protocolo React Flight procesa la carga útil sin ninguna validación estructural.
3. La carga útil maliciosa contamina `Object.prototype.then` — un objeto fundamental de JavaScript del que heredan todos los demás objetos.
4. Esto le otorga al atacante acceso al constructor `Function` de JavaScript.
5. El atacante usa el constructor `Function` para ejecutar código arbitrario como proceso del servidor Node.js.```
Step 1 — Attacker sends crafted HTTP POST
↓
Step 2 — React deserializes payload blindly
↓
Step 3 — Object.prototype.then is hijacked (prototype pollution)
↓
Step 4 — Function constructor is accessed
↓
Step 5 — Attacker's code runs on the server
↓
Step 6 — Attacker has full server control
// This is a simplified version of the vulnerable code path inside React function parseFlightRequest(req) { const flight = req.body;
// ❌ NO validation — the server trusts whatever arrives
const decoded = dangerousDeserialize(flight); // Attack happens here
// If the attacker controls decoded.action → RCE
return executeServerReference(decoded.action);
}
### Cómo se ve el ataque```http
POST /?flight=1 HTTP/1.1
Content-Type: text/plain
{
"status": "resolved_model",
"$1:__proto__:then": "node:process.mainModule.require('child_process').execSync('id > /tmp/rce')",
"_formData.get": "$1:constructor:constructor"
}
The input chunk appears to be empty. No content was provided for translation. Please re-send the chunk text.```bash
curl -X POST https://target.com/react?flight=1
-H "Content-Type: text/plain"
--data '["$ACTION_REF","proto","constructor","<attacker_payload>"]'
> 🚫 **Aviso legal:** No uses esto contra ningún sistema que no sea tuyo o para el que no tengas autorización escrita explícita.
---
## Versiones corregidas — Parchea ahora
### Paquetes React RSC
| Paquete | Versión parcheada |
|------------------------------|------------------------------|
| `react-server-dom-webpack` | 19.0.1, 19.1.2, **19.2.1+** |
| `react-server-dom-parcel` | 19.0.1, 19.1.2, **19.2.1+** |
| `react-server-dom-turbopack` | 19.0.1, 19.1.2, **19.2.1+** |
> 💡 **Recomendación:** Actualiza a **19.2.3** para corregir también vulnerabilidades relacionadas posteriores (CVE-2025-55183, CVE-2025-55184, CVE-2025-67779).
### Next.js
| Tu versión | Actualiza a |
|------------|-------------|
| 13.x / 14.x | **14.2.35** |
| 15.0.x | **15.0.5** |
| 15.1.x | **15.1.9** |
| 15.2.x | **15.2.6** |
| 15.3.x | **15.3.6** |
| 15.4.x | **15.4.8** |
| 15.5.x | **15.5.7** |
| 16.0.x | **16.0.7** |
---
## Cómo protegerte — Paso a paso
Sigue estos pasos **en orden**. Los pasos 1 y 2 son obligatorios. El resto añade capas adicionales de defensa.
### Paso 1 — Actualiza los paquetes de React (lo más importante)```bash
# Check your current version
npm list react-server-dom-webpack
# Upgrade to the latest patched version
npm install react-server-dom-webpack@latest
npm install react-server-dom-parcel@latest
npm install react-server-dom-turbopack@latest
npm install next@X
### Paso 3 — Añadir protección WAF (defensa en profundidad)
| Proveedor de nube | Acción requerida |
|-------------------------|--------------------------------------------------------------------------------------------|
| **AWS WAF** | Habilite `AWSManagedRulesKnownBadInputsRuleSet` v1.24+ — las reglas de React2Shell están incluidas |
| **AWS Network Firewall**| Habilite las reglas administradas de Active Threat Defense (actualizadas automáticamente mediante MadPot) |
| **Google Cloud Armor** | Implemente el conjunto de reglas de React2Shell desde la consola |
| **Cloudflare** | Regla WAF `react2shell-cve-2025-55182` — aplicada automáticamente para planes Pro+ |
> ⚠️ **Las reglas WAF por sí solas no son suficientes.** No pueden bloquear todas las variantes de payload. Actualizar sus paquetes es la única solución completa.
### Paso 4 — Si no puede aplicar el parche de inmediato
- **Deshabilite temporalmente los endpoints RSC Flight** en su servidor.
- Esto reduce su superficie de ataque hasta que pueda aplicar el parche.
### Paso 5 — Compruebe si ya fue atacado
- **Audite los registros de su servidor** en busca de solicitudes POST sospechosas a endpoints RSC/flight anteriores a la fecha del parche.
- Busque conexiones salientes inusuales, cuentas de usuario nuevas o procesos inesperados.
### Paso 6 — Medidas preventivas ante una posible brecha
- **Rote todos los secretos** — claves API, credenciales de bases de datos, tokens de sesión, variables de entorno.
- Trate cualquier servidor que haya ejecutado una versión vulnerable como potencialmente comprometido.
---
## Actividad de ataques en el mundo real
### Escala (a abril de 2026)
| Métrica | Cifra |
|-----------------------------|-------------------------------------|
| Sesiones de ataque totales | **más de 8,1 millones** (GreyNoise) |
| Volumen diario de ataques | **300 000 – 400 000** solicitudes/día |
| Volumen máximo diario | **más de 430 000** (finales de diciembre de 2025) |
| IPs de atacantes únicas | **8 163** en 101 países |
| Tiempo hasta la primera infección | **2 minutos** tras exponer el servidor |
AWS por sí solo representa más de un tercio de la infraestructura de atacantes observada — lo que significa que los atacantes operan en gran medida desde servidores alojados en la nube para llevar a cabo estos ataques a escala.
### ¿Quién está atacando?
Se ha confirmado que múltiples grupos de actores de amenazas distintos explotan esta vulnerabilidad:
**Conexión con China (respaldado por el Estado)**
- **Earth Lamia** (también rastreado como UNC5454 por Google) — vinculado al Ministerio de Seguridad del Estado de China (MSS)
- **Jackpot Panda** — identificado por los equipos de inteligencia de amenazas de AWS y Google
- También lleva a cabo en paralelo la explotación de otras vulnerabilidades recientes
**Conexión con Irán**
- Actores afiliados a Irán observados por Google GTIG en diciembre de 2025
**Corea del Norte (RPDC)** ⚠️ *Nuevo — enero de 2026*
- Indicadores vinculados a la campaña **Contagious Interview** (una operación de larga duración de la RPDC dirigida a desarrolladores de software)
- Implementan **EtherRAT**, un nuevo backdoor que utiliza **infraestructura de comando y control basada en blockchain**, lo que dificulta mucho su bloqueo con el bloqueo estándar de IP/dominio
**Ciberdelincuentes / motivados económicamente**
- Operadores de ransomware confirmados usando React2Shell para acceso inicial ⚠️ *Nuevo — diciembre de 2026*
- Al menos un caso documentado en el que se implementó ransomware **en menos de un minuto** tras la explotación inicial
- Minería de criptomonedas (XMRig) ampliamente implementada en campañas oportunistas
### Malware observado en la naturaleza
| Malware / Herramienta | Qué hace | Quién lo usa |
|------------------------------------|---------------------------------|---------------------------------------|
| SNOWLIGHT | Descarga más malware | Earth Lamia (China) |
| MINOCAT | Crea túneles ocultos | Earth Lamia (China) |
| HISONIC | Backdoor para persistencia | Earth Lamia (China) |
| COMPOOD | Sobrevive a reinicios | Earth Lamia (China) |
| **EtherRAT** ⚠️ *Nuevo* | Backdoor con C2 basado en blockchain | RPDC / Contagious Interview |
| XMRig | Minera criptomonedas | Múltiples grupos |
| Cobalt Strike | Framework de control remoto | Campañas "emerald" y "nuts" |
| Sliver / Nezha | Frameworks de C2 | Campaña "emerald" |
| Fast Reverse Proxy (FRP) | Tunelización de red | Múltiples grupos |
| Secret-Hunter | Roba credenciales | Campaña "nuts" |
| Botnets Mirai / Rondo | DDoS / persistencia | Actores oportunistas |
| MeshAgent (herramienta RMM) | Administración remota | Múltiples grupos (persistencia) |
| **Web shell en memoria para Next.js** ⚠️ *Nuevo* | Persistencia sigilosa | Múltiples actores (confirmado por GTIG) |
> 💡 **¿Qué es un web shell en memoria?** Es un backdoor que se ejecuta enteramente en la memoria del servidor — sin dejar archivos en el disco, lo que hace que sea extremadamente difícil de detectar con antivirus estándar o herramientas de escaneo de archivos.
> 💡 **¿Qué es C2 basado en blockchain?** En lugar de conectarse a servidores de atacantes mediante direcciones IP o dominios normales (que pueden bloquearse), EtherRAT recibe sus comandos de transacciones de blockchain — un sistema descentralizado que no puede ser fácilmente derribado ni bloqueado.
---
## Herramientas de detección
### Microsoft Defender for Cloud
Hay dos plantillas dedicadas disponibles en la galería del explorador de seguridad:
- *Contenedores expuestos a Internet que ejecutan imágenes de contenedor vulnerables a React2Shell — CVE-2025-55182*
- *Máquinas virtuales expuestas a Internet vulnerables a React2Shell — CVE-2025-55182*
Microsoft Security Exposure Management también mapea automáticamente las rutas de ataque de React2Shell a través de su infraestructura en la nube.
### GreyNoise
Hay una plantilla de bloqueo lista para usar disponible: **React Server Components Unsafe Deserialization CVE-2025-55182 RCE Attempt**
Los conjuntos de datos completos de huellas de atacantes (ASN, JA4T, JA4H) están disponibles públicamente:```
github.com/GreyNoise-Intelligence/gn-research-supplemental-data/tree/main/2026-01-06-react2shell
Use Runtime Vulnerability Analytics — filtre por CVE-2025-55182 para identificar paquetes React o Next.js vulnerables en su entorno.
Tras la divulgación, se distribuyeron en línea aproximadamente 145 herramientas de exploit falsas y no funcionales — muchas generadas por IA. Riesgos de usar herramientas no verificadas:
Utilice únicamente escáneres de fuentes verificadas y de confianza de la comunidad.
Nov 29, 2025 Lachlan Davidson privately reports the vulnerability to Meta / React team
Dec 03, 2025 Patched packages published to npm CVE-2025-55182 publicly disclosed Vercel deploys runtime-level protections (not just WAF) Cloudflare WAF rules activated Mass automated scanning begins within hours of disclosure
Dec 04, 2025 First working public exploit released by Moritz Sanft Default create-next-app confirmed exploitable with no changes
Dec 05, 2025 Discoverer Lachlan Davidson releases his own PoC (~30 hours post-disclosure) Active exploitation observed in Datadog and Rapid7 honeypots Darktrace honeypot infected in 2 minutes after deployment
Dec 05–08 "emerald" and "nuts" malware campaigns deploy Cobalt Strike, Sliver, Nezha, FRP, Secret-Hunter; Mirai and Rondo botnets also active 362 unique attacker IPs observed; 152 with identifiable payloads
Dec 08, 2025 Rapid7 confirms exploitation using the public PoC
Dec 11, 2025 Follow-on CVEs disclosed: CVE-2025-55183 and CVE-2025-55184
Dec 12, 2025 Google GTIG identifies China-nexus threat clusters Iran-nexus activity also flagged
Dec 15, 2025 Microsoft confirms hundreds of compromised machines Coin miners and backdoors (SNOWLIGHT, HISONIC) deployed at scale Microsoft Defender for Cloud templates published
Dec 17, 2025 ⚠️ [NEW] Ransomware operators confirmed using React2Shell for initial access — malware deployed in under one minute post-exploitation (Reported by BleepingComputer, based on S-RM and Microsoft Defender)
Dec 29, 2025 AWS formally attributes activity to Earth Lamia and Jackpot Panda AWS Network Firewall Active Threat Defense rules updated
Jan 06, 2026 GreyNoise publishes full attacker fingerprint dataset (8.1M+ attack sessions recorded)
Jan 13, 2026 ⚠️ [NEW] IronGate Security identifies DPRK (North Korea) exploitation Indicators linked to Contagious Interview campaign EtherRAT (blockchain C2 backdoor) deployed post-exploitation Attacker staging involves downloading Node.js runtime before payload
Jan 26, 2026 Additional DoS vulnerability CVE-2026-23864 disclosed and patched
Mar 04, 2026 Dynatrace advisory updated with latest remediation guidance
## Referencias
| Fuente | Enlace |
|---------------------------------|-----------------------------------------------------------------------------------------------|
| Aviso oficial de React | https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components |
| React2Shell (Descubridor) | https://react2shell.com |
| Aviso de Next.js | https://nextjs.org/blog/CVE-2025-66478 |
| Análisis en profundidad de Wiz | https://www.wiz.io/blog/critical-vulnerability-in-react-cve-2025-55182 |
| Blog de seguridad de Microsoft | https://www.microsoft.com/en-us/security/blog/2025/12/15/defending-against-the-cve-2025-55182-react2shell-vulnerability-in-react-server-components/ |
| Inteligencia de amenazas de Google | https://cloud.google.com/blog/topics/threat-intelligence/threat-actors-exploit-react2shell-cve-2025-55182 |
| Boletín de seguridad de AWS | https://aws.amazon.com/security/security-bulletins/AWS-2025-030/ |
| Atribución de AWS China-Nexus | https://aws.amazon.com/blogs/security/china-nexus-cyber-threat-groups-rapidly-exploit-react2shell-vulnerability-cve-2025-55182/ |
| Palo Alto Unit 42 | https://unit42.paloaltonetworks.com/cve-2025-55182-react-and-cve-2025-66478-next/ |
| Investigación de Trend Micro | https://www.trendmicro.com/en_us/research/25/l/CVE-2025-55182-analysis-poc-itw.html |
| Cuadrícula de observación de GreyNoise | https://www.greynoise.io/blog/cve-2025-55182-react2shell-opportunistic-exploitation-in-the-wild-what-the-greynoise-observation-grid-is-seeing-so-far |
| Análisis de Darktrace | https://www.darktrace.com/blog/react2shell-how-opportunist-attackers-exploited-cve-2025-55182-within-hours |
| Aviso de Dynatrace | https://www.dynatrace.com/news/blog/cve-2025-55182-react2shell-critical-vulnerability-what-it-is-and-what-to-do/ |
| BleepingComputer — Ransomware | https://www.bleepingcomputer.com/news/security/critical-react2shell-flaw-exploited-in-ransomware-attacks/ |
| IronGate — Actividad de la RPDC | https://www.irongatesecurity.com/ironintel/react2shell-cve-2025-55182 |
| Entrada de NVD | https://nvd.nist.gov/vuln/detail/CVE-2025-55182 |
---
**Crédito de la vulnerabilidad:**
Descubrimiento original y divulgación responsable por **Lachlan Davidson** (29 de noviembre de 2025).
---
*Última actualización: 16 de abril de 2026*
*Este documento tiene fines exclusivamente educativos y de seguridad defensiva.*
| CVE ID | Description | Severity | Status |
|---|
| CVE-2025-55182 | Ejecución remota de código en RSC: esta vulnerabilidad | 10.0 | Parcheada |
| CVE-2025-66478 | RCE aguas abajo en Next.js (duplicado confirmado) | 10.0 | Rechazado — duplicado |
| CVE-2025-55183 | Exposición de código fuente a través de RSC | 5.3 | Parcheada en 19.2.2+ |
| CVE-2025-55184 | Denegación de servicio mediante bucle infinito en el analizador RSC | 7.5 | Parcheada en 19.2.2+ |
| CVE-2025-67779 | DoS: corrección incompleta para CVE-2025-55184 | 7.5 | Parcheada en 19.2.3+ |
| CVE-2026-23864 | Denegación de servicio adicional en RSC (enero de 2026) | 7.5 | Parcheada |