2025-08-21 18:29:58 -03:00
2025-08-21 18:24:52 -03:00

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:

  1. Estabelece conexão HTTP/2 com o alvo informado.

  2. Executa requisições para os vetores conhecidos (listados acima).

  3. 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
  4. 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.

Description
No description provided
Readme 30 KiB
Languages
Python 100%