HTTP2Shell is a cross-ecosystem security issue caused by CVE-2026-111497, an out-of-bounds write in Google’s Brotli decoder. Malformed compressed data can corrupt process memory and potentially cause information disclosure, denial of service or remote code execution. Systems need patched Brotli code wherever applications embed, bundle or statically link the decoder; updating the operating system library alone may leave vulnerable copies running.
¿Qué es HTTP2Shell y cómo funciona el fallo de Brotli?
HTTP2Shell es un patrón de exposición a vulnerabilidades en el que datos Brotli controlados por un atacante llegan a un decodificador afectado por CVE-2026-111497. El decodificador puede escribir fuera de una región de memoria asignada al procesar una entrada comprimida malformada, lo que podría provocar un bloqueo, divulgar información o permitir la ejecución remota de código en el proceso afectado.
El defecto subyacente se encuentra en el decodificador Brotli nativo de Google, no en el protocolo HTTP/2. El nombre HTTP2Shell apareció cuando los investigadores reconocieron que se podía acceder al mismo decodificador a través de varios clientes HTTP, servidores y marcos de aplicaciones, según el informe de JFrog del 23 de octubre de 2026.
Esta distinción es importante. Un servicio no se vuelve seguro simplemente por desactivar HTTP/2, cambiar los marcos web o bloquear las solicitudes entrantes comprimidas. Un cliente del lado del servidor aún puede recuperar una respuesta maliciosa que contenga Content-Encoding: br, y después pasar el cuerpo a un decodificador vulnerable.
Google published fixed Brotli releases on October 21, 2026. Affected upstream versions are 1.0.3 through 1.0.9, 1.1.0 and 1.2.0; the corresponding repaired branches are 1.0.10, 1.1.1 and 1.2.1. A vendor-confirmed backport can also be safe even when its displayed version differs.
¿Qué versiones y plataformas de HTTP2Shell necesitan parches?
HTTP2Shell afecta al software que contiene código Brotli vulnerable, incluidos Node.js 22.x, 24.x y 26.x anteriores a sus versiones de seguridad del 21 de octubre de 2026. Bun 1.4.4, los paquetes de Windows de PHP recompilados y los paquetes de .NET corregidos ilustran el alcance más amplio: cada ecosistema tuvo que sustituir su propio decodificador incluido o referenciado.
| Producto o rama | Información sobre la versión afectada | Versión corregida | Fecha de publicación |
|---|---|---|---|
| Rama 1.0 de Google Brotli | 1.0.3–1.0.9 | 1.0.10 | 21 de octubre de 2026 |
| Rama 1.1 de Google Brotli | 1.1.0 | 1.1.1 | 21 de octubre de 2026 |
| Rama 1.2 de Google Brotli | 1.2.0 | 1.2.1 | 21 de octubre de 2026 |
| Node.js 22.x | 22.x anterior a 22.23.4 | 22.23.4 | 21 de octubre de 2026 |
| Node.js 24.x | 24.x anterior a 24.22.1 | 24.22.1 | 21 de octubre de 2026 |
| Node.js 26.x | 26.x anterior a 26.12.1 | 26.12.1 | 21 de octubre de 2026 |
| Bun | Versiones que utilizan el decodificador incluido vulnerable | 1.4.4 con Brotli 1.2.1 | 23 de octubre de 2026 |
| Compilaciones oficiales de Windows de PHP | Paquetes 8.5.12, 8.4.27, 8.3.36 y 8.2.35 sin la recompilación -1 | 8.5.12-1, 8.4.27-1, 8.3.36-1 y 8.2.35-1 | 26 de octubre de 2026 |
| .NET | Paquetes afectados de .NET 8, 9, 10 y 11-preview | Paquetes corregidos fuera de ciclo de Microsoft | 25 de octubre de 2026 |
La tabla representa al menos 13 versiones de sustitución o líneas de paquetes identificadas: tres ramas ascendentes de Brotli, tres líneas de Node.js, una versión de Bun, cuatro recompilaciones de Windows de PHP y las familias de paquetes de .NET afectadas. Este recuento explica por qué una única actualización del sistema operativo es una estrategia de corrección poco fiable.
Las versiones de Node.js fuera de soporte no deben considerarse protegidas porque no figuran entre las líneas mantenidas y corregidas. El aviso de Microsoft del 25 de octubre de 2026 cubría los paquetes afectados de .NET 8, 9, 10 y 11-preview, y señalaba .NET Framework como no afectado.
Los equipos que ya estén respondiendo a otros fallos urgentes, como la vulnerabilidad de ejecución remota de código de GitLab o el problema de Atlassian explotado activamente, deben hacer un seguimiento independiente de Brotli. La corrección de HTTP2Shell debe seguir las instancias de la dependencia, no un único producto expuesto a Internet.
¿Puede HTTP2Shell conducir realmente a la ejecución remota de código?
CVE-2026-111497 puede conducir potencialmente a la ejecución remota de código porque una escritura fuera de límites permite que una entrada Brotli malformada corrompa la memoria del proceso. JFrog informó el 22 de octubre de 2026 de que Imperva demostró la ejecución de código contra una compilación oficial vulnerable de Node.js, pero Red Hat no había observado un exploit público y fiable de ejecución remota de código hasta el 26 de octubre de 2026.
Red Hat asignó a CVE-2026-111497 una puntuación CVSS v3.1 de 8.1 y calificó el problema como Importante el 26 de octubre de 2026. Su evaluación incluía una complejidad de ataque alta, lo que significa que convertir el error de memoria en una ejecución de código fiable es más difícil que simplemente provocar un bloqueo.
No interpretes «complejidad alta» como «prioridad baja». Los servicios de obtención expuestos a Internet pueden procesar datos no fiables repetidamente, y las disposiciones de memoria varían según los entornos de ejecución, los sistemas operativos y las configuraciones del compilador. Un intento de explotación fallido aún puede convertirse en un evento de denegación de servicio.
La valoración justa es seria, pero mesurada: según los informes, la ejecución de código se ha demostrado en un caso controlado, mientras que Red Hat no confirmó una explotación pública, amplia y fiable en el momento de la publicación. Hay pruebas suficientes para aplicar los parches rápidamente sin presentar todos los decodificadores vulnerables como ya comprometidos.
¿Cómo puede llegar una respuesta Brotli maliciosa a tu servidor?
HTTP2Shell can reach a server when an application fetches attacker-controlled content and automatically decodes a Brotli-compressed response. Likely response-side paths include webhook processors, URL-preview generators, crawlers, reverse proxies and server-side request features. Blocking compressed request bodies does not stop malicious Content-Encoding: br respuestas procedentes de esas conexiones salientes.
En cURL, la descompresión automática de respuestas está desactivada de forma predeterminada, según su documentación de 2026. Las aplicaciones pueden activarla mediante CURLOPT_ACCEPT_ENCODING, el CURLOPT_ENCODING de PHP o la opción de línea de comandos --compressed . La accesibilidad también requiere que la compilación de libcurl seleccionada sea compatible con Brotli.
La documentación de Guzzle de 2026 indica que decode_content tiene como valor predeterminado true. La exposición real sigue dependiendo del controlador seleccionado y de la compatibilidad con Brotli de la compilación de libcurl subyacente. Inspeccione el comportamiento en tiempo de ejecución en lugar de asumir que un valor predeterminado del framework demuestra que existe una vulnerabilidad o que el sistema es seguro.
Un caso límite que suele pasarse por alto es el de una aplicación de confianza que obtiene una URL no fiable después de una redirección. Las vistas previas de URL, la validación de webhooks y los servicios proxy pueden seguir destinos controlados por un atacante, por lo que los datos peligrosos llegan como respuesta en lugar de atravesar el analizador de solicitudes públicas. También aparecen errores similares en los límites de confianza en los fallos de seguridad entre agentes.
¿Cómo se audita y corrige HTTP2Shell?
Una auditoría de HTTP2Shell debe identificar todos los descodificadores de Brotli presentes en los artefactos desplegados, sustituir las copias vulnerables, recompilar el software incluido y reiniciar los procesos afectados. Verifique el binario o paquete que realmente se está ejecutando en producción. Los manifiestos de paquetes pueden pasar por alto bibliotecas estáticas, código fuente incluido por proveedores, capas de contenedores, ejecutables autónomos y dependencias transitivas.
Utilice la siguiente lista de comprobación de corrección de 2026 para cubrir las copias directas y ocultas del descodificador:
- Haga un inventario de los paquetes del sistema operativo, los runtimes de Node.js, los paquetes de PHP para Windows, las imágenes de contenedor, los ejecutables compilados, los enlaces de lenguajes y las bibliotecas nativas que contengan Brotli.
- Exija Brotli 1.0.10, 1.1.1 o 1.2.1, u obtenga una confirmación escrita del proveedor de que una adaptación de seguridad corrige CVE-2026-111497.
- Actualice Node.js a 22.23.4, 24.22.1 o 26.12.1, o una versión posterior; después, recompile y vuelva a desplegar los contenedores, las imágenes de integración continua y las aplicaciones de un solo ejecutable.
- Para PHP en Windows, verifique que el nombre de archivo incluya 8.5.12-1, 8.4.27-1, 8.3.36-1 u 8.2.35-1. El paquete correspondiente sin
-1carece de la recompilación de dependencias del 26 de octubre de 2026. - Busque
CURLOPT_ACCEPT_ENCODING,CURLOPT_ENCODING,--compressedy eldecode_contentde Guzzle; después, compruebe qué rutas aceptan respuestas Brotli procedentes de hosts seleccionados por un atacante. - Genere una lista de materiales de software específica de la compilación que separe las instancias de componentes duplicadas, registre las relaciones entre dependencias e identifique los grafos de dependencias incompletos como incógnitas conocidas.
- Vuelva a generar la lista de materiales de software después de aplicar los parches, recompile los artefactos autónomos, vuelva a desplegarlos y reinicie todos los procesos afectados.
El detalle del nombre de archivo de PHP es especialmente fácil de pasar por alto. La versión 8.4.27-1 utiliza la misma versión del runtime de PHP que 8.4.27; el -1 indica que se trata de un paquete de Windows recompilado que contiene Brotli 1.2.1. En mi opinión, comprobar únicamente phpversion() es insuficiente, porque quizá no muestre esa diferencia de empaquetado.
La guía de 2025 de CISA sobre los elementos mínimos de una SBOM exige relaciones entre dependencias y suficiente identidad de los componentes para distinguir las instancias de software. En el caso de este fallo, las instancias duplicadas son operativamente significativas: una biblioteca del sistema corregida y un descodificador antiguo incrustado en un ejecutable son dos objetivos de corrección independientes.
Termine con evidencias del despliegue. Registre el resumen criptográfico de un artefacto, inspeccione el descodificador dentro de ese artefacto y confirme que el proceso reiniciado utiliza la nueva compilación. La disciplina de respuesta ante emergencias utilizada para fallos sin parchear en servidores de copias de seguridad también se aplica aquí, pero HTTP2Shell añade la carga de encontrar dependencias nativas duplicadas.
Preguntas frecuentes sobre HTTP2Shell
¿Es HTTP/2 en sí vulnerable a HTTP2Shell?
HTTP/2 no es el componente defectuoso de HTTP2Shell. CVE-2026-111497 se encuentra en el decodificador Brotli de Google y puede alcanzarse mediante software que procesa datos Brotli maliciosos, incluidos clientes y servidores HTTP que utilizan distintas versiones del protocolo.
¿Actualizar libbrotli en Linux soluciona el problema en todas las aplicaciones afectadas?
Actualizar el sistema libbrotli no corrige las aplicaciones que enlazan estáticamente, incluyen como dependencia o integran un descodificador vulnerable. Cada artefacto desplegado debe inspeccionarse, recompilarse y volver a desplegarse cuando sea necesario.
¿Afecta el aviso de reconstrucción de Windows a las instalaciones de PHP en Linux?
El anuncio del paquete de PHP del 26 de octubre de 2026 reconstruyó específicamente los paquetes oficiales para Windows con Brotli 1.2.1. La exposición en Linux depende de las bibliotecas Brotli y cURL proporcionadas o incluidas por la distribución, el contenedor o la compilación de la aplicación correspondiente.
¿Desactivar la descompresión Brotli puede servir como medida paliativa temporal?
Desactivar la descompresión automática de Brotli puede reducir las vías de ataque accesibles cuando esta configuración se aplica en todas las rutas de código de clientes y servidores. Aplicar parches sigue siendo preferible, ya que las bibliotecas ocultas, los controladores alternativos o las funciones recién implementadas pueden reintroducir la decodificación.
¿Qué número de CVE se ha asignado a HTTP2Shell?
HTTP2Shell hace referencia a la exposición derivada de CVE-2026-111497, la escritura fuera de límites en el decodificador Brotli de Google, revelada en octubre de 2026.


