Síntesis

Una falla en el decodificador de Brotli, conocida como Node2Shell o Broccoli2Shell, afecta a Node.js, Python, .NET y muchos otros programas que incluyen esta librería. Un atacante puede enviar datos comprimidos maliciosos para corromper la memoria y, en algunos casos, tomar el control del proceso.

  • La falla tiene puntaje 9,2 de 10 y existe en Brotli desde la versión 1.0.3, de 2018.
  • La corrección estaba en el código de Brotli desde febrero de este año, pero no se publicó hasta octubre.
  • Investigadores lograron ejecutar código en versiones oficiales de Node.js.
  • CISA en los Estados Unidos incluyó la falla en su lista de catálogo de vulnerabilidades explotadas.

Noticia

Brotli es una librería de Google que comprime y descomprime datos, muy usada para reducir el tamaño del contenido web. Esta vulnerabilidad identificada como CVE-2026-111497 afecta a su decodificador en las versiones 1.0.3 a 1.2.0 y recibió un puntaje de 9,2 sobre 10.

El error se produce cuando un flujo comprimido solicita un cambio de bloque que no es posible. En las versiones vulnerables, el decodificador interpreta esa situación como una falta de datos y sigue agregando bytes a un espacio interno de solo ocho bytes, hasta sobrepasarlo y dañar la memoria.

Según el aviso de Node.js (entorno ampliamente utilizado para ejecutar aplicaciones y servidores web escritos en JavaScript), un atacante puede corromper la memoria del proceso, “lo que puede provocar una caída, la divulgación de memoria del proceso o la ejecución remota de código”. La falla fue reportada por el equipo Codex Security de OpenAI.

Node.js publicó el 21 de octubre las versiones corregidas 22.23.4, 24.22.1 y 26.12.1, y Google lanzó Brotli 1.0.10, 1.1.1 y 1.2.1. Sin embargo, la corrección ya estaba en el código de Brotli desde febrero, sin que se supiera entonces que resolvía una vulnerabilidad.

El riesgo va más allá de Node.js, cuya función fetch() descomprime automáticamente las respuestas en Brotli. También están afectados los paquetes Brotli y brotlicffi de Python, además de Bun, Envoy y algunos firewalls de Palo Alto Networks con la inspección de Brotli activada.

Microsoft lanzó el 25 de octubre parches de emergencia para .NET, Visual Studio y PowerShell, y calificó la falla como una elevación de privilegios con explotación “más probable”. La empresa precisó que “la descompresión Brotli no está habilitada por defecto en una instalación estándar de .NET o ASP.NET Core”.

El ataque funciona en ambas direcciones. Un cliente malicioso puede atacar a un servidor que descomprime solicitudes, y un servidor malicioso puede atacar a una aplicación que descargue contenido comprimido de él, como al generar vistas previas de enlaces.

La empresa Imperva logró ejecutar código en la imagen oficial de Node.js 24.22.0 para Linux arm64, y la firma ELLIO lo repitió en servidores x86-64. El 26 de octubre, ELLIO detectó un intento real de ataque desde una dirección vinculada a campañas de explotación masiva, y al día siguiente la empresa Previdian registró otro, desde una dirección en los Estados Unidos.

Según ELLIO, el exploit usado en ese primer ataque estaba defectuoso y no logró tomar el control en sus pruebas. Aun así, advirtió que los intentos fallidos pueden hacer caer el proceso atacado, lo que permite usarlos para interrumpir servicios.

El 27 de octubre, la Agencia de Ciberseguridad y Seguridad de Infraestructura de los Estados Unidos (CISA) agregó la falla a su catálogo de vulnerabilidades explotadas (KEV) e indicó que “este tipo de vulnerabilidades es un vector de ataque frecuente para ciberactores maliciosos”.

Los especialistas recomiendan que, quienes no puedan actualizar de inmediato, bloqueen las solicitudes comprimidas con Brotli en el proxy o firewall, o desactiven la descompresión. Tras parchar, hay que reiniciar los procesos y reconstruir los contenedores. Además, según un rastreador público de la falla, algunas aplicaciones que traen su propia copia de la librería, como DuckDB o Apache Arrow, aún no tienen corrección.