Jueves, 5 de noviembre de 2026
Ciberseguridad

CISA alerta de la explotación activa de Node2Shell, el fallo crítico de Brotli en Node.js

La CISA confirma explotación activa de CVE-2026-111497 (Node2Shell) en el decodificador Brotli de Node.js. Parches disponibles para las ramas 22, 24 y 26; agencias federales deben remediar antes del 10 de noviembre.

Persona trabajando con código en un ordenador portátil
Desarrollo de software. Foto: Unsplash License.

La Agencia de Ciberseguridad y Seguridad de Infraestructuras de Estados Unidos (CISA) ha confirmado que el fallo crítico conocido como Node2Shell, o CVE-2026-111497, está siendo explotado activamente. El problema radica en el decodificador de la librería de compresión Brotli que Node.js incluye de serie y permite a un atacante sin autenticación corromper la memoria de un proceso, filtrar datos o, en el peor de los casos, ejecutar código arbitrario de forma remota.

El aviso de la CISA llega el 27 de octubre de 2026, seis días después de que el proyecto Node.js publicara los parches. Las agencias federales civiles estadounidenses tienen de plazo hasta el 10 de noviembre para remediar el fallo en sus activos expuestos a internet. Para el resto de organizaciones —incluidas las españolas y europeas que dependen de Node.js en servidores, contenedores o funciones serverless— el mensaje es el mismo: actualizar ya.

Qué es exactamente Node2Shell y por qué importa

Node2Shell es el nombre que los investigadores de Imperva dieron a una escritura fuera de límites (out-of-bounds write) en el decodificador C de Brotli. Brotli es el algoritmo de compresión sin pérdida creado por Google y ampliamente utilizado en la web para reducir el tamaño de las respuestas HTTP. Node.js lo incorpora de forma nativa a través del módulo node:zlib.

El fallo afecta a las versiones de Brotli comprendidas entre la 1.0.3 y la 1.2.0. Según el aviso oficial de Node.js del 21 de octubre, un cambio de bloque inválido se interpretaba como una petición temporal de más datos en lugar de un error de formato permanente. El decodificador en streaming seguía escribiendo bytes en un búfer interno de solo ocho bytes, provocando corrupción de memoria.

Un atacante que consiga que una aplicación Node.js descomprima datos Brotli controlados por él —ya sea en el cuerpo de una petición HTTP o en la respuesta de un servidor remoto— puede provocar un fallo del proceso, una fuga de memoria o la ejecución de código. Node.js califica la vulnerabilidad como de gravedad alta y afirma explícitamente que permite ejecución remota de código. Google, como CNA de la librería Brotli, le asigna una puntuación CVSS 4.0 de 9.2 (crítica).

Pantalla de ordenador mostrando código fuente con colores
Cualquier aplicación que descomprima datos Brotli no confiables puede verse afectada. Foto: Markus Spiske / Pexels.

Versiones afectadas y parches disponibles

El proyecto Node.js publicó el 21 de octubre de 2026 las versiones corregidas:

  • Node.js 26.x → 26.12.1 o posterior
  • Node.js 24.x → 24.22.1 o posterior
  • Node.js 22.x → 22.23.4 o posterior

Las líneas en fin de vida —20.x, 23.x, 25.x y anteriores— no recibirán parche. Cualquier instalación en esas ramas debe migrar a una línea con soporte (preferiblemente la LTS 24.x) o considerarse vulnerable de forma permanente.

El problema no se limita a Node.js. La misma librería Brotli se encuentra empaquetada en:

  • Bun (parches a partir de la 1.4.4)
  • Paquetes de Python Brotli (1.2.1) y brotlicffi (1.2.1.0)
  • Runtimes de .NET, Visual Studio y PowerShell (Microsoft publicó actualizaciones de emergencia el 25 de octubre)
  • La librería Brotli del sistema en muchas distribuciones Linux (versiones corregidas: 1.0.10, 1.1.1 y 1.2.1)

Un detalle importante para la detección: Node.js incorporó el arreglo sin cambiar la cadena de versión de Brotli embebida. Por tanto, process.versions.brotli sigue mostrando 1.2.0 tanto en builds vulnerables como en builds parcheados. La forma fiable de comprobar si se está protegido es ejecutar node --version y contrastar con las versiones listadas arriba.

Explotación activa confirmada por la CISA

El 27 de octubre la CISA añadió CVE-2026-111497 a su catálogo de Vulnerabilidades Explotadas Conocidas (Known Exploited Vulnerabilities, KEV). En la alerta oficial la describe como una vulnerabilidad de valor de retorno no comprobado en Google Brotli que permite a un atacante remoto no autenticado corromper el estado adyacente del decodificador, revelar contenido de memoria, provocar denegación de servicio o, potencialmente, ejecutar código arbitrario mediante un flujo Brotli especialmente construido.

