Ilustración del fallo HTTP2Shell en el decodificador Brotli

HTTP2Shell: el fallo de Brotli alcanza a .NET, ClickHouse y Apache Arrow

HTTP2Shell (CVE-2026-111497), el fallo crítico del decodificador Brotli de Google que obligó a parchear Node.js la semana pasada, alcanza a muchos más programas de lo que parecía: .NET, ClickHouse, Apache Arrow, DuckDB, 7-Zip y otros proyectos incluyen su propia copia de la biblioteca y necesitan su propia corrección. Actualizar el paquete Brotli del sistema no basta para protegerlos, y la CISA estadounidense ya ha añadido la vulnerabilidad a su catálogo de fallos explotados.

Las claves de HTTP2Shell, el fallo crítico de Brotli, en 30 segundos

  • Es una escritura fuera de límites en el decodificador Brotli, versiones 1.0.3 a 1.2.0, corregida en 1.0.10, 1.1.1 y 1.2.1.
  • Puede provocar caídas, fugas de memoria y, en algunos casos, ejecución remota de código.
  • Microsoft publicó parches de emergencia para .NET 8, 9, 10 y 11 RC el 25 de octubre.
  • ClickHouse, Apache Arrow y otros proyectos con copia propia de Brotli seguían sin versión corregida publicada a 25 de octubre.

El fallo, también llamado Node2Shell o Broccoli2Shell, se publicó el 22 de octubre, después de que Google y Node.js distribuyeran las correcciones el día 21. Según BleepingComputer, un flujo Brotli manipulado provoca un cambio de bloque no válido que el decodificador interpreta como falta temporal de datos en lugar de como error de formato, y sigue escribiendo bytes en un búfer interno de ocho bytes más allá de sus límites. GitHub le asigna una puntuación de 9,2 sobre 10 en CVSS 4.0. Su nombre alude al tráfico HTTP, aunque no depende de HTTP/2: basta con que una aplicación descomprima datos Brotli no fiables.

Por qué no basta con actualizar Brotli

El problema de fondo es que muchos proyectos no usan la biblioteca del sistema, sino una copia propia integrada en su código. El rastreador de Phoenix Security y el análisis de Brandefense detallan el estado de varios de ellos:

  • .NET: incluía Brotli 1.1.0 en el runtime. Microsoft publicó el 25 de octubre las versiones 8.0.33, 9.0.22, 10.0.14 y 11 RC3. .NET Framework no está afectado.
  • ClickHouse: usa su propia copia; la corrección se fusionó en la rama principal el 25 de octubre, pero la última versión publicada era anterior.
  • Apache Arrow: incluye Brotli 1.0.9 para los Parquet comprimidos; a 25 de octubre la corrección estaba aprobada pero sin fusionar.
  • Otros: DuckDB, 7-Zip-zstd, p7zip, EDK II, woff2 y libjxl aparecían también como afectados o corregidos solo en su rama de desarrollo.

Blog elhacker.NET incluye además FFmpeg entre los afectados por el procesamiento de medios; los rastreadores consultados no detallaban aún su estado. Ya hay versiones corregidas en Node.js (22.23.4, 24.22.1 y 26.12.1), Bun 1.4.4, los paquetes de Python Brotli 1.2.1 y brotlicffi 1.2.1.0, la gema de Ruby 0.9.1, la extensión de PHP 0.21.1 y Envoy.

Explotación y cómo localizar copias vulnerables

Hay pruebas de concepto públicas desde el 22 de octubre. Según Phoenix Security, la de acceso público solo logra ejecución de código en compilaciones debilitadas y provoca caídas en las normales, mientras que Imperva afirma haber conseguido ejecución remota en una imagen estándar de Node.js tras varios intentos. La CISA añadió el fallo a su catálogo KEV el 27 de octubre, con plazo hasta el 10 de noviembre para las agencias federales estadounidenses. Los vectores de ataque son dos: una respuesta HTTP comprimida maliciosa que descarga una aplicación cliente, o una petición comprimida enviada directamente a un servidor que la descomprime.

Los analistas recomiendan buscar en el código fuente, incluidos los submódulos, archivos decode.h de Brotli que no contengan la constante que introduce la corrección:

grep -rL 'BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH' --include=decode.h .

En sistemas, conviene comprobar los paquetes (dpkg -l, rpm -q brotli, pip show brotli brotlicffi) y recordar que las copias enlazadas de forma estática o empaquetadas en binarios no aparecen en estas búsquedas. Mientras se aplican los parches, la medida provisional es desactivar la descompresión Brotli de datos no fiables y mantener gzip o deflate, o bloquear en el proxy las peticiones con Content-Encoding: br, aunque esto no protege a las aplicaciones que descargan respuestas maliciosas. Opensecurity ya analizó otro caso reciente de fallo crítico en una pieza básica de la web con PHP2Shell y la auditoría alemana de 2024.

Preguntas frecuentes

¿Qué es HTTP2Shell?

Es la vulnerabilidad CVE-2026-111497, una escritura fuera de límites en el decodificador Brotli de Google que puede causar caídas, fugas de memoria y ejecución remota de código.

¿Qué versiones de Brotli corrigen el fallo?

Las versiones 1.0.10, 1.1.1 y 1.2.1, publicadas el 21 de octubre de 2026. Están afectadas de la 1.0.3 a la 1.2.0.

¿Basta con actualizar la biblioteca Brotli del sistema?

No. Programas como .NET, ClickHouse o Apache Arrow incluyen su propia copia y necesitan su propia actualización.

¿Se está explotando HTTP2Shell?

Hay pruebas de concepto públicas y la CISA la añadió a su catálogo de vulnerabilidades explotadas el 27 de octubre.

Fuentes:

Scroll al inicio