PoC-CVE-2025-8671-MadeYouReset-HTTP-2
PoC para validar vulnerabilidade MadeYouReset
Este repositório contém uma PoC controlada desenvolvida para validar se uma infraestrutura é potencialmente vulnerável à CVE-2025-8671 (MadeYouReset). O código não é um exploit completo e não realiza DoS real – o objetivo é somente simular os vetores descritos publicamente e observar as respostas do servidor.
Sobre a CVE-2025-8671 A CVE-2025-8671 afeta implementações HTTP/2 em que o servidor não lida corretamente com certos frames inválidos enviados após o encerramento de streams ou conexões. Um atacante poderia explorar a falha para causar consumo excessivo de CPU/memória, resultando em negação de serviço (DoS).
Os vetores mais comuns descritos publicamente incluem:
- WINDOW_UPDATE inválido (em stream inexistente ou conexão com janela zero)
- DATA enviado após END_STREAM
- HEADERS de tamanho zero após o encerramento do stream
- PRIORITY com tamanho inválido após encerramento
- CONTINUATION sem HEADERS prévios
O que o código faz O script:
-
Estabelece conexão HTTP/2 com o alvo informado.
-
Executa requisições para os vetores conhecidos (listados acima).
-
Monitora a resposta do servidor, registrando eventos como:
- GOAWAY (encerramento da conexão pelo servidor)
- RST_STREAM (reset adequado do stream inválido)
- Fechamento antecipado da conexão
- Respostas recebidas (quando o servidor processa a request)
- Erros internos
-
Para cada tentativa, gera uma saída em JSON com:
- vector → vetor de ataque testado
- attempt → número da tentativa
- rst_stream → se o servidor resetou o stream
- goaway → se o servidor encerrou a conexão
- responses → se houve resposta do servidor
- conn_closed_early → se a conexão foi encerrada antes do esperado
- error → mensagem de erro capturada localmente
Limitações
-
O script não é um exploit de DoS real. Ele envia apenas algumas dezenas de frames por vetor para detecção controlada.
-
O código não mede exaustão de CPU/memória do servidor diretamente; a análise depende de:
- Logs do lado do servidor, CDN ou backend
- Métricas de tempo de resposta, bytes enviados e status codes
-
Não cobre todos os cenários possíveis de exploração, apenas os vetores já descritos publicamente.
-
É uma ferramenta de validação defensiva, não de ataque.
Como usar
Requisitos
- Python 3.10 ou superior
- Dependências: pip install h2 hyperframe
Execução
python3 poc_cve.py
Interpretação dos Resultados
GOAWAY = 1 → o servidor encerrou corretamente a conexão. RST_STREAM = 1 → o servidor resetou corretamente o stream inválido. responses > 0 → o servidor processou a request (aceitável em paths válidos, desde que encerre depois). conn_closed_early = 1 → o servidor fechou a conexão de forma imediata (normal em alguns vetores). error → indica erro local do cliente (não necessariamente problema do servidor).
Infraestruturas não vulneráveis costumam:
Encerrar a conexão (GOAWAY) ou resetar streams inválidos (RST_STREAM)
Não manter processamento ativo após os frames inválidos
Não apresentar lentidão ou consumo anômalo nos logs
Conclusão
Este código permite validar, de forma segura e não intrusiva, se uma infraestrutura HTTP/2 reage adequadamente aos vetores associados à CVE-2025-8671.
Ele cumpre seu propósito de PoC defensiva: detectar comportamentos incorretos sem gerar DoS real ou explorar a falha em produção.