La CISA no ha publicado detalles sobre los objetivos o los actores, y marca como desconocido si se ha usado en campañas de ransomware. Sí establece que las agencias federales civiles deben remediar el fallo antes del 10 de noviembre de 2026, de acuerdo con la Binding Operational Directive 26-04.

De forma independiente, operadores de honeypots y firmas de inteligencia de amenazas han registrado intentos de explotación. ELLIO documentó tráfico dirigido a Node.js 24.22.0 el 26 de octubre. Imperva había demostrado ya el 22 de octubre ejecución de código sobre la imagen oficial de Node.js 24.22.0 para Linux arm64, tanto a través de respuestas consumidas por fetch() como mediante cuerpos de petición procesados por Express 5 o body-parser 2.

Logotipo de la Agencia de Ciberseguridad y Seguridad de Infraestructuras de EE. UU. (CISA)
La CISA añadió el fallo a su catálogo KEV el 27 de octubre. Imagen de dominio público.

Qué cambia para desarrolladores y equipos en España y la UE

Aunque la directiva de la CISA solo obliga a las agencias federales estadounidenses, el catálogo KEV es una referencia de priorización utilizada por organizaciones de todo el mundo, incluidos equipos de seguridad en España y el resto de la Unión Europea. Cualquier servicio expuesto a internet que descomprima datos Brotli controlados por el atacante está en riesgo.

Casos típicos de exposición:

  • APIs o servidores web Node.js que aceptan cuerpos de petición comprimidos con Brotli (por ejemplo, a través de Express con body-parser o middleware similar).
  • Aplicaciones que realizan peticiones salientes con fetch() o librerías HTTP y descomprimen automáticamente las respuestas.
  • Contenedores e imágenes Docker basadas en versiones de Node.js anteriores a los parches.
  • Funciones serverless o entornos de ejecución que empaquetan una versión vulnerable del runtime.

El simple hecho de servir respuestas comprimidas con Brotli a los clientes no activa el decodificador vulnerable. El riesgo aparece cuando el propio proceso Node.js descomprime datos que no controla.

En el contexto europeo, la Ley de Ciberresiliencia (Cyber Resilience Act) y las obligaciones de notificación de incidentes hacen que un compromiso de este tipo tenga consecuencias regulatorias además de técnicas. Mantener runtimes actualizados forma parte del ciclo de vida seguro que el reglamento exige a los productos con elementos digitales.

Qué hacer ahora

El único remedio completo es actualizar. No existen workarounds oficiales.

  1. Inventariar todas las instalaciones de Node.js (servidores, contenedores, CI/CD, máquinas de desarrollo, imágenes base).
  2. Ejecutar node --version en cada una. Actualizar a 22.23.4, 24.22.1 o 26.12.1 según la rama.
  3. Reconstruir y redesplegar las imágenes de contenedor que arrastran un runtime vulnerable.
  4. Revisar dependencias de Python, Bun y .NET que empaquetan Brotli y aplicar los parches correspondientes.
  5. Priorizar los servicios expuestos a internet que aceptan o solicitan datos comprimidos con Brotli.

Quienes permanezcan en Node.js 20 o anteriores deben planificar la migración a una línea con soporte. Esas ramas no recibirán el arreglo.

El descubrimiento original se atribuye a Khai Tran y Sylvie Mayer, del equipo de OpenAI Codex Security, durante trabajos de red teaming. El proyecto Node.js lo corrigió y publicó el aviso el mismo 21 de octubre junto con otras nueve vulnerabilidades de menor gravedad.

La ventana entre la publicación del parche y la confirmación de explotación activa ha sido corta —apenas una semana—. Es el patrón habitual cuando existe un proof-of-concept público y la superficie de ataque es amplia. En este caso, cualquier aplicación que descomprima datos no confiables con el Brotli de Node.js es un objetivo potencial.

Para las organizaciones españolas y europeas el calendario práctico es el mismo que el de la CISA: cuanto antes se aplique el parche, menor es la probabilidad de que un intento de explotación tenga éxito. El 10 de noviembre es la fecha límite formal para las agencias federales estadounidenses; para el resto, es simplemente la fecha a partir de la cual cualquier retraso es más difícil de justificar.

Publicidad

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Bitzeta es un espacio digital dedicado a explorar la intersección entre tecnología, cultura y sociedad. Aquí encontrarás análisis profundos, noticias relevantes y reflexiones innovadoras sobre el mundo digital y más allá. Nuestro objetivo es informar, inspirar y fomentar el debate sobre los temas que están moldeando el futuro. Únete a nosotros en este viaje de descubrimiento y aprendizaje.