Um atacante remoto que não fez login pode derrubar muitos servidores web HTTP/3 (versão 3 do protocolo de transferência de hipertexto) com uma única conexão, segundo a empresa de segurança FoxIO, que divulgou o caso e publicou código funcional de prova de conceito.
Ao enviar um pequeno lote de cabeçalhos HTTP compactados que se expande na memória para um conjunto muito maior, o atacante consegue fazer o servidor usar milhares de vezes mais memória do que recebeu, o suficiente para esgotar a memória de um servidor com configuração padrão.
As falhas causam apenas ataques de negação de serviço, sem indícios de roubo de dados ou execução de código e sem relatos públicos de ataques reais. Já há correções para quic-go, Cloudflare quiche, lsquic e Wireshark, mas Bun, a biblioteca h3 em Rust e aioquic ainda não haviam recebido correção na data da divulgação.
A FoxIO encontrou a mesma classe de falha em sete das dez pilhas de HTTP/3 que testou. A causa comum está no QPACK (mecanismo de compactação de cabeçalhos do HTTP/3), o esquema que reduz os cabeçalhos das requisições para que campos repetidos sejam transmitidos como um código curto, e não como o texto completo.
Um servidor deveria limitar o tamanho dos cabeçalhos depois de descompactá-los. As pilhas afetadas limitam apenas o lote compactado que chega pela rede, mas não o resultado descompactado, ou aplicam o limite tarde demais. Assim, uma única requisição pode se expandir em centenas de milhares de entradas de cabeçalho que o servidor mantém na memória.
O alcance é amplo porque essas pilhas estão embutidas em softwares comuns. A quic-go é a biblioteca em Go por trás de Caddy, Traefik e cloudflared; a lsquic é a biblioteca da LiteSpeed, usada no LiteSpeed Web Server e no OpenLiteSpeed; e o servidor HTTP/3 do Bun roda sobre a lsquic.
O atacante não precisa de conta nem de acesso especial e, como o HTTP/3 roda sobre UDP (protocolo de datagramas de usuário), a requisição chega ao servidor antes que boa parte dos filtros habituais seja aplicada.
Quais pilhas estão corrigidas e quais seguem expostas (até 22 de outubro de 2026)
A FoxIO lista IIS (Internet Information Services), Envoy, ngtcp2/nghttp3 e o quiche, do Google, como não afetados, cada um porque limita os cabeçalhos descompactados durante a decodificação, e não depois.
A amplificação varia conforme a pilha, nos testes da própria FoxIO com configurações padrão. Na quic-go, um lote compactado de 1 MB se descompactou em cerca de 160 mil campos de cabeçalho e deixou cerca de 15 MB retidos na requisição, algo em torno de 17 vezes os bytes enviados. O aviso de segurança do próprio projeto quic-go estima a expansão possível em cerca de 50 vezes.
Um segundo método eleva muito mais a proporção: o atacante armazena uma entrada de cabeçalho de cerca de 4 KB e depois a referencia milhares de vezes, usando referências de um byte, e o servidor reconstrói a entrada completa a cada referência. A FoxIO mediu cerca de 4 mil vezes no Bun e entre 600 e 1.800 vezes na lsquic.
O Bun apresenta o pior cenário. Seu servidor HTTP/3, que a documentação do Bun classifica como experimental, usa a lsquic, mas substitui a parte que limita a memória dos cabeçalhos por um código próprio, que verifica cada cabeçalho, mas nunca o total acumulado. A FoxIO constatou que, quando os cabeçalhos descompactados passam de 2 GB, um contador de tamanho nesse código estoura e volta a zero, e o servidor entra em um laço do qual não sai.
Um único fluxo de cerca de 516 KB na rede, segundo a FoxIO, deixa o servidor travado com 100% de uso da CPU (unidade central de processamento), sem recuperação, bloqueando novas requisições. A ausência do total acumulado é o que permite chegar a esse estouro; o limite de 64 KB da própria lsquic impede o problema.
O Wireshark é um caso diferente das falhas nos servidores. Seu problema derruba o dissector do HTTP/3, componente que lê o HTTP/3 de uma captura de tráfego, quando o Wireshark descriptografa o tráfego com um arquivo de log de chaves ou abre um arquivo de captura que contém segredos de descriptografia. Ele não é um servidor que um atacante alcança pela rede. O Wireshark afirmou estar "não ciente de nenhum exploit para este problema".
Quem opera esses servidores deve atualizar para as versões corrigidas citadas acima. Para as pilhas sem correção, a FoxIO indica medidas provisórias: no Bun, não expor um servidor HTTP/3; no mitmproxy, desativar o HTTP/3 com o parâmetro --set http3=false; e, na biblioteca h3 em Rust, definir um limite adequado com max_field_section_size.
A correção da lsquic, lançada em 16 de julho de 2026, limita quantos conjuntos de cabeçalhos descompactados um servidor mantém por fluxo, com padrão de um. A FoxIO disse que o trabalho começou após a pesquisa de Gal Bar Nahum sobre o "MadeYouReset", uma técnica de negação de serviço contra o HTTP/2 (versão 2 do protocolo de transferência de hipertexto), que questionou se a compactação de cabeçalhos do HTTP/3 tinha uma fragilidade semelhante.