Para quién es esto: desarrolladores y operadores que ejecutan servicios web, API, rastreadores o tareas por lotes con Node.js, Bun, Python o .NET. Este artículo se basa en información pública del proyecto Brotli de Google, Node.js, Microsoft, PyPI, JPCERT/CC y fuentes del Gobierno de EE. UU. No trata pasos de ataque ni código de exploit.
En desarrollo: esta página se actualizará conforme se publique más información
A las 23:00 UTC del 26 de octubre de 2026Aún no se sabe
- Si se está explotando (ninguna fuente primaria lo informa)
- La evaluación propia de NVD (pendiente de análisis)
- La lista completa de productos afectados
- Algunas distribuciones Linux (versiones antiguas aún sin evaluar)
Google publicó las correcciones el 21 de octubre (hora de EE. UU.), Node.js el mismo día y Microsoft el 25 de octubre (hora de EE. UU.). JPCERT/CC emitió una alerta el 26 de octubre. El catálogo KEV de CISA no incluye el fallo. Más proveedores siguen publicando correcciones, así que esta página se actualizará a medida que lo hagan.
Qué hacer hoy
Compruebe si descomprime datos Brotli del exterior
Por ejemplo, un servidor web que descomprime peticiones enviadas con Content-Encoding: br, un cliente HTTP que descomprime automáticamente respuestas de sitios externos y código que descomprime archivos subidos por los usuarios. Si se da alguno de estos casos, trátelo como urgente (opinión de este sitio).
Compruebe las versiones de sus runtimes y paquetes
Use los comandos de «Cómo comprobar si está afectado», más abajo, para comprobar Node.js, Bun, los paquetes de Python y el runtime y el SDK de .NET.
Actualice a una versión corregida
Actualice como mínimo a las versiones de «Versiones corregidas», más abajo. Las compilaciones oficiales de nodejs.org de Node.js 20.x y anteriores están fuera de soporte y no reciben corrección, así que pase a 22.x o posterior. Para Node.js instalado desde paquetes de Ubuntu o Debian, siga el aviso de seguridad de la distribución.
Reconstruya, vuelva a desplegar y reinicie
Reconstruya con las versiones corregidas las imágenes de contenedor, los ejecutables creados con bun build --compile y las aplicaciones .NET autocontenidas o NativeAOT, y vuelva a desplegarlos. Reinicie también los procesos en ejecución: un proceso antiguo mantiene cargada la biblioteca antigua.
Busque indicios de compromiso
JPCERT/CC pide a los usuarios que, además de aplicar las correcciones, comprueben si ha habido un compromiso. Busque un aumento de caídas, procesos hijo desconocidos o conexiones salientes en los procesos que descomprimen datos del exterior (sugerencia de este sitio).
Corrija las versiones fijadas en archivos de bloqueo e imágenes base
Si package-lock.json, requirements.txt, poetry.lock o la línea FROM de un Dockerfile fija una versión antigua, la siguiente compilación la recuperará. Cambie las versiones fijadas a versiones corregidas.
Versiones corregidas
| Qué usa | Afectado | Corregido en | Fuente |
|---|---|---|---|
| Brotli (biblioteca C) | 1.0.3–1.0.9, 1.1.0, 1.2.0 | 1.0.10, 1.1.1, 1.2.1 | |
| Node.js 22.x | anterior a 22.23.4 | 22.23.4 | Node.js |
| Node.js 24.x | anterior a 24.22.1 | 24.22.1 | Node.js |
| Node.js 26.x | anterior a 26.12.1 | 26.12.1 | Node.js |
| Node.js 20.x y anteriores (compilaciones oficiales de nodejs.org) | fin de soporte | ninguna (pase a 22.x o posterior) | Node.js |
| Bun | de 1.0.21 hasta antes de 1.4.4 | 1.4.4 | Bun |
| brotli de PyPI | de 1.0.3 hasta antes de 1.2.1 | 1.2.1 | GitHub Advisory Database |
| brotlicffi de PyPI | de 1.0.3 hasta antes de 1.2.1.0 | 1.2.1.0 | GitHub Advisory Database |
| .NET 8 | anterior a 8.0.33 | runtime 8.0.33 (SDK 8.0.133, 8.0.427) | Microsoft |
| .NET 9 | anterior a 9.0.22 | runtime 9.0.22 (SDK 9.0.123, 9.0.320) | Microsoft |
| .NET 10 | anterior a 10.0.14 | runtime 10.0.14 (SDK 10.0.114, 10.0.403) | Microsoft |
| Envoy | v1.39.2, v1.38.5, v1.37.7, v1.36.11 | v1.40.0, v1.39.3, v1.38.6, v1.37.8, v1.36.12 | Envoy |
| Compilaciones de PHP para Windows | 8.5.12, 8.4.27, 8.3.36, 8.2.35 antes de la recompilación | 8.5.12-1, 8.4.27-1, 8.3.36-1, 8.2.35-1 | PHP |
.NET Framework no está afectado (Microsoft). También hay corrección para las versiones preliminares de .NET 11 (11.0.0-rc.3.26522.148). Según Envoy, solo están afectados los despliegues que tienen configurado el descompresor de Brotli.
Las distribuciones Linux suelen aplicar la corrección mediante backport sin cambiar el número de versión original. Por ejemplo, brotli de Ubuntu 22.04 está corregido en «1.0.9-2ubuntu0.1», que sigue diciendo 1.0.9. Para los paquetes del sistema operativo, guíese por el aviso de seguridad de su distribución, no solo por el número de versión.
Según el equipo de PHP, las compilaciones de PHP para Windows están expuestas a través de la extensión cURL cuando está habilitada la descompresión automática de respuestas HTTP (está desactivada de forma predeterminada en cURL, pero las aplicaciones y las bibliotecas de cliente HTTP pueden activarla). Las compilaciones corregidas llevan el sufijo «-1»; la versión de PHP en sí no cambia.
Biblioteca del sistema operativo (libbrotli)
Se corrige con las actualizaciones del sistema. Reinicie los procesos que la usan
Incluida en un runtime (Node.js, Bun, .NET)
Actualice el propio runtime
Paquetes de lenguaje (brotli, brotlicffi)
Actualice en cada entorno virtual
Lo que usted compiló (contenedores, ejecutables)
Reconstruya con versiones corregidas y vuelva a desplegar
Cómo comprobar si está afectado
Estos comandos solo comprueban versiones en sus propios sistemas.
Node.js
Ejecute node -v. Las versiones anteriores a 22.23.4, 24.22.1 o 26.12.1 están afectadas. node -p process.versions.brotli muestra la versión de Brotli incluida, pero según cómo se aplique la corrección ese número puede no cambiar, así que decida por la versión de Node.js en sí (opinión de este sitio). Para Docker, compruébelo dentro de la imagen, por ejemplo con docker run --rm --entrypoint node <image> -v. Node.js instalado desde paquetes de Ubuntu o Debian usa la libbrotli del sistema, así que compruébelo como se describe en «Bibliotecas del sistema operativo», más abajo.
Bun
Ejecute bun --version. Las versiones anteriores a 1.4.4 están afectadas. Los ejecutables creados con bun build --compile incluyen el Bun con el que se compilaron y siguen afectados hasta que se reconstruyan (aviso de Bun).
Python
Ejecute pip show brotli brotlicffi (o busque Brotli y brotlicffi en python -m pip list). Están afectados brotli anterior a 1.2.1 y brotlicffi anterior a 1.2.1.0. Si no está instalado ninguno de los dos, no hay ningún paquete de Python que corregir para este fallo. Cada entorno virtual y cada contenedor tiene su propia copia, así que compruebe cada uno. Si proviene de un paquete del sistema operativo como python3-brotli, guíese por el aviso de seguridad de su distribución, no por el número de versión.
.NET
Ejecute dotnet --list-runtimes y dotnet --list-sdks. Microsoft afirma que está expuesto si habilitó Brotli en la descompresión de peticiones de ASP.NET Core o en la descompresión automática de respuestas de HttpClient, o si llama directamente a BrotliStream o BrotliDecoder. Ninguna de las dos opciones automáticas está activada de forma predeterminada.
Bibliotecas del sistema operativo
Compruebe la versión instalada con dpkg -l 'libbrotli*' en Debian y Ubuntu, rpm -qa 'brotli*' 'libbrotli*' en sistemas basados en RHEL o apk list --installed 'brotli*' en Alpine, y compárela con el aviso de seguridad de su distribución. Debian corrigió Debian 12 en 1.0.9-2+deb12u1 (DLA-4855-1) y Debian 13 en 1.1.0-2+deb13u1 (DSA-6582-1).
Qué se ha divulgado
- CVE
- CVE-2026-111497 (aviso de GitHub GHSA-9v8h-qqgm-4m35)
- Tipo
- Escritura fuera de límites (CWE-787) y valor de retorno no comprobado (CWE-252) en el decodificador de Brotli (c/dec/decode.c)
- Gravedad
- CVSS v4.0 9,2 (Google). Vector de ataque de red, sin autenticación, sin interacción del usuario, con requisitos de ataque (AT:P). Microsoft califica el problema de .NET con 8,1 según CVSS v3.1
- Impacto
- Descomprimir un flujo Brotli manipulado puede corromper la memoria adyacente, revelar contenido de la memoria, causar denegación de servicio o, potencialmente, permitir la ejecución de código arbitrario (descripción de Google en NVD). Para .NET, Microsoft afirma que podría provocar revelación de información, denegación de servicio o elevación de privilegios (no menciona ejecución de código)
- Afectado
- Brotli 1.0.3–1.0.9, 1.1.0 y 1.2.0, y los productos que lo incluyen
- Corregido
- Brotli 1.0.10, 1.1.1, 1.2.1 (21 de octubre de 2026, hora de EE. UU.)
- Solución alternativa
- Google no ofrece ninguna (JPCERT/CC). Microsoft indica que se evite descomprimir datos Brotli controlados por un atacante hasta poder actualizar
Según Node.js, el decodificador trataba un cambio de bloque no válido en datos malformados como una necesidad temporal de más entrada en lugar de como un error de formato, por lo que seguía escribiendo más allá del final de un búfer interno de ocho bytes. En Node.js están afectadas las aplicaciones que descomprimen con node:zlib datos Brotli proporcionados por un atacante. Node.js califica el problema como High (alto). Las mismas versiones corrigen otras nueve vulnerabilidades.
Según el aviso de Bun, fetch de Bun descomprime automáticamente las respuestas Brotli de forma predeterminada, así que el servidor al que se conecta una aplicación, o un atacante situado en la ruta de una conexión sin cifrar, puede suministrar los datos.
Una actualización del sistema operativo por sí sola puede no corregirlo
Brotli se incluye como copia dentro de muchos programas, como Node.js, Bun, los paquetes Brotli de Python, .NET y Envoy. JPCERT/CC pide a los usuarios cuyas aplicaciones descomprimen datos Brotli que consulten la información más reciente de cada proveedor sobre el impacto y el estado de las correcciones. Microsoft también afirma que actualizar el runtime compartido no corrige las aplicaciones NativeAOT; hay que volver a publicarlas.
Estado de la explotación y de la prueba de concepto
A la mañana del 27 de octubre (hora de Japón), Google, Node.js, Microsoft y JPCERT/CC no informan de explotación en la práctica. El catálogo KEV de CISA (versión del 26 de octubre) no incluye el fallo. La evaluación SSVC de CISA añadida a NVD el 23 de octubre califica la explotación como ninguna, la automatizabilidad como no y el impacto técnico como total. El CVSS de Microsoft califica la madurez del código de explotación como no probada.
Las fuentes primarias no mencionan una prueba de concepto pública. Un sitio explicativo independiente afirma que se publicó una el 22 de octubre: en compilaciones estándar solo provoca una caída y una lectura limitada de memoria, mientras que en una compilación debilitada deliberadamente llega a la ejecución de código. El mismo sitio afirma que el equipo de investigación de una empresa de seguridad logró ejecutar código en una imagen oficial de Node.js sin publicar el método. Este sitio no ha verificado nada de esto y no lo enlaza.
Ubuntu califica el problema con prioridad Medium (media), mientras que Google le asigna 9,2. Qué importa más en su caso depende de si descomprime datos recibidos del exterior (opinión de este sitio).
Sobre las principales bibliotecas HTTP de Python
A 27 de octubre, requests, urllib3, httpx y aiohttp no han publicado avisos sobre este fallo (este sitio revisó la lista de avisos de seguridad de cada repositorio). urllib3, httpx y aiohttp tratan brotli o brotlicffi como extras opcionales y solo descomprimen Brotli cuando uno de ellos está instalado. Los paquetes que hay que corregir son brotli y brotlicffi en el mismo entorno. Actualizar solo la biblioteca HTTP no sirve si brotli sigue siendo antiguo.
Lo que aún no se sabe
| Elemento | Estado |
|---|---|
| Explotación en la práctica | Sin informes de fuentes primarias. No está en KEV |
| Prueba de concepto pública | No mencionada por fuentes primarias. Un sitio independiente afirma que existe (sin verificar) |
| Evaluación de NVD | Pendiente de análisis (solo el 9,2 de Google) |
| Lista completa de productos afectados | Sigue creciendo. Para navegadores y otros productos, consulte el aviso de cada proveedor |
| Distribuciones Linux | Ubuntu 20.04 y anteriores aún sin evaluar |
Fuentes
Todas consultadas el 27 de octubre de 2026.
- JPCERT/CC, alerta sobre la escritura fuera de límites de Brotli (CVE-2026-111497) (JPCERT-AT-2026-0034, 26 de octubre de 2026, en japonés) — jpcert.or.jp
- PHP, «Updated PHP Windows builds for Brotli security fix» (26 de octubre de 2026) — php.net
- Versiones de Google Brotli v1.2.1, v1.1.1, v1.0.10 (21 de octubre de 2026) — v1.2.1 / v1.1.1 / v1.0.10
- Node.js, «Node.js Security Releases» (21 de octubre de 2026) — nodejs.org
- Microsoft, «Microsoft Security Advisory CVE-2026-111497 | .NET Brotli Decoder Out-of-bounds Write Vulnerability» (25 de octubre de 2026) — github.com/dotnet
- GitHub Advisory Database GHSA-9v8h-qqgm-4m35 (brotli y brotlicffi de PyPI) — github.com
- PyPI brotli 1.2.1 — pypi.org / brotlicffi 1.2.1.0 — pypi.org
- Bun, «Bundled brotli decoder has an out-of-bounds write» (GHSA-663w-cv8g-jj2p, 23 de octubre de 2026) — github.com
- Envoy, «Out-of-Bounds Write in Brotli Decompressor» (GHSA-3wvj-j6qm-62mr, 23 de octubre de 2026) — github.com
- NVD, «CVE-2026-111497» — nvd.nist.gov
- CISA, «Known Exploited Vulnerabilities Catalog» (no incluido en la versión del 26 de octubre) — cisa.gov
- Ubuntu, «CVE-2026-111497» — ubuntu.com / Debian, «DLA-4855-1 brotli» — lists.debian.org
Historial de actualizaciones
2026-10-27: Primera versión, basada en información pública de Google, Node.js, Microsoft, Bun, Envoy, PHP, PyPI, JPCERT/CC, NVD, el catálogo KEV de CISA, Ubuntu y Debian.
Lectura recomendada
- Decidir la prioridad: Qué CVE parchear primero: CVSS, EPSS y KEV
- Cuando se anuncia una vulnerabilidad: Guía de remediación de CVE
- Auditoría de dependencias: Auditoría de dependencias con OSV-Scanner
- Otra corrección crítica la misma semana: Fallos de PHP CVE-2026-109618 y CVE-2026-109619
- Otra actualización de dependencias de Python el mismo mes: Certificados de eMudhra: actualizar pip, certifi y uv
- Términos: Qué es RCE (ejecución remota de código) / Qué es CVSS