La vulnerabilidad crítica CVE-2026-111497 en el decodificador Brotli de Google sigue provocando una ola de actualizaciones de emergencia. Tras los parches iniciales para Node.js, Bun y paquetes de Python, sobre los que ya escribimos, el 26 de octubre PHP recompiló los paquetes oficiales para Windows, y Microsoft publicó correcciones para .NET, Visual Studio y PowerShell. La vulnerabilidad permite corromper la memoria y potencialmente ejecutar código arbitrario mediante datos Brotli especialmente diseñados. El 27 de octubre, CISA incluyó la vulnerabilidad en el catálogo Known Exploited Vulnerabilities con fecha límite de mitigación hasta el 10 de noviembre de 2026.
Esencia de la vulnerabilidad y evaluaciones de criticidad
CVE-2026-111497 es un error de escritura fuera de los límites del búfer (out-of-bounds write) en el decodificador Brotli que afecta a las versiones de la biblioteca desde la 1.0.3 hasta la 1.0.9, desde la 1.1.0 hasta la 1.1.0 y a la versión 1.2.0. Su explotación puede provocar la terminación anómala del proceso, la filtración de contenido de memoria o la ejecución remota de código arbitrario.
Las evaluaciones de criticidad difieren según la metodología. De acuerdo con la GitHub Advisory Database, la vulnerabilidad ha recibido 9,2 puntos en la escala CVSS 4.0 (Critical). Red Hat la evalúa en 8,1 puntos según CVSS 3.1 (Important), señalando una alta complejidad de ataque: una explotación fiable se ve dificultada por los mecanismos de protección hardware y software. Estas evaluaciones usan distintas versiones de CVSS y distintos supuestos, por lo que no es correcto compararlas directamente.
La vulnerabilidad fue descubierta por investigadores a los que JFrog y Wiz identifican como Khai Tran y Sylvie Mayer de OpenAI Codex Security, aunque no se ha encontrado confirmación directa por parte de OpenAI en las fuentes disponibles. Google solucionó el problema en Brotli versiones 1.2.1, 1.1.1 y 1.0.10.
Productos afectados y condiciones de explotación
La conclusión clave del análisis de ambas actualizaciones es que la vulnerabilidad depende de la configuración y no es universal. Cada producto afectado tiene sus propias condiciones bajo las cuales los datos Brotli maliciosos alcanzan al decodificador vulnerable.
PHP en Windows
Según el aviso de PHP, el decodificador vulnerable es accesible a través de la extensión cURL cuando está activada la descompresión automática de respuestas HTTP. El propio cURL no activa esta función por defecto: las aplicaciones o clientes HTTP la habilitan mediante la opción CURLOPT_ENCODING.
Sin embargo, la biblioteca Guzzle en las versiones 7.16.1 y 8.3.1, según el análisis de su código fuente, establece CURLOPT_ENCODING en una cadena vacía por defecto cuando trabaja a través del manejador cURL. Un valor vacío activa todos los formatos de descompresión compatibles, incluido Brotli. Esto significa que las aplicaciones que utilizan Guzzle con la configuración por defecto en las compilaciones anteriores de PHP para Windows cumplían las condiciones para la activación de la vulnerabilidad. El ataque llega en forma de una respuesta comprimida especialmente manipulada desde el servidor al que se conecta la aplicación PHP.
PHP publicó paquetes recompilados:
8.5.12-18.4.27-18.3.36-18.2.35-1
Estas compilaciones contienen el mismo código fuente de PHP que los lanzamientos del 21 de octubre (incluyendo las correcciones PHP2Shell), pero ahora incorporan Brotli 1.2.1. Dado que la versión de PHP no ha cambiado, el comando php -v mostrará el mismo número. La nueva compilación se distingue por el sufijo -1 en el nombre del archivo y por el hash SHA-256 en la página de descargas.
Microsoft .NET
Según el aviso de seguridad de Microsoft, las correcciones se han incorporado a .NET versiones 8.0.33, 9.0.22, 10.0.14 y .NET 11 Release Candidate 3. También se han actualizado Visual Studio 2019, 2022 y 2026, así como PowerShell 7.4, 7.5 y 7.6.
En .NET, las condiciones de explotación difieren de las de PHP: ASP.NET Core y HttpClient no realizan descompresión Brotli automática por defecto. La amenaza solo surge si la aplicación habilita explícitamente la descompresión de solicitudes o respuestas, o utiliza directamente las API de Brotli para procesar datos procedentes de fuentes no confiables.
Alcance del problema más allá de PHP y .NET
Brotli está integrado en numerosos proyectos, y no basta con actualizar la biblioteca de sistema si la aplicación se distribuye con su propia copia del decodificador. Según el estudio de JFrog, el decodificador vulnerable puede utilizarse no solo a través de clientes HTTP, sino también mediante parsers de archivos, herramientas multimedia y otras integraciones nativas. En particular, JFrog ha demostrado una cadena de explotación a través de FFmpeg y una imagen JPEG XL especialmente preparada, en la que la biblioteca libjxl usa Brotli para descomprimir metadatos.
Según Wiz, los componentes vulnerables a CVE-2026-111497 están presentes en el 91% de los entornos en la nube, y en el 82% de dichos entornos existen instancias públicas de acceso de Node.js. Estas cifras no han sido confirmadas de forma independiente por otras fuentes, pero reflejan la amplia implantación de Brotli en aplicaciones en contenedores, clústeres de Kubernetes, gateways de API y reverse proxies.
Estado de explotación
Por el momento, no se han registrado casos confirmados de explotación de CVE-2026-111497 en ataques reales. No obstante, los investigadores de Imperva han demostrado un PoC exploit funcional con ejecución remota de código en la compilación oficial de Node.js. La inclusión de la vulnerabilidad en el catálogo CISA KEV el 27 de octubre con fecha límite de mitigación el 10 de noviembre indica que el regulador considera la amenaza lo suficientemente grave como para exigir una respuesta obligatoria.
Recomendaciones
Para PHP en Windows: instale los paquetes recompilados con el sufijo -1 desde la página de descargas de PHP. Si no es posible actualizar de inmediato, una solución temporal es desactivar la descompresión automática Brotli. En el código PHP esto significa no establecer CURLOPT_ENCODING. En Guzzle, establecer la opción de solicitud decode_content en false (esto desactivará la descompresión de todos los formatos, incluido gzip). Importante: simplemente eliminar br del encabezado Accept-Encoding no es suficiente: el servidor puede seguir enviando una respuesta Brotli.
Para .NET: actualice a las versiones 8.0.33, 9.0.22, 10.0.14 o .NET 11 RC3 según corresponda. Compruebe si la aplicación utiliza descompresión Brotli explícita o llamadas directas a las API de Brotli.
Para todas las plataformas: el inventario debe identificar no solo la versión del paquete de nivel superior, sino también la presencia de copias integradas o enlazadas estáticamente de Brotli, así como las rutas por las que los datos no confiables llegan al decodificador. Los proyectos que distribuyen su propia copia de la biblioteca requieren una actualización independiente por parte de los desarrolladores.
Teniendo en cuenta la inclusión de CVE-2026-111497 en CISA KEV con fecha límite el 10 de noviembre y la existencia de PoC exploits públicos, la actualización de los componentes afectados debe considerarse una tarea prioritaria. Se recomienda que las organizaciones que utilizan PHP en Windows con Guzzle u otros clientes HTTP con descompresión automática actualicen en primer lugar, ya que en esta configuración las condiciones de explotación se cumplen por defecto.












