Uma nova classe de vulnerabilidades em implementações específicas do protocolo HTTP/2, chamada de “Ataque por Inundação de CONTINUAÇÃO HTTP/2”, foi descoberta, causando preocupação em toda a Internet. Vários produtos afetados já foram identificados e receberam CVEs, e espera-se que mais sejam divulgados no futuro. Esta vulnerabilidade é potencialmente ainda mais grave do que o problema anterior de Reinício Rápido do HTTP/2.
Pontos-chave:
- Uma nova classe de vulnerabilidades: “Ataque por Inundação de CONTINUAÇÃO HTTP/2” foi descoberta em várias implementações do protocolo HTTP/2.
- A vulnerabilidade pode levar a ataques de Negação de Serviço (DoS) e é considerada mais grave do que a vulnerabilidade anterior de Reinício Rápido do HTTP/2.
- Vários produtos afetados foram identificados e receberam CVEs, e espera-se que mais sejam divulgados no futuro.
- A vulnerabilidade surge quando um único quadro HEADER grande é insuficiente para armazenar todos os cabeçalhos, e o fluxo de dados continua com quadros CONTINUAÇÃO sem o sinalizador END_HEADERS definido.
- Divulgações e correções foram coordenadas junto ao CERT/CC.
.
Entendendo a Vulnerabilidade de Ataque por Inundação de CONTINUAÇÃO HTTP/2
Sobre o HTTP/2:
O HTTP/2 (RFC9204) é uma versão atualizada do protocolo HTTP que permite o envio simultâneo de vários fluxos de dados por uma única conexão TCP. Os dados são codificados em binário em quadros, com diferentes tipos de quadros projetados para propósitos específicos.
Dois tipos de quadros cruciais são os quadros HEADERS e CONTINUAÇÃO, que são usados para enviar campos de cabeçalho em solicitações e respostas.
Os cabeçalhos são divididos e serializados em “listas de cabeçalho” para transmissão dentro de quadros HEADERS, enquanto os quadros CONTINUAÇÃO são usados para continuar a sequência de cabeçalhos no fluxo de dados.
Ataque por Inundação de CONTINUAÇÃO HTTP/2:
A vulnerabilidade ocorre quando um invasor cria uma solicitação maliciosa que nunca define o sinalizador END_HEADERS, criando um fluxo infinito de cabeçalhos que o servidor HTTP/2 deve analisar e armazenar na memória. Conforme o servidor luta para processar os cabeçalhos recebidos, ele se torna indisponível e eventualmente pode travar devido a um erro de Falta de Memória (OOM).
Os resultados potenciais dessa vulnerabilidade incluem:
- Esgotamento da CPU, causando lentidão na resposta a outras solicitações.
- Travamentos por Falta de Memória.
- Travamentos do servidor.
Comparação com Reinício Rápido e Outros CVEs
O impacto da vulnerabilidade de Inundação de CONTINUAÇÃO é potencialmente mais grave do que a vulnerabilidade anterior de Reinício Rápido por dois motivos principais.
- A exploração muitas vezes requer apenas uma única conexão TCP e dados mínimos, tornando mais fácil de executar do que o Reinício Rápido, que frequentemente requer uma abordagem de DDoS.
- O ataque é mais difícil de detectar e proteger usando mitigação padrão, já que nem mesmo uma única solicitação é feita devido à ausência do sinalizador END_HEADERS.
Produtos Afetados Conhecidos e CVEs
Numerosos serviços da Internet já implementam a versão 2 do HTTP, o que poderia representar um risco para a segurança na Internet, e é por isso que divulgações e correções dos serviços mais críticos foram coordenadas com o CERT/CC.
Vários CVEs foram atribuídos:
Project | Confirmed | Affected Versions | CVE ID |
amphp/http | 2024-03-11 | >= 2.0.0 && <= 2.1.0, <= 1.7.2 | CVE-2024-2653 |
Apache HTTP Server (httpd) | 2024-02-23 | 2.4.17-2.4.58 | CVE-2024-27316 |
Apache Tomcat | 2024-01-25 | <=11.0.0-M16, <=10.1.18, <=9.0.85, 8.5.0-8.5.98 | CVE-2024-24549 |
Apache Traffic Server | 2024-03-29 | 8.0.0-8.1.9, 9.0.0-9.2.3 | CVE-2024-31309 |
github.com/envoyproxy/envoy (oghttp) | 2024-02-27 | 1.29.0, 1.29.1 | CVE-2024-27919 |
github.com/envoyproxy/envoy (nghttp2) | 2024-02-27 | <=1.29.2 | CVE-2024-30255 |
Golang | 2024-01-10 | <=1.20, <=1.21.8, <=1.22.1 | CVE-2023-45288 |
h2 Rust crate | 2024-03-04 | <=0.4.3, <=v0.3.25 | |
nghttp2 | 2024-03-08 | <=1.60.0 | CVE-2024-28182 |
Node.js | 2024-01-15 | <=18.20.0, <=20.12.0, <=21.7.1 | CVE-2024-27983 |
Tempesta FW | 2024-03-16 | 0.7.0 | CVE-2024-2758 |
█████████ *** | 2024-04-04 | CVE-2024-XXXX | |
█████████ | 2024-04-04 | CVE-2024-XXXX |
Mitigação
No HTTP/1.1, os servidores são protegidos de cabeçalhos infinitos por meio da imposição de limites de tamanho de cabeçalho e de tempos limite de solicitação/cabeçalhos que abandonam a conexão.
Portanto, para mitigar a vulnerabilidade de Inundação de CONTINUAÇÃO, os fornecedores devem limitar ou sanitizar o número de quadros CONTINUAÇÃO enviados dentro de um único fluxo. Alguns fornecedores já lançaram correções, enquanto outros estão trabalhando em patches.
- CVE-2024-2653
Afeta o pacote Composer amphp/http. Corrigido nas versões 1.7.3 e 2.1.1 com o commit 881cc33d.
Mais informações aqui.
- CVE-2024-27316
Afeta o Servidor Apache HTTP (httpd). Corrigido na versão 2.4.59 com o commit b646741f.
Mais informações aqui.
- CVE-2024-24549
Afeta o Apache Tomcat. Corrigido nas versões 8.5.99, 9.0.86, 10.1.19 e 11.0.0-M17 com o commit 810f49d5. Observação: este CVE não está diretamente relacionado à falha CONTINUATION, mas foi descoberto como consequência de um POC para a vulnerabilidade.
Mais informações aqui.
- CVE-2024-31309
Afeta o Apache Traffic Server. Corrigido nas versões 8.1.10-rc0 e 9.2.4-rc0 com o commit b8c6a23b.
Mais informações aqui.
- CVE-2024-27919.
Afeta o pacote Go github.com/envoyproxy/envoy através do componente “oghttp”. Corrigido nas versões 1.26.8, 1.27.4, 1.28.2 e 1.29.3 com o commit d1936d03.
Mais informações aqui.
- CVE-2024-30255
Afeta o pacote Go github.com/envoyproxy/envoy através do componente “nghttp2”. Corrigido nas versões 1.26.8, 1.27.4, 1.28.2 e 1.29.3.
Mais informações aqui.
- CVE-2023-45288
Corrigido nos pacotes Go golang.org/x/net/http2 versão 0.23.0 e net/http 1.21.9 e 1.22.2 com o commit ba872109.
Mais informações aqui.
- CVE-2024-28182
Afeta a biblioteca Cpp e o wrapper Go nghttp2. Corrigido na versão 1.61.0 com o commit 00201ecd.
Mais informações aqui.
- CVE-2024-27983
Afeta o Node.js. Corrigido nas versões 18.20.1, 20.12.1 e 21.7.2.
Mais informações aqui.
- CVE-2024-2758
Afeta o Tempesta FW. Corrigido na versão 0.7.1.
Nossa equipe está acompanhando ativamente essas vulnerabilidades e garantindo que nossa solução SCA cubra os produtos afetados em seu escopo. Mais informações aqui.
Mantemos uma lista abrangente de avisos em nossa página DevHub em https://devhub.checkmarx.com/advisories/. (Um recurso que fornece informações e insights oportunas sobre várias vulnerabilidades do SCA).
Conclusão
As vulnerabilidades de Inundação de CONTINUAÇÃO HTTP/2 apresentam um problema crítico que pode causar interrupções significativas nos servidores web.
Esta classe de vulnerabilidades é um lembrete de que, embora novos protocolos ofereçam melhorias, suas implementações devem ser cuidadosamente projetadas e testadas para garantir a segurança.
A Checkmarx está acompanhando ativamente essas vulnerabilidades e seu impacto no domínio de código aberto.
Nossa solução SCA cobre essas vulnerabilidades dentro de seu escopo, ajudando as organizações a identificar e mitigar riscos potenciais.
A Nova8, parceira distribuidora de empresas com tecnologia de ponta, como a Checkmarx, se posiciona na vanguarda da AppSec, utilizando AI para criar um ambiente de proteção mais ágil, adaptável e avançado.
A combinação de inovação tecnológica com parcerias estratégicas posiciona ambas as empresas não apenas como líderes em seus campos, mas também como visionárias na formação do futuro da segurança de aplicações.
Quer saber mais? Entre em contato conosco através do seu Account Manager na NOVA8 ou pelo canal parceiro de sua preferencia para marcar uma conversa.
–
SOBRE A CHECKMARX.
Checkmarx é líder em segurança de aplicativos, garantindo que empresas em todo o mundo possam proteger o desenvolvimento de seus aplicativos do código à nuvem. Impulsionados pela IA e nossas equipes líderes em pesquisa de segurança, proporcionamos às organizações uma visibilidade sem precedentes sobre o risco de aplicativos em todo o ciclo de vida do desenvolvimento de software – desde a primeira linha de código até a implantação e execução na nuvem. Nossa plataforma consolidada e serviços atendem às necessidades das empresas, melhorando a segurança e reduzindo o TCO, ao mesmo tempo em que constroem confiança entre AppSec, desenvolvedores e CISOs. Na Checkmarx, acreditamos que não se trata apenas de encontrar riscos, mas de remediá-los em toda a extensão do aplicativo e cadeia de suprimentos de software com um processo contínuo para todas as partes interessadas relevantes. São mais de 1.800 clientes, que inclui 60 por cento de todas as empresas da Fortune 100.
Por que Checkmarx? Checkmarx lidera em segurança de aplicativos, capacitando empresas em todo o mundo a proteger sua jornada de desenvolvimento de aplicativos, desde o código até a nuvem. Impulsionados pela IA e nossas equipes líderes em pesquisa de segurança, oferecemos uma visibilidade incomparável do risco de aplicativos ao longo do ciclo de vida de desenvolvimento de software – desde a criação do código inicial até a implantação e execução na nuvem. Nossa plataforma e serviços integrados atendem às necessidades das empresas, aprimorando a segurança, reduzindo o TCO e promovendo a confiança entre AppSec, desenvolvedores e CISOs. Na Checkmarx, estamos comprometidos não apenas em identificar riscos, mas também em remediá-los em toda a paisagem de aplicativos e cadeia de suprimentos de software, garantindo um processo contínuo para todas as partes interessadas envolvidas.
Originalmente Postado por Mario Teixeira em Checkmarx.com/blog/