
Neste Artigo
Em 13 de agosto de 2025, pesquisadores de segurança revelaram publicamente uma nova vulnerabilidade crítica no protocolo HTTP/2, apelidada de MadeYouReset e catalogada como CVE-2025-8671. Essa falha permite que invasores realizem ataques DDoS (Distributed Denial of Service) altamente eficientes, afetando milhões de servidores web no mundo todo.
A gravidade da falha já é comparada e até considerada superior ao ataque “Rapid Reset” de 2023, que também explorava fraquezas do protocolo HTTP/2 para sobrecarregar servidores.
Visão Geral da Vulnerabilidade
O MadeYouReset permite que atacantes contornem os limites de concorrência embutidos no protocolo HTTP/2, enganando os servidores para que eles mesmos cancelem as conexões, criando uma carga de trabalho imensa sem utilizar muita largura de banda ou poder de processamento do lado do atacante.
Essa abordagem torna os ataques altamente assimétricos, ou seja, um pequeno número de pacotes enviados por um invasor pode gerar uma carga enorme de processamento no servidor-alvo.
Entendendo o Ataque
Background: o que é MAX_CONCURRENT_STREAMS?
No protocolo HTTP/2, existe um controle chamado MAX_CONCURRENT_STREAMS
, geralmente configurado para 100, que limita quantas streams ativas um cliente pode abrir ao mesmo tempo. Essa proteção visa evitar que um cliente abra milhares de conexões simultâneas e sobrecarregue o servidor.
O que foi o ataque Rapid Reset?
Em 2023, o ataque chamado Rapid Reset consistia em:
Enviar uma requisição HTTP/2 válida (por exemplo,
GET /recurso
)Cancelar imediatamente essa requisição com um frame RST_STREAM
O servidor continuava processando a requisição mesmo após o cancelamento
Como a requisição cancelada não contava mais no limite de concorrência, o atacante podia repetir o processo indefinidamente
Como o MadeYouReset é diferente?
O MadeYouReset é ainda mais engenhoso. Em vez do cliente cancelar a conexão, o atacante força o próprio servidor a cancelar as streams com frames RST_STREAM mas sem encerrar o processamento no backend.
Resultado:
O servidor cancela o stream “no papel” (não conta no
MAX_CONCURRENT_STREAMS
)Mas continua processando a requisição em segundo plano
O cliente pode repetir isso centenas ou milhares de vezes
O servidor atinge esgotamento de memória (OOM) ou travamento
Técnicas Descobertas
Os pesquisadores identificaram seis técnicas diferentes que forçam o servidor a emitir RST_STREAM frames automaticamente, enquanto a requisição ainda é mantida ativa no backend. Ou seja, o servidor está enganado, achando que liberou recursos, mas está internamente sobrecarregado.
Quase todas as implementações compatíveis com HTTP/2 são vulneráveis. Isso inclui:
Projeto/Software | CVE Relacionado |
---|---|
HTTP/2 genérico | CVE-2025-8671 |
Netty (Java) | CVE-2025-55163 |
Apache Tomcat | CVE-2025-48989 |
F5 BIG-IP | CVE-2025-54500 |
H2O | CVE-2025-8671 |
Swift-NIO-HTTP2 | Em avaliação |
Consequências Possíveis
Trava total do servidor (Denial of Service)
Esgotamento de memória RAM
Fila de requisições no backend saturada
Pane em serviços críticos com impacto real em aplicações e APIs
Segundo os pesquisadores, mesmo um atacante com conexão limitada pode causar danos graves, dada a natureza assimétrica do ataque.
Simulando o Ataque em um Ambiente com HTTP/2 — Caso netcattest.com
Para entender na prática o impacto do CVE-2025-8671, imaginemos o servidor fictício https://netcattest.com
, hospedado em uma VPS com Apache 2.4.x, com suporte ao protocolo HTTP/2 (mod_http2) ativado, utilizando conexões TLS (via mod_ssl
).
Configuração Padrão do Apache com HTTP/2
Em um ambiente típico com suporte a HTTP/2, a configuração mínima seria:
Protocols h2 http/1.1 <VirtualHost *:443> Protocols h2 http/1.1 |
O parâmetro H2MaxSessionStreams 100
corresponde ao MAX_CONCURRENT_STREAMS
da especificação HTTP/2 o mesmo que o ataque MadeYouReset contorna de maneira maliciosa.
Etapas do Ataque “MadeYouReset” no Apache
Conexão é estabelecida via HTTP/2 segura com o servidor (normalmente usando
curl
com--http2
ou ferramentas comoh2c
).O atacante inicia múltiplas requisições GET válidas, mas formatadas para acionar comportamentos edge-case que levam o próprio Apache a emitir
RST_STREAM
frames para encerrar os streams antes do tempo.A mágica do ataque está no fato de que, mesmo com o RST_STREAM, o backend continua processando os dados seja por causa do uso de proxies, scripts CGI, handlers PHP ou chamadas internas para APIs da aplicação.
Como o servidor acredita ter encerrado os streams, os limites de concorrência não são respeitados e o atacante pode continuar gerando novas requisições.
Com o tempo, o Apache (e possivelmente o backend) sofre:
Saturação do número de processos
httpd
Esgotamento da fila de requisições
Falhas de alocação de memória (
out of memory
)Queda de performance ou crash total do processo
Por Que a Mitigação Pós-Rapid Reset Falhou Aqui?
Após os ataques Rapid Reset (2023), muitos servidores passaram a contabilizar streams cancelados via RST_STREAM
. Contudo, no MadeYouReset:
Não é o cliente quem cancela os streams, mas sim o servidor;
Isso dribla completamente a mitigação implementada anteriormente;
Os logs nem sempre mostram erro o servidor pensa que está tudo sob controle, até colapsar.
Conclusão
O MadeYouReset representa uma evolução inteligente dos ataques baseados em esgotamento de recursos. A simplicidade da execução, aliada à complexidade do impacto no backend, mostra como pequenos desvios na implementação de protocolos modernos como o HTTP/2 podem gerar consequências catastróficas em larga escala.
Se você opera qualquer serviço online com suporte a HTTP/2 — mesmo em servidores bem configurados como no caso do netcattest.com
a única forma de se proteger é aplicar as atualizações de segurança imediatamente e, se possível, limitar ou monitorar o uso intenso de streams com ferramentas de WAF e análise de tráfego.
Créditos da Pesquisa
Essa vulnerabilidade foi descoberta por:
Gal Bar-Nahum
Prof. Anat Bremler-Barr
Yaniv Harel
Com apoio de Imperva e Universidade de Tel Aviv.