CISA añadió CVE-2026-111497 a su catálogo de Vulnerabilidades Explotadas Conocidas (KEV) el 27 de octubre de 2026, basándose en indicios de explotación activa. La vulnerabilidad afecta al decodificador Brotli incluido en Node.js. Las versiones corregidas son 22.23.4, 24.22.1 y 26.12.1, para sus respectivas ramas.
Qué implica la inclusión en KEV
La entrada de la CVE en KEV convierte la actualización en una prioridad para los equipos que ejecutan Node.js. El catálogo recoge vulnerabilidades para las que CISA tiene constancia de explotación activa; la fecha de incorporación es el 27 de octubre.
Node.js clasifica el impacto como alto. El proyecto advierte de que una entrada Brotli malformada puede bloquear el proceso, exponer memoria del proceso o, potencialmente, permitir la ejecución remota de código (RCE). El riesgo requiere que datos Brotli controlados por un atacante lleguen a un decodificador vulnerable.
Cómo puede llegar el contenido malicioso al decodificador
CVE-2026-111497 es una escritura fuera de límites en el decodificador Brotli de Node.js. El fallo aparece cuando el decodificador interpreta un cambio de bloque inválido como una petición de más datos y sigue añadiendo bytes a un búfer interno de ocho bytes.
La exposición depende de la ruta de descompresión, no de que una aplicación comprima datos con Brotli. Una llamada directa a node:zlib puede procesar datos no confiables, pero también hay rutas indirectas: fetch() integrado en Node.js descomprime respuestas Brotli y Express 5 con body-parser puede descomprimir cuerpos de solicitudes si está configurado para ello. Un servidor HTTP básico recibe una solicitud sin descomprimir por sí solo su cuerpo Brotli.
Versiones de Node.js que corrigen el fallo
El proyecto Node.js publicó estas versiones corregidas para las ramas compatibles:
| Rama de Node.js | Versión corregida |
| 22.x | 22.23.4 |
| 24.x | 24.22.1 |
| 26.x | 26.12.1 |
Node.js considera afectadas las versiones que ya han llegado al fin de vida cuando publica una actualización de seguridad. Para las ramas compatibles, la versión de la tabla indica qué build instalar.
Qué mostró la prueba de Imperva
Imperva informó de ejecución de código en pruebas con la imagen oficial de Node.js 24.22.0 para Linux arm64. El equipo probó respuestas procesadas mediante fetch() y cuerpos de solicitudes gestionados por Express 5 y body-parser; necesitó varios intentos para obtener el resultado. Imperva también indicó que las mismas entradas fueron rechazadas en Node.js 24.22.1.
Ese resultado corresponde a las rutas y la configuración probadas por Imperva. Los equipos pueden usarlo para entender que la decodificación de respuestas o solicitudes puede abrir una ruta de exposición, sin asumir que cualquier aplicación o instalación producirá el mismo resultado.
Localizar las rutas y desplegar la actualización
La revisión debe abarcar tanto las llamadas explícitas como los componentes que descomprimen datos de forma automática. Conviene comprobar node:zlib, el uso de fetch(), la configuración de middleware y las reglas de proxy, además de identificar los runtimes dentro de contenedores y aplicaciones autocontenidas.
Para corregir Node.js, actualiza el runtime y renueva los artefactos que incluyan su propia copia. En la práctica, el despliegue consiste en actualizar las dependencias y sus archivos de bloqueo, reconstruir las imágenes o aplicaciones empaquetadas, desplegar la nueva versión, reiniciar los servicios y comprobar qué build está ejecutándose.
Mientras se prepara la actualización, bloquear cuerpos Brotli entrantes o desactivar la inflación en el middleware puede reducir la exposición de esas rutas de entrada. No protege a un cliente vulnerable que descomprime una respuesta Brotli controlada por un atacante. Quitar br de Accept-Encoding tampoco basta por sí solo: un servidor puede enviar una respuesta Brotli de todos modos.