Una vulnerabilidad de seguridad crítica, identificada como CVE-2026-111497, ha surgido en la biblioteca de compresión Brotli de Google. Originalmente destacada como 'Node2Shell' debido a su impacto en Node.js, el fallo es una escritura fuera de límites que ocurre en la función `DecodeBlockTypeAndLength()`. Esta función es responsable de manejar los cambios de bloque, puntos donde un flujo de Brotli cambia el árbol de Huffman que utiliza. En las versiones afectadas (de la 1.0.3 a la 1.2.0), la función devuelve un valor booleano que el decodificador puede malinterpretar como una solicitud de más entrada o una señal de que el flujo está malformado. En la 'ruta rápida' del decodificador, este valor de retorno se descarta, permitiendo que un flujo diseñado a medida fuerce un cambio que falla y posteriormente conduce a una escritura fuera de límites, permitiendo potencialmente que un atacante remoto no autenticado filtre memoria, bloquee un proceso o ejecute código arbitrario.

Un gráfico que representa la vulnerabilidad Brotli Node2Shell y su expansión a HTTP2Shell.
La vulnerabilidad Node2Shell (CVE-2026-111497) afecta a varias bibliotecas y aplicaciones que utilizan compresión HTTP.www.aikido.dev

Esta imagen ilustra la vulnerabilidad central y su impacto ampliado en servicios web y paquetes de Python.

Una demostración animada del exploit RCE de Node2Shell en una compilación de Node.js.
Los investigadores demostraron un exploit de Ejecución Remota de Código (RCE) utilizando datos Brotli diseñados a medida.thehackernews.com

Esta visualización demuestra la explotación práctica de la escritura fuera de límites en la biblioteca Brotli.

El alcance de la vulnerabilidad se ha ampliado significativamente, ya que se ha confirmado que afecta a importantes paquetes de Python y a varios entornos de ejecución de servicios web. Debido a que Brotli es un estándar para la compresión HTTP, muchos clientes HTTP de Python —incluyendo `requests`, `httpx` y `aiohttp`— cargan y utilizan automáticamente los paquetes vulnerables `Brotli` o `brotlicffi` si están presentes en el entorno. Esto significa que una aplicación puede estar expuesta a la vulnerabilidad incluso si no importa explícitamente la biblioteca Brotli en su propio código fuente. La vulnerabilidad es particularmente peligrosa porque puede activarse a través de solicitudes salientes (por ejemplo, un servidor malicioso enviando una respuesta diseñada a un cliente) o solicitudes entrantes (por ejemplo, un cliente enviando un cuerpo de solicitud malicioso a un servidor).

La remediación implica actualizar a las versiones parcheadas de las bibliotecas afectadas. Para Python, los usuarios deben actualizar a la versión 1.2.1 o superior de `Brotli` y a la versión 1.2.1.0 o superior de `brotlicffi`. Otros entornos de ejecución afectados, como Node.js, Bun y Envoy, también han lanzado parches. Para aquellos que no puedan actualizar de inmediato, los expertos en seguridad recomiendan rechazar las solicitudes HTTP entrantes que incluyan `br` en el encabezado `Content-Encoding` a nivel de proxy inverso o equilibrador de carga. Además, eliminar los paquetes Brotli y `brotlicffi` de los entornos de Python puede mitigar el riesgo, ya que la mayoría de los clientes HTTP populares volverán automáticamente a la compresión `gzip` o `deflate`.

Aunque la causa raíz se abordó en el código fuente upstream de Brotli en febrero de 2026, la corrección no se reconoció inicialmente como una vulnerabilidad de seguridad, retrasando el lanzamiento de una versión parcheada hasta octubre. Este retraso significa que cualquier proyecto o imagen de contenedor que incluya la versión anterior de la biblioteca sigue siendo vulnerable hasta que sea reconstruido con los componentes actualizados. Debido a que muchas bases de datos de avisos aún no han mapeado el CVE a paquetes específicos de PyPI, las herramientas automatizadas como `pip-audit` o `Dependabot` pueden no marcar todavía estas versiones como de alto riesgo, lo que requiere comprobaciones manuales de los árboles de dependencias.