Explorando frames CONTINUATION do HTTP/2 para ataques DoS
8 de abril de 2024
0 minutos de leituraSobre a vulnerabilidade
A vulnerabilidade está na maneira como as implementações de HTTP/2 lidam com frames CONTINUATION, usados para transmitir blocos de cabeçalho maiores que o tamanho máximo de um frame. Os invasores exploram essa falha enviando um número excessivo de frames CONTINUATION em um único fluxo HTTP/2. Essa inundação de frames sobrecarrega a capacidade do servidor de processá-los com eficiência.
A gravidade dessa vulnerabilidade foi ressaltada por Bartek Nowotarski, que observou que ela representa uma ameaça maior do que incidentes anteriores, como o ataque “HTTP/2 Rapid Reset”. Além disso, essa vulnerabilidade vem sendo explorada ativamente desde agosto de 2023.
O que torna esse ataque especialmente preocupante é a possibilidade de derrubar servidores web com apenas uma conexão TCP ou até mesmo com um punhado de frames. Como resultado, os servidores afetados podem sofrer uma queda significativa de desempenho ou ficar completamente indisponíveis.
A vulnerabilidade afeta vários fornecedores e bibliotecas HTTP/2, entre eles Red Hat, SUSE Linux, Arista Networks, Apache HTTP Server Project, nghttp2, Node.js, AMPHP e Go Programming Language.
Versões afetadas
Projeto | Versões afetadas | ID do CVE |
|---|---|---|
amphp/http | >= 2.0.0 && <= 2.1.0, <= 1.7.2 | CVE-2024-2653 |
Apache HTTP Server (httpd) | 2.4.17-2.4.58 | CVE-2024-27316 |
Apache Tomcat | <=11.0.0-M16, <=10.1.18, <=9.0.85, 8.5.0-8.5.98 | CVE-2024-24549 |
Apache Traffic Server | 8.0.0-8.1.9, 9.0.0-9.2.3 | CVE-2024-31309 |
Envoy proxy (oghttp) | 1.29.0, 1.29.1 | CVE-2024-27919 |
Envoy proxy (nghttp2) | <=1.29.2 | CVE-2024-30255 |
Golang | <=1.20, <=1.21.8, <=1.22.1 | CVE-2023-45288** |
nghttp2 | <=1.60.0 | CVE-2024-28182 |
Node.js | <=18.20.0, <=20.12.0, <=21.7.1 | CVE-2024-27983 |
Tempesta FW | 0.7.0 | CVE-2024-2758 |
Impacto
Como o HTTP/2 é amplamente utilizado e representa uma parcela significativa do tráfego da internet (estimada em mais de 70% pelo Cloudflare Radar), o impacto dessa vulnerabilidade é expressivo. Isso reforça a necessidade crítica de aplicar correções rapidamente e adotar medidas de segurança robustas para reduzir o risco de exploração e proteger servidores web contra ataques devastadores de negação de serviço (DoS) e de bypass de restrições de segurança.
Mitigação
Atualize o programa afetado para a versão mais recente, que inclui a correção da vulnerabilidade. Se não houver uma correção disponível, considere desativar temporariamente o HTTP/2 no servidor.
Soluções
Aplique correções e atualize: Instale as atualizações de segurança mais recentes no software do servidor, nas bibliotecas relevantes e nas implementações de HTTP/2. Consulte com frequência as atualizações dos fornecedores de software e, quando houver novidades, instale-as imediatamente para corrigir vulnerabilidades conhecidas.
Implemente limitação de taxa: Defina limites para o número de solicitações ou frames que podem ser processados em determinado período. Isso pode reduzir os efeitos de tráfego intenso ou de uma inundação de solicitações.
Analise e monitore o tráfego: Fique atento a padrões incomuns ou picos no tráfego de entrada que possam indicar um possível ataque. Examine o tráfego HTTP bruto para detectar e tratar solicitações maliciosas que exploram brechas nas implementações de HTTP/2.
Use firewalls de aplicações web (WAFs): Configure WAFs para filtrar o tráfego de entrada e impedir que solicitações maliciosas cheguem ao servidor. Crie regras de WAF para identificar e bloquear padrões de ataque conhecidos ligados a ataques DoS contra HTTP/2.
Implemente defesas no nível da rede: Use defesas no nível da rede, como sistemas de detecção de intrusão (IDS) ou sistemas de prevenção de intrusão (IPS), para identificar e bloquear padrões de tráfego suspeitos que indiquem ataques DoS contra implementações de HTTP/2.
Diversifique as implementações de servidor: Distribua as implementações de servidor entre diferentes projetos ou fornecedores. Isso pode aumentar a resistência a ataques e reduzir o impacto de vulnerabilidades específicas de uma determinada implementação.
Detecte vulnerabilidades com o Snyk
amphp/http (CVE-2024-2653) - Alocação de recursos sem limites ou controle de taxa
Apache HTTP Server (CVE-2024-27316) - Consumo descontrolado de recursos (“esgotamento de recursos”)
Apache Tomcat (CVE-2024-24549) - Validação inadequada de entrada
Apache Traffic Server (CVE-2024-31309) - Consumo descontrolado de recursos (“esgotamento de recursos”)
Envoy proxy (CVE-2024-27919 e CVE-2024-30255) - Detecção de condição de erro sem ação e consumo descontrolado de recursos (“esgotamento de recursos”)
Golang (CVE-2023-45288) - Esgotamento de recursos
h2 Rust crate
nghttp2 (CVE-2024-28182) - Esgotamento de recursos
Node.js (CVE-2024-27983) - Esgotamento de recursos
Tempesta FW (CVE-2024-2758) - Alocação de recursos sem limites ou controle de taxa
Referências
Mantenha suas dependências de código aberto seguras
A Snyk cria PRs de correção com um clique para dependências vulneráveis de código aberto e suas dependências transitivas.
