Ir al contenido
HostOn
Seguridad

HTTP2Shell (CVE-2026-111497): el fallo crítico del decodificador Brotli y cómo protegerse

HTTP2Shell, el fallo crítico de Brotli: a qué afecta (Node.js, Python, Bun, Envoy, .NET), qué versiones incluyen la corrección y cómo protegerse.

Equipo HostOn7 min de lectura
HTTP2Shell: fallo crítico en el decodificador Brotli (CVE-2026-111497)

En resumen: HTTP2Shell (CVE-2026-111497) es un fallo crítico en el decodificador Brotli, que usan Node.js, Python, Bun, Envoy, .NET y muchos otros programas. Datos comprimidos preparados a propósito pueden corromper la memoria y, en ciertas condiciones, permitir la ejecución remota de código. La corrección ya existe: Node.js 22.23.4, 24.22.1 o 26.12.1 y Brotli 1.0.10, 1.1.1 o 1.2.1. Actualice y después reinicie sus aplicaciones.

¿Qué es HTTP2Shell?

El 21 de octubre de 2026, el proyecto Node.js publicó actualizaciones de seguridad para las versiones 22, 24 y 26. Uno de los problemas corregidos, CVE-2026-111497, no está en Node.js, sino en Brotli, el algoritmo de compresión creado por Google y muy usado en la web como codificación br.

El fallo tiene varios nombres: HTTP2Shell, Node2Shell y Broccoli2Shell. Todos se refieren al mismo error. El nombre «HTTP2Shell» confunde: el fallo no tiene nada que ver con el protocolo HTTP/2. Cualquier programa que descomprima datos Brotli de fuentes no fiables puede verse afectado.

Lo descubrieron Khai Tran y Sylvie Mayer (OpenAI Codex Security). El equipo de Imperva demostró que permite ejecutar código en una versión vulnerable de Node.js.

Cómo funciona el fallo

Los datos Brotli se dividen en bloques, y el decodificador pasa de un bloque a otro según instrucciones del flujo comprimido. Cuando una de esas instrucciones no es válida, el decodificador vulnerable no la trata como un error. La interpreta como una petición de más datos y sigue escribiendo bytes en un búfer de solo 8 bytes, más allá de su límite.

Este tipo de error se llama escritura fuera de límites (out-of-bounds write). Consecuencias posibles, por gravedad:

  • caída del proceso: la aplicación se detiene y el sitio o servicio deja de estar disponible;
  • fugas de memoria: un atacante puede leer datos de la memoria del proceso;
  • ejecución remota de código: un atacante ejecuta sus propios comandos con los permisos de la aplicación.

El atacante no necesita cuenta ni contraseña. Le basta con que la aplicación descomprima sus datos.

¿Qué gravedad tiene?

Las valoraciones varían según la fuente. La entidad que asignó el CVE lo puntúa con 9,2 sobre 10 (crítico) en CVSS 4.0. Node.js lo considera de gravedad alta y Red Hat importante. Lo que se sabe con certeza a 26 de octubre de 2026:

  • existe código de demostración público;
  • se ha demostrado la ejecución de código en Node.js sin parchear, aunque los resultados varían de un sistema a otro;
  • todavía no se han registrado ataques reales y el fallo no está en el catálogo de la CISA de vulnerabilidades explotadas activamente.

Cuando hay código público, los ataques reales suelen llegar pronto. Trate la actualización como urgente.

¿A quién afecta?

La biblioteca Brotli

Son vulnerables las versiones 1.0.3 a 1.2.0. La corrección está en 1.0.10, 1.1.1 y 1.2.1. Las distribuciones Linux suelen aplicar las correcciones sin cambiar el número de versión, así que revise el aviso de seguridad de su distribución, no solo el número.

Programas y lenguajes afectados

ProgramaVersiones corregidas
Node.js22.23.4, 24.22.1, 26.12.1 (18, 20, 23 y 25 ya no reciben correcciones)
Bun1.4.4
Python: Brotli, brotlicffiBrotli 1.2.1, brotlicffi 1.2.1.0
Envoy Proxy1.36.12, 1.37.8, 1.38.6, 1.39.3, 1.40.0
Istio1.29.9, 1.30.6, 1.31.2
Go: andybalholm/brotliv1.2.7
Ruby: brotli gem0.9.1
PHP: brotli extension0.21.1
.NETactualizaciones de Microsoft del 25 de octubre de 2026

PHP también reconstruyó los paquetes oficiales para Windows de las versiones 8.2 a 8.5, porque incluyen la biblioteca Brotli.

Programas con su propia copia de Brotli

Muchos programas incluyen su propia copia del decodificador. No se corrige al actualizar la biblioteca del sistema, sino solo con una nueva versión del programa. Entre los señalados: ClickHouse, DuckDB, Apache Arrow (pyarrow), 7-Zip-zstd, p7zip, FFmpeg a través de libjxl (imágenes JPEG XL) y las herramientas para fuentes WOFF2. Para algunos, el 25 de octubre aún no había una versión oficial corregida.

Cómo puede llegarle un ataque

  • Peticiones que recibe el servidor: un atacante envía una petición con Content-Encoding: br y la aplicación descomprime el contenido automáticamente, por ejemplo con middleware en Express o ASP.NET Core.
  • Respuestas que descarga la aplicación: su aplicación pide una página o una API a otro servidor, que responde con datos Brotli manipulados. fetch() en Node.js y los clientes de Python requests, HTTPX, aiohttp y urllib3 descomprimen automáticamente las respuestas Brotli cuando el soporte está instalado.
  • Archivos subidos: imágenes JPEG XL, archivos Parquet, archivos comprimidos o fuentes WOFF2 con datos Brotli.

El segundo caso es el más fácil de pasar por alto: aunque su servidor nunca reciba datos Brotli, una aplicación que descarga recursos externos está expuesta.

Compruebe si está afectado

Versión de Node.js (en el servidor, en cada contenedor y en cada aplicación de «Setup Node.js App» si usa cPanel):

node -v

Paquetes de Python (en cada entorno virtual):

pip show brotli brotlicffi

Biblioteca del sistema:

# Debian / Ubuntu
dpkg -l | grep -i brotli
# AlmaLinux / Rocky / CloudLinux / RHEL
rpm -qa | grep -i brotli

Procesos que tienen cargada la biblioteca del sistema y deben reiniciarse tras la actualización:

sudo grep -l brotlidec /proc/*/maps 2>/dev/null

Bun:

bun --version

Las imágenes Docker llevan su propia versión de Node.js. Compruebe cada imagen, por ejemplo así (sustituya IMAGE por el nombre de su imagen):

docker run --rm IMAGE node -v

Cómo protegerse

1. Actualice

  • Node.js: pase a 22.23.4, 24.22.1 o 26.12.1 o posterior. Si usa Node.js 18 o 20, lleve la aplicación a 22 o 24, porque esas versiones ya no reciben correcciones.
  • Python: ejecute pip install -U brotli brotlicffi en cada entorno que tenga estos paquetes.
  • Sistema operativo: instale las actualizaciones de seguridad (apt upgrade o dnf upgrade) en cuanto su distribución publique el paquete corregido.
  • Bun, Envoy, Istio, .NET: las versiones de la tabla anterior.
pip install -U brotli brotlicffi

2. Reinicie y reconstruya

Un proceso iniciado antes de la actualización sigue ejecutando el código antiguo. Reinicie las aplicaciones Node.js (por ejemplo con pm2 reload all o desde cPanel), los servicios de Python y cualquier proceso que encuentre el comando anterior. Reconstruya las imágenes Docker sobre una imagen base corregida y compruebe tras el arranque que se ejecuta la versión nueva.

3. Medidas temporales

Si no puede actualizar de inmediato, bloquee las peticiones entrantes comprimidas con Brotli. Los navegadores no envían peticiones comprimidas con Brotli, así que los visitantes normales no lo notarán. Compruebe, eso sí, si alguna integración (API, aplicaciones) envía este tipo de peticiones.

En nginx, dentro del bloque server:

if ($http_content_encoding ~* "br") {
    return 415;
}

En Apache (.htaccess):

RewriteEngine On
RewriteCond %{HTTP:Content-Encoding} br [NC]
RewriteRule ^ - [R=415,L]

Cloudflare publicó el 25 de octubre una regla WAF de emergencia para este fallo, y Azure, Imperva y Vercel tienen reglas similares. En Python puede desinstalar temporalmente los paquetes brotli y brotlicffi; sin ellos, los clientes HTTP dejan de descomprimir datos Brotli.

Consejo: Estas medidas solo protegen los datos que llegan al servidor. No protegen las aplicaciones que descargan recursos de otros sitios. Solo la actualización protege por completo.

4. Vigile las señales de un ataque

  • caídas inesperadas de aplicaciones Node.js o Python (errores como segmentation fault);
  • peticiones con Content-Encoding: br en los registros del servidor web;
  • procesos nuevos o conexiones inusuales iniciados por el usuario de la aplicación.

Recomendaciones según el uso

  • Sitio WordPress o web de empresa en alojamiento web: no tiene que hacer nada. Las bibliotecas del sistema las actualiza el proveedor de alojamiento. Siga manteniendo al día WordPress, el tema y los plugins.
  • Aplicaciones Node.js en cPanel: en «Setup Node.js App» elija Node.js 22 o posterior y reinicie la aplicación.
  • VPS o servidor propio: usted administra el sistema. Haga las comprobaciones anteriores, actualice, reinicie y reconstruya los contenedores.
  • Desarrolladores: actualice Node.js en local y en la CI, reconstruya las imágenes y revise las dependencias que incluyen su propia copia de Brotli.
  • Todos los demás: actualice el navegador y las aplicaciones. Chrome y Firefox ya incluyen la corrección.

Qué hemos hecho en HostOn

En nuestros servidores de alojamiento web, Node.js ya funciona con la versión corregida 22.23.4, también en «Setup Node.js App» de cPanel (desde el plan Pilatus). Las versiones 18 y 20 ya no reciben correcciones, así que pase sus aplicaciones a la 22. Actualizamos los paquetes del sistema en cuanto las distribuciones publican la corrección. Con un VPS usted administra el sistema y debe aplicar los pasos anteriores. ¿Necesita ayuda? Abra un ticket en el área de clientes o escríbanos desde la página de Contacto.

Cronología

  • 21 de octubre de 2026: salen Brotli 1.0.10, 1.1.1 y 1.2.1 y Node.js 22.23.4, 24.22.1 y 26.12.1.
  • 22–23 de octubre: se corrigen los paquetes de Python Brotli y brotlicffi; aparece código de demostración público.
  • 24 de octubre: correcciones para la gema de Ruby y la extensión PHP brotli.
  • 25 de octubre: actualizaciones de Microsoft para .NET y regla WAF de emergencia de Cloudflare.
  • 26 de octubre: PHP ha reconstruido sus paquetes para Windows; no se han registrado ataques reales.

Fuentes: BleepingComputer, Wiz, JFrog Security Research, Phoenix Security, Ubuntu Security, The Hacker News.

SeguridadHTTP2ShellCVE-2026-111497BrotliNode.js

Preguntas frecuentes sobre el tema

HTTP2Shell (CVE-2026-111497), también llamado Node2Shell o Broccoli2Shell, es una escritura fuera de límites en el decodificador Brotli de Google. Datos comprimidos manipulados hacen que el decodificador escriba más allá de un búfer. Esto puede tumbar el proceso, exponer memoria o, en ciertas condiciones, permitir la ejecución remota de código.

No. El nombre confunde: el error está en el decodificador Brotli, no en el protocolo HTTP/2. Cualquier aplicación que descomprima datos Brotli de fuentes no fiables puede verse afectada, sea cual sea el protocolo.

Node.js 22.23.4, 24.22.1 o 26.12.1 o posterior en la misma línea. Las versiones 18, 20, 23 y 25 ya no reciben actualizaciones ni recibirán la corrección; páselas a una línea con soporte.

WordPress no usa directamente el decodificador Brotli. Las bibliotecas del sistema que descomprimen Brotli se actualizan con los paquetes de la distribución. En el alojamiento web de HostOn nos encargamos de esas actualizaciones, así que para un sitio WordPress normal no tiene que hacer nada.

A 26 de octubre de 2026 no se han registrado ataques reales y el fallo no está en el catálogo de la CISA de vulnerabilidades explotadas activamente. Sin embargo, existe código de demostración público e Imperva ha demostrado la ejecución de código en una versión vulnerable de Node.js, así que actualice ya.

No. Bloquear las peticiones con Content-Encoding: br solo protege los datos que llegan al servidor. Si su aplicación descarga recursos de otros sitios, un servidor malicioso puede enviarle una respuesta Brotli. Solo la actualización protege por completo.

Sí. Un proceso iniciado antes de la actualización sigue usando el código antiguo en memoria. Reinicie las aplicaciones Node.js y Python y los servicios que usan la biblioteca Brotli, y reconstruya las imágenes Docker.

Compartir el artículo

¿Preguntas? Escríbanos en su idioma.

Respondemos en el idioma en que nos escribe: alemán, francés, italiano, inglés y dos idiomas más.

DEENFRITESRO

Normalmente respondemos el mismo día laborable

Puestos de trabajo con auriculares y portátiles en una oficina luminosa
  • Ticketrecomendado

    Para todo lo relacionado con su cuenta: hosting, dominios, facturas. Con historial y adjuntos.

    Abrir un ticket
  • Correo

    Para preguntas antes de contratar y presupuestos.

    support@hoston.ch

    Escribir un correo
  • WhatsApp

    Para preguntas cortas. No envíe contraseñas ni datos de clientes.

    Enviar un mensaje

Compruebe primero: ¿hay una incidencia en curso?

status.hoston.ch

Contactar · Servicio de migración · Herramientas