Node2Shell (CVE-2026-111497): la falla de Brotli en Node.js y cómo proteger sus aplicaciones

Vulnerabilidades
25 Oct 2026, 4:56 p.m. Por Juan Carlos Hernandez 💬 0
Node2Shell (CVE-2026-111497): la falla de Brotli en Node.js y cómo proteger sus aplicaciones
Actualizado el 25 de octubre de 2026: ya hay una prueba de concepto pública. Si sus aplicaciones corren en Node.js 22, 24 o 26, actualice.

Node2Shell es el nombre de CVE-2026-111497, una falla de severidad alta en el decodificador Brotli que trae Node.js. Datos comprimidos maliciosos pueden escribir fuera de la memoria reservada y llegar a ejecutar código en el servidor. La solución es actualizar a Node.js 22.23.4, 24.22.1 o 26.12.1, publicadas el 21 de octubre de 2026.

Anatomía del ataque descrito en el artículo.

Anatomía del ataque descrito en el artículo.

¿Qué es Node2Shell?

Es una escritura fuera de límites en el decodificador Brotli incluido en Node.js: una entrada comprimida mal formada hace que el decodificador escriba más allá del final de un búfer de memoria. La falla está en la librería Brotli (versiones 1.0.3 a 1.2.0), corregida en Brotli 1.0.10, 1.1.1 y 1.2.1, así que también puede afectar a otro software que la incluya. Node.js la clasifica como de severidad alta y la corrigió dentro de su actualización de seguridad del 21 de octubre. La reportaron investigadores de OpenAI Codex Security.

¿Qué aplicaciones Node.js están expuestas a CVE-2026-111497?

No toda aplicación en Node.js: un servidor HTTP de Node.js no descomprime Brotli por sí solo. Está expuesta la que descomprime datos Brotli que controla un atacante, por dos caminos:

Peticiones entrantes: Express 5 y body-parser 2 descomprimen cuerpos con Content-Encoding: br cuando sus parsers están configurados; cualquier cliente puede enviar ese cuerpo.
Respuestas que la aplicación descarga: fetch() de Node.js descomprime solo una respuesta Brotli. Un servidor externo malicioso o comprometido (webhooks, URLs que pone el usuario, integraciones) puede enviarla.
Código propio o librerías que pasan datos no confiables a brotliDecompress o createBrotliDecompress de node:zlib.
Bun anterior a 1.4.4 también trae el decodificador afectado.

¿Qué versiones de Node.js corrigen Node2Shell?

Node.js 26 → actualice a 26.12.1 o posterior.
Node.js 24 → actualice a 24.22.1 o posterior.
Node.js 22 → actualice a 22.23.4 o posterior.
Node.js 25, 23, 20 y anteriores: fuera de soporte y sin corrección: hay que migrar a 22, 24 o 26.
Contenedores: reconstruya las imágenes sobre una base corregida; el Node.js que va dentro de la imagen no se actualiza con el sistema.

¿Se está explotando Node2Shell?

Al 22 de octubre no se había reportado explotación real, pero desde ese día hay una prueba de concepto pública. Imperva reprodujo la ejecución de código en Node.js 24.22.0 por los dos caminos (Express y fetch), aunque no en todos los intentos, y la versión 24.22.1 rechaza la misma entrada. Otros análisis indican que, en compilaciones estándar, la prueba logra sobre todo tumbar el proceso y leer una parte limitada de la memoria. Con código público, la ventana para parchear se acorta.

¿Qué debe hacer hoy su empresa?

1. Inventario: node --version en servidores y en los agentes de CI, y docker run --rm <imagen> node --version en cada imagen; un inventario de paquetes no ve el Node.js que viene dentro de una imagen.
2. Actualización: pase a 22.23.4, 24.22.1 o 26.12.1, reconstruya las imágenes y vuelva a desplegar.
3. Dónde entra Brotli: npm ls express body-parser para ver si usa Express 5 o body-parser 2, busque brotliDecompress y createBrotliDecompress en el código, y liste las llamadas fetch() a servidores que usted no controla.
4. Mientras actualiza: rechace en el proxy, balanceador o WAF las peticiones con Content-Encoding: br en las rutas que no lo necesitan (casi ningún cliente legítimo envía cuerpos en Brotli).
5. Señales: trate las caídas inesperadas del proceso de Node.js y los errores del decodificador como pistas para investigar, cruzándolos con la versión y el origen de los datos.

¿Cómo protege Rescue WAF mientras actualiza Node.js?

Un firewall de aplicaciones web no corrige Node.js, pero reduce la exposición del camino más directo, las peticiones entrantes. En Rescue WAF se configura por sitio, como parche virtual:

Bloqueo de cuerpos con Content-Encoding: br en las rutas de sus aplicaciones Node.js que no los necesitan, primero en modo observación para no afectar a nadie.
Límite de tamaño del cuerpo de las peticiones y límite de peticiones por IP.
Reputación de IP con CrowdSec para cortar a quienes ya están escaneando.
Registro de cada intento, que llega a Rescue SOC como incidente.

El límite es claro: el WAF ve lo que entra, no las respuestas que su aplicación descarga con fetch() desde otros servidores. Ese camino solo lo cierra la actualización de Node.js.

¿Qué aporta Rescue SOC frente a Node2Shell?

Inventario de vulnerabilidades: los agentes reportan el software de cada servidor para ubicar los que tienen un Node.js afectado y priorizar los expuestos a internet.
Detección: alertas cuando el proceso de Node.js lanza comandos o shells, aparecen archivos nuevos en las carpetas de la aplicación o hay conexiones salientes inusuales.
Correlación con Rescue WAF: un intento bloqueado en el WAF y actividad extraña en el mismo servidor se vuelven un caso prioritario.
Respuesta con analistas: se valida la alerta, se contiene el equipo y se documenta cada acción.

Conozca Rescue SOC. Si sospecha que un servidor ya fue comprometido, active nuestra respuesta ante incidentes 24/7; después de actualizar, un pentest confirma que la corrección quedó aplicada. Esta semana también se publicó PHP2Shell, la falla crítica de PHP: si usa ambos lenguajes, revise los dos.

Preguntas frecuentes sobre Node2Shell

¿Qué es Node2Shell?

Es el nombre de CVE-2026-111497, una falla de severidad alta en el decodificador Brotli que trae Node.js: datos comprimidos maliciosos escriben fuera de la memoria reservada y pueden llegar a ejecutar código. Se corrigió el 21 de octubre de 2026.

¿Mi aplicación Node.js es vulnerable a CVE-2026-111497?

Solo si descomprime datos Brotli que controla un atacante: cuerpos de petición con Content-Encoding: br (por ejemplo con Express 5 o body-parser 2), respuestas que descarga con fetch() de servidores que no controla, o código que use brotliDecompress con datos no confiables. Un servidor HTTP de Node.js sin eso no se ve afectado.

¿A qué versión de Node.js debo actualizar?

A 22.23.4, 24.22.1 o 26.12.1, o posteriores en cada rama. Node.js 20, 23 y 25 están fuera de soporte y no recibirán corrección.

¿Next.js o Express son vulnerables?

La falla está en Node.js, no en el framework. Express 5 y body-parser 2 abren el camino de las peticiones con Brotli; cualquier aplicación que use fetch() hacia servidores externos abre el de las respuestas. En todos los casos la solución es actualizar Node.js.

¿Basta con un WAF para protegerse de Node2Shell?

No. Un WAF puede bloquear las peticiones con Content-Encoding: br, pero no ve las respuestas que su aplicación descarga con fetch(). Hay que actualizar Node.js.

¿Se está explotando?

Al 22 de octubre de 2026 no se había reportado explotación real, pero hay una prueba de concepto pública desde ese día.

Fuentes

  1. Aikido Security. Node2Shell: Node.js Brotli RCE (CVE-2026-111497). 2026 https://www.aikido.dev/blog/node2shell-nodejs-brotli-rce-cve-2026-111497
  2. Imperva. Node2Shell: From Brotli Data to Remote Code Execution. 2026 https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/
  3. Vercel. Node.js security advisory: Brotli decoder RCE (CVE-2026-111497). 2026 https://vercel.com/kb/bulletin/node-js-security-advisory
  4. SOC Prime. CVE-2026-111497: Node.js Brotli Decoder Flaw Enables Remote Code Execution. 2026 https://socprime.com/blog/cve-2026-111497-node-js-brotli-decoder-flaw-enables-remote-code-execution/
Controles y monitoreo que cortan el ataque.

Controles y monitoreo que cortan el ataque.

¿Tiene aplicaciones Node.js expuestas a internet?

Le ayudamos a inventariarlas, aplicar el parche virtual en Rescue WAF y vigilarlas con Rescue SOC mientras actualiza.

Hablar con un especialista

También te puede interesar

Comentarios (0)

Sé el primero en comentar.