Skip to main content

Explorando frames CONTINUATION do HTTP/2 para ataques DoS

blog feature pypi spoof

8 de abril de 2024

0 minutos de leitura

Sobre 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

  1. amphp/http (CVE-2024-2653) - Alocação de recursos sem limites ou controle de taxa

  2. Apache HTTP Server (CVE-2024-27316) - Consumo descontrolado de recursos (“esgotamento de recursos”)

  3. Apache Tomcat (CVE-2024-24549) - Validação inadequada de entrada

  4. Apache Traffic Server (CVE-2024-31309) - Consumo descontrolado de recursos (“esgotamento de recursos”)

  5. 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”) 

  6. Golang (CVE-2023-45288) - Esgotamento de recursos

  7. h2 Rust crate

  8. nghttp2 (CVE-2024-28182) - Esgotamento de recursos

  9. Node.js (CVE-2024-27983)  - Esgotamento de recursos

  10. Tempesta FW (CVE-2024-2758) - Alocação de recursos sem limites ou controle de taxa 

Referências

  1. https://nowotarski.info/

  2. https://nowotarski.info/http2-continuation-flood-technical-details/#reachable-assertion-crash-nodejs-special-case 

  3. https://datatracker.ietf.org/doc/html/rfc7540 

  4. https://www.securityweek.com/new-http-2-dos-attack-potentially-more-severe-than-record-breaking-rapid-reset/

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.