Un fallo en el descompresor de Brotli, el formato de compresión de Google que usan millones de webs, permite corromper la memoria de un programa con un archivo comprimido manipulado y, potencialmente, ejecutar código en él. Lo han bautizado Node2Shell, tiene una gravedad de 9.2 sobre 10 y lo descubrió el equipo de seguridad de OpenAI. Ya hay parches para Node.js, Python, Bun y Envoy, entre otros.
Brotli es uno de los formatos con los que viajan comprimidas las páginas web: cuando el navegador o un programa recibe una respuesta con Content-Encoding: br, la descomprime con la biblioteca de Google. Como es tan común, esa biblioteca va incluida dentro de muchísimos programas: entornos como Node.js y Bun, paquetes de Python o proxies como Envoy. Por eso, un fallo en ella se convierte en un fallo de todos.
Google publicó el 21 de octubre las versiones 1.0.10, 1.1.1 y 1.2.1 de Brotli con la corrección, y ese mismo día Node.js sacó sus actualizaciones de seguridad. En los dos días siguientes llegaron los avisos de Python, Bun y Envoy.
Claves de Node2Shell
- Qué falla: según el aviso de Node.js, cuando el descompresor encontraba un cambio de bloque no válido, en lugar de tratarlo como un error definitivo lo interpretaba como que «faltaban datos», y seguía añadiendo bytes a un búfer interno de solo ocho bytes. Escribir más allá de ese búfer corrompe la memoria que lo rodea (un «out-of-bounds write»).
- Qué puede hacer un atacante: si una aplicación descomprime datos Brotli que él controla, puede bloquearla, leer parte de su memoria o, potencialmente, ejecutar código en ella. No necesita usuario ni contraseña. Le basta con, por ejemplo, ser el servidor al que la aplicación descarga algo, o enviar una petición comprimida a un servidor que la acepte.
- Versiones afectadas: Brotli 1.0.3 a 1.2.0, publicadas a lo largo de varios años. El aviso de GitHub le da un CVSS de 9.2, crítico; Node.js lo clasifica como alto.
- Quién lo encontró: Node.js da las gracias a Khai Tran y Sylvie Mayer, de OpenAI Codex Security, y Envoy, a OpenAI Security Research. Es el último de una serie de fallos graves hallados en los últimos meses con ayuda de la IA.
- Por ahora, sin ataques conocidos: según la evaluación recogida en el registro del CVE, no constaba explotación al publicarse. Pero con el parche público, cualquiera puede ver qué cambió.
Qué actualizar:
- Node.js: 22.23.4, 24.22.1 o 26.12.1, publicadas el 21 de octubre, que corrigen otras nueve vulnerabilidades y dejan de confiar en los certificados intermedios de eMudhra, la autoridad cuyas claves resultaron casi en blanco. Node.js 20 ya no tiene soporte y no recibirá el parche.
- Python: los paquetes
brotli1.2.1 ybrotlicffi1.2.1.0. - Bun: la versión 1.4.4, del 22 de octubre, que incluye correcciones de seguridad que afectan a Brotli, entre otros componentes.
- Envoy: 1.40.0, 1.39.3, 1.38.6, 1.37.8 o 1.36.12.
- Todo lo demás: cualquier programa que incluya su propia copia de Brotli necesita la 1.0.10, la 1.1.1 o la 1.2.1. Ojo con las imágenes de Docker y los ejecutables empaquetados: llevan su propia copia y hay que reconstruirlos, no basta con actualizar el servidor. Si no puedes actualizar de inmediato, desactiva la descompresión Brotli de datos que no sean de confianza.
Una pieza diminuta dentro de todo internet
Node2Shell recuerda a PHP2Shell, el fallo crítico de PHP de hace unos días: componentes que casi nadie mira, porque llevan años funcionando, resultan estar en el centro de millones de servidores. En este caso, un descompresor escrito en C, incluido dentro de herramientas que lo usan sin que sus usuarios lo sepan. Y el problema no se resuelve con un único parche: cada proyecto que incluye su propia copia tiene que actualizarla y publicar una versión nueva, a su ritmo.
Que el hallazgo venga de OpenAI tampoco es casualidad. Las grandes empresas de IA están usando sus modelos para revisar código de código abierto a gran escala, y están encontrando fallos que llevaban años escondidos. Es una buena noticia para la seguridad, pero también significa más avisos críticos en menos tiempo, y más presión para los equipos que tienen que aplicar los parches.
Más fuentes: versiones 1.0.10, 1.1.1 y 1.2.1 de Brotli; aviso de GitHub GHSA-9v8h-qqgm-4m35 (Python); aviso de Envoy; Bun 1.4.4. Portada: logotipos de Brotli, Node.js (OpenJS Foundation), Python (PSF), Bun y Envoy (CNCF).
Fuente: Node.js, «October 2026 Security Releases», 21 de octubre de 2026
