
CVE-2026-49975
Herramienta de reproducción de la vulnerabilidad de denegación de servicio remota en HTTP/2
CVE-2026-49975 es una vulnerabilidad de denegación de servicio HTTP/2 que afecta a los principales servidores web. Fue descubierta a principios de junio de 2026 por la empresa de seguridad Calif (utilizando OpenAI Codex).
Bomba de compresión HPACK: inserta un header diminuto (como "x: a") en la tabla dinámica HPACK del servidor y luego envía miles de referencias de índice de 1 byte. Cada referencia obliga al servidor a asignar una gran cantidad de memoria de contabilidad, mientras que el cliente solo consume una mínima parte de ancho de banda. La proporción de amplificación de memoria puede alcanzar ~5700:1 (Envoy) y ~4000:1 (Apache httpd).
Mantenimiento de control de flujo tipo Slowloris: impide que el servidor envíe respuestas mediante una ventana de control de flujo de cero bytes y va suministrando tramas WINDOW_UPDATE para mantener la conexión viva, dejando la asignación de memoria «fijada».
Omisión mediante fragmentación de cookies: divide una cookie grande en muchos fragmentos pequeños para evadir el límite de cantidad de headers del servidor.
| Software | Versión afectada | Versión corregida |
|---|
| Apache httpd (mod_http2) | < 2.0.41 | 2.0.41+ |
| nginx | < 1.29.8 | 1.29.8+ |
| OpenResty | Basado en nginx < 1.29.8 | 1.29.8+ |
| Envoy (CVE-2026-47774) | ≤ 1.37.2 | 1.35.11, 1.36.7, 1.37.3, 1.38.1+ |
| Microsoft IIS | Windows Server 2025 | Sin parche |
| Cloudflare Pingora | Configuración predeterminada | Sin parche |
Esta herramienta se utiliza para investigación de seguridad y pruebas autorizadas, y demuestra el mecanismo de ataque de la vulnerabilidad CVE-2026-49975.
pip install -r requirements.txt
# 基础攻击
python http2_bomb.py example.com
# 针对本地 HTTP/2 测试服务器(无 TLS)
python http2_bomb.py localhost -p 8080 --no-tls
# 高强度攻击(50 个 stream,每 stream 50000 个引用)
python http2_bomb.py example.com -s 50 -n 50000
# 启用 Cookie 分割绕过
python http2_bomb.py example.com --cookie-fragments 1000
# 快速模式(发送后不保持连接)
python http2_bomb.py example.com --no-hold
| Parámetro | Descripción | Valor por defecto |
|---|---|---|
target | Dirección del host objetivo | Obligatorio |
-p, --port | Puerto objetivo | 443 |
--no-tls | Deshabilitar TLS | false |
-s, --streams | Número de streams concurrentes | 10 |
-n, --headers-per-stream | Número de referencias de header por stream | 10000 |
--cookie-fragments | Número de fragmentos de cookie | 0 |
--stream-delay | Retardo de envío entre streams (segundos) | 0.01 |
--window-update-interval | Intervalo de envío de WINDOW_UPDATE | 5.0s |
--no-hold | No mantener la conexión después del envío | false |
--timeout | Tiempo de espera (timeout) del socket | 30 |
Utiliza test_server.py para iniciar un servidor HTTP/2 simple para verificación local:
# 生成自签名证书
openssl req -x509 -newkey rsa:2048 -keyout server.key -out server.crt -days 365 -nodes
# 启动测试服务器
python test_server.py --port 8443
# 运行攻击
python http2_bomb.py localhost -p 8443
Mitigación inmediata: si no se puede aplicar el parche de inmediato, deshabilite temporalmente HTTP/2
Protocols http/1.1http2 off;Aplicar parches:
Endurecimiento de configuración:
max_headers (1000 por defecto en nginx 1.29.8+)Supervisión y alertas:
⚠️ Esta herramienta es exclusivamente para investigación de seguridad y pruebas de penetración autorizadas.
El uso de esta herramienta contra sistemas ajenos sin autorización constituye una actividad ilegal. El usuario debe cumplir con las leyes y regulaciones locales y probar únicamente objetivos para los que tenga autorización legítima.
MIT License - para fines de investigación de seguridad y educativos.