Producto(s) afectado(s):
| Producto | Versiones afectadas |
| Node.js | 22.x anteriores a 22.23.4, 24.x anteriores a 24.22.1 y 26.x anteriores a 26.12.1 |
| Google Brotli | Desde 1.0.3 hasta 1.2.0 |
| Bun | Anteriores a 1.4.4 |
| Brotli (paquete PyPI) | 1.2.0 y anteriores |
| brotlicffi (paquete PyPI) | 1.2.0.2 y anteriores |
Las ramas de Node.js sin soporte (EoL) también se consideran afectadas.
Descripción
Se ha publicado una vulnerabilidad de escritura fuera de límites (out-of-bounds write) en Node.js, conocida como Node2Shell e identificada como CVE-2026-111497 (CVSSv4 9.2 – CRÍTICO). Un atacante remoto sin autenticación puede enviar datos comprimidos con Brotli especialmente diseñados y corromper la memoria del proceso, lo que puede provocar una denegación de servicio, la divulgación de memoria o la ejecución remota de código. La falla se puede alcanzar a través de fetch(), de los cuerpos de solicitud procesados por Express 5 con body-parser 2.x y de node:zlib. Está corregida en Node.js 22.23.4, 24.22.1 y 26.12.1.
El origen de la vulnerabilidad está en el decodificador de Google Brotli (c/dec/decode.c), que Node.js incluye en su código. Cuando un flujo comprimido solicita un cambio de bloque inválido, la función DecodeBlockTypeAndLength() devuelve un valor que la ruta rápida de decodificación no verifica (CWE-252, valor de retorno no verificado). El decodificador sigue procesando con un estado interno corrupto y escribe fuera de los límites de su búfer (CWE-787, escritura fuera de límites). Están afectadas las versiones de Brotli desde 1.0.3 hasta 1.2.0, corregidas en 1.0.10, 1.1.1 y 1.2.1, publicadas el 21/10/2026.
Como el código vulnerable está en la librería de Brotli, también afecta a Bun, corregido en la versión 1.4.4, y a los paquetes de Python Brotli y brotlicffi de PyPI, corregidos en 1.2.1 y 1.2.1.0. Los paquetes de Python se actualizaron sin mencionar la vulnerabilidad en sus notas de versión, por lo que los escáneres de dependencias pueden no detectarlos como vulnerables. La vulnerabilidad fue divulgada por Imperva. A la fecha de este boletín, no se ha reportado explotación activa.
Mitigación
Si no es posible actualizar de inmediato, OpenSourceMalware indica dos alternativas temporales hasta aplicar la actualización en entornos Python:
- Desinstalar los paquetes
Brotliybrotlicffi. Sin ellos, los clientes HTTP comourllib3(y por lo tantorequests),httpx,aiohttpy Scrapy pasan a usar gzip/deflate. - Quitar
brdel encabezadoAccept-Encodingen las solicitudes salientes y rechazarContent-Encoding: bren las solicitudes entrantes.
Solución
La solución consiste en actualizar Node.js, Bun y los paquetes de Python a las versiones corregidas, y en actualizar Brotli en cualquier software que incluya la librería.
| Producto | Versión corregida |
| Node.js 22.x | 22.23.4 |
| Node.js 24.x | 24.22.1 |
| Node.js 26.x | 26.12.1 |
| Google Brotli | 1.0.10, 1.1.1 o 1.2.1 |
| Bun | 1.4.4 o posterior |
| Brotli (paquete PyPI) | 1.2.1 |
| brotlicffi (paquete PyPI) | 1.2.1.0 |
En entornos Python:
pip install -U "Brotli>=1.2.1" "brotlicffi>=1.2.1.0"
Se recomienda revisar a mano las dependencias transitivas, ya que los escáneres pueden no marcar estos paquetes, y reconstruir los contenedores e imágenes que incluyan versiones vulnerables. Se deben priorizar los servicios que descomprimen contenido Brotli de fuentes no confiables.
Versiones de Node.js:
https://nodejs.org/en/blog/vulnerability/october-2026-security-releases
Versiones de Google Brotli:
https://github.com/google/brotli/releases
Bun 1.4.4:
https://bun.com/blog/bun-v1.4.4
Información adicional:
- Node.js — Security Releases de octubre de 2026:
https://nodejs.org/en/blog/vulnerability/october-2026-security-releases - CVE.org — CVE-2026-111497:
https://www.cve.org/CVERecord?id=CVE-2026-111497 - OSV — CVE-2026-111497:
https://osv.dev/vulnerability/CVE-2026-111497 - Google Brotli — releases 1.0.10, 1.1.1 y 1.2.1:
https://github.com/google/brotli/releases - Bun — advisory GHSA-663w-cv8g-jj2p:
https://github.com/oven-sh/bun/security/advisories/GHSA-663w-cv8g-jj2p - OpenSourceMalware — Node2Shell en paquetes de Python:
https://opensourcemalware.com/blog/node2shell-affects-python - Aikido Security — aviso sobre Node2Shell en Python:
https://x.com/AikidoSecurity/status/2113733621064593679