Introducción
Hasta hace poco, los equipos de infraestructura asumían que HTTP/2 era más seguro que HTTP/1.1 en términos de resistencia a ataques de denegación de servicio (DoS). Sin embargo, un nuevo exploit —denominado HTTP/2 Bomb— desmiente esa premisa: un solo cliente malicioso puede saturar la memoria de servidores web en segundos, sin necesidad de ancho de banda masivo. La vulnerabilidad explota dos mecanismos clave del protocolo: HPACK (compresión de encabezados) y el control de flujo, combinando técnicas conocidas como compression bomb y Slowloris.
En pruebas realizadas por el equipo de Calif., un equipo doméstico con conexión de 100 Mbps logró inutilizar un servidor vulnerable en menos de 30 segundos. Peor aún: en servidores como Apache HTTPD y Envoy, un único cliente puede consumir 32 GB de RAM en solo 20 segundos, sin enviar tráfico excesivo. Esto convierte a HTTP/2 Bomb en una de las vulnerabilidades más peligrosas para infraestructuras críticas en 2026.
Qué ocurrió
HTTP/2 Bomb es una vulnerabilidad de denegación de servicio remota (DoS) que afecta a los servidores web más usados en producción: NGINX, Apache HTTPD, Microsoft IIS, Envoy y Cloudflare Pingora. El exploit fue descubierto mediante ingeniería inversa automatizada (OpenAI Codex) que encadenó dos técnicas conocidas:
- Compression Bomb: Aprovecha la compresión de encabezados HPACK de HTTP/2. Cada byte en la red se expande a un encabezado completo en el servidor, y esta expansión se repite miles de veces por solicitud.
- Hold de control de flujo: Envía una ventana de control de flujo con tamaño cero byte, impidiendo que el servidor libere la memoria asignada. El servidor queda «bloqueado» esperando liberar recursos que nunca se liberan.
La novedad radica en cómo se combina el ataque: no se llena la tabla de compresión con datos grandes (como en CVE-2016-6581), sino que se vacía el encabezado, obligando al servidor a mantener estructuras de datos por cada entrada mínima. Esto evade los límites de tamaño de encabezados existentes, ya que el servidor no detecta un exceso de datos comprimidos.
Antecedentes y relación con CVEs conocidos
HTTP/2 Bomb no es un descubrimiento aislado. Se basa en vulnerabilidades previas y en la especificación misma de HTTP/2, que subestima los riesgos de memoria:
- CVE-2016-6581 (HPACK Bomb): Primer exploit documentado que saturaba servidores mediante encabezados comprimidos maliciosos.
- CVE-2025-53020: Vulnerabilidad de agotamiento de memoria en Apache HTTPD por implementación deficiente de HTTP/2.
- CVE-2016-8740 y CVE-2016-1546: DoS en Apache HTTPD mediante CONTINUATION frames y worker-thread starvation en conexiones HTTP/2.
El problema central, según Calif., es que la especificación de HTTP/2 solo considera el riesgo de amplificación (cantidad de datos generados vs. recibidos), pero no el tiempo de retención. Un servidor puede liberar memoria rápidamente si el ataque finaliza, pero HTTP/2 permite que un cliente mantenga la conexión abierta casi indefinidamente, bloqueando la memoria asignada.
Impacto para DevOps / Infraestructura / Cloud / Seguridad
1. Servidores afectados y versiones vulnerables
| Servidor | Versiones afectadas (predeterminado) | Estado de parche |
|---|---|---|
| NGINX | Todas las versiones con HTTP/2 activado | Parche disponible |
| Apache HTTPD | 2.4.0 a 2.4.59 | Parche disponible |
| Microsoft IIS | Todas las versiones con HTTP/2 activado | Parche disponible |
| Envoy | Todas las versiones (usando HPACK) | Parche disponible |
| Cloudflare Pingora | Todas las versiones (internamente parcheado) | No afectado |
2. Escenarios de explotación en producción
- Atacante con recursos limitados: Un equipo doméstico con 100 Mbps puede saturar un servidor en menos de 30 segundos.
- Agotamiento de memoria en 20 segundos: Un solo cliente puede consumir 32 GB de RAM en Apache HTTPD y Envoy.
- Impacto en cloud: En AWS, Azure o GCP, esto puede generar costos adicionales por uso de memoria (en instancias con facturación por GB) y caídas de servicios críticos (APIs, dashboards, aplicaciones web).
- Evasión de WAF/IDS: El ataque no genera tráfico anómalo en la capa 7 (solo encabezados HTTP/2), por lo que soluciones como AWS WAF o Cloudflare WAF no lo detectan sin configuraciones específicas.
3. Probabilidad y severidad (CVSS)
- CVSS v4.0 Base Score: 9.1 (Crítico).
– Complejidad: Baja (requiere solo enviar encabezados HTTP/2 maliciosos).
– Impacto: Alto (DoS total, posible corrupción de memoria en algunos casos).
- Explotabilidad: 10/10 (se han publicado PoCs públicos en foros de hacking).
Detalles técnicos
1. Mecanismo de ataque: HPACK + Control de Flujo
HTTP/2 usa HPACK para comprimir encabezados, reduciendo su tamaño en un 30% en promedio. Sin embargo, el algoritmo asigna memoria por cada entrada en su tabla de compresión, incluso si el encabezado está vacío. El exploit funciona así:
- Envío de encabezados vacuos:
:method = GET
:path = /
:scheme = https
:authority = ejemplo.com
(Nota: Solo 4 campos, pero con campos dinámicos que generan entradas en la tabla HPACK).
- Aumento exponencial de memoria:
user-agent: A) se comprime y almacena en la tabla HPACK.– El servidor asigna memoria por cada entrada, incluso si el valor es mínimo.
– El atacante repite este proceso miles de veces por segundo, saturando la tabla.
- Bloqueo de memoria con ventana de flujo cero:
SETTINGS (SETTINGS_MAX_HEADER_LIST_SIZE = 0)
WINDOW_UPDATE (window_size = 0)
Esto impide que el servidor libere memoria, ya que el cliente nunca envía más datos, pero tampoco cierra la conexión.
2. Por qué fallan las mitigaciones actuales
- Límites de tamaño de encabezados: HTTP/2 permite configurar
SETTINGS_MAX_HEADER_LIST_SIZE(ej: 8 KB). Sin embargo, el exploit no excede este límite, ya que los encabezados son pequeños. - Deshabilitar HPACK: Reduce el rendimiento (HPACK ahorra ~30% de ancho de banda en encabezados). Muchos administradores no lo desactivan.
- Parches previos (CVE-2016-6581): Solo mitigaban ataques que inflaban encabezados grandes, no este nuevo vector.
3. Comportamiento en diferentes servidores
| Servidor | Comportamiento vulnerable | Mitigación recomendada |
|---|---|---|
| NGINX | Acumula memoria en la tabla HPACK | Actualizar a NGINX 1.25.5+ o deshabilitar HPACK |
| Apache HTTPD | Consume 32 GB en 20 segundos | Aplicar parche Apache 2.4.60+ o limitar encabezados |
| Envoy | Similar a Apache, con DoS rápido | Actualizar a Envoy 1.29.3+ o usar BLOCK19 |
| Microsoft IIS | Acumulación en conexiones persistentes | Aplicar parche de Microsoft (KB5034441) o limitar HTTP/2 |
- Wireshark con filtro HTTP/2:
tls.handshake.type == 2 && http2.type == 1
(Buscar múltiples HEADERS frames con campos dinámicos repetidos).
- NGINX: métricas de memoria HPACK:
curl -s http://127.0.0.1/nginx_status | grep hpack
(Si hpack_memory crece sin control, hay un ataque en curso).
- Apache HTTPD: monitoreo de conexiones:
ab -n 1000 -c 500 http://ejemplo.com/ # Prueba de carga maliciosa
(Si la memoria RSS del proceso httpd crece >500 MB, investigar).
Qué deberían hacer los administradores y equipos técnicos
1. Actualizaciones urgentes (prioridad crítica)
| Servidor | Comando de actualización | Versión segura |
|---|---|---|
| NGINX |
