← voltar
CVE-2023-44487highsob ataqueCWE-400

CVE-2023-44487

98Vexday Risk Score

Priorize a correção. Ela está sob exploração confirmada pelo CISA e tem prova de conceito pública.

ssvc Actcvss 7.5epss 100%
da publicação à arma0 dias
Publicada no NVD10 de out.
1ª PoC10 de out.
CISA KEV10 de out.
probabilidade de exploração
100%top 1% das CVEs
exploração observada
simCISA + VulnCheck
53 exploit(s) público(s)
O que os fabricantes declaram (VEX)

Declarações oficiais dos fabricantes em formato CSAF/VEX: se o produto deles está afetado, já corrigido ou descartado — e por quê. É afirmação do fabricante, não juízo do Vexday.

Afetado
41 produtos (112 componentes)
Red Hat OpenStack Platform 16.1 · Red Hat Enterprise Linux 6 · Red Hat Storage 3 · Red Hat OpenStack Platform 18.0 · Red Hat Software Collections · e outros 36
workaround: Users are strongly urged to update their software as soon as fixes are available. There are several mitigation approaches for this flaw. 1. If circumstances permit…
Corrigido
163 produtos (8.109 componentes)
Red Hat OpenShift Container Platform 4.13 · Red Hat OpenShift Container Platform 4.15 · Red Hat OpenShift Container Platform 4.14 · Red Hat OpenShift Container Platform 4.12 · Red Hat OpenShift Container Platform 4.11 · e outros 158
Não afetado
99 produtos (10.453 componentes)porque o código vulnerável não está presente no produto
Red Hat JBoss Enterprise Application Platform · Red Hat OpenShift Container Platform 4.14 · Red Hat Satellite 6.14 for RHEL 8 · Red Hat build of Quarkus 2.13.8.SP3 · Red Hat OpenShift Container Platform 4.13 · e outros 94
Ação exigida pela CISAprazo federal: 2023-10-31

Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.

Resumo

Rapid Reset é uma falha de design no protocolo HTTP/2 (CWE-400, consumo descontrolado de recursos) que permite negação de serviço explorando a forma como o protocolo trata cancelamento de streams via RST_STREAM. Não é uma falha de um produto específico: afeta praticamente toda implementação de servidor, proxy ou biblioteca HTTP/2 que não limite a taxa de abertura/cancelamento de streams por conexão. A CVE ganhou peso real porque foi usada em ataques DDoS de escala recorde entre agosto e outubro de 2023 contra Cloudflare, Google e AWS, antes mesmo da divulgação pública.

Detalhamento técnico

No HTTP/2 multiplexado, um cliente abre um stream enviando um frame HEADERS com a requisição e pode cancelá-lo unilateralmente a qualquer momento enviando RST_STREAM, sem coordenação com o servidor. O protocolo assume que o cancelamento é imediato e não impõe custo ao cliente por isso — mas o servidor, ao receber o HEADERS, já alocou estrutura de stream, fez parsing de headers (com decompressão HPACK), roteou a URL para um recurso e, em topologias de proxy reverso, muitas vezes já encaminhou a requisição ao backend antes de processar o RST_STREAM.

O ataque consiste em abrir um número muito grande de streams em uma única conexão TCP e cancelar cada um imediatamente após enviá-lo, sem esperar resposta. Como o cliente nunca deixa um stream aberto por muito tempo, ele nunca atinge o limite de streams concorrentes (SETTINGS_MAX_CONCURRENT_STREAMS) que normalmente restringe o abuso de HTTP/2. Isso rompe a defesa histórica contra flood de streams: o volume de requisições processadas por conexão deixa de depender do round-trip time e passa a depender só da largura de banda disponível no cliente.

O resultado é uma assimetria de custo brutal: o atacante paga quase nada para enviar HEADERS+RST_STREAM, enquanto o servidor paga o custo completo de alocação, parsing e roteamento para cada requisição cancelada. Em servidores com poucas conexões concorrentes é possível gerar um volume de "requisições por segundo" efetivas muito acima do que a infraestrutura foi dimensionada para tratar, sem nunca completar uma requisição de fato.

O CWE aplicável é CWE-400 (Uncontrolled Resource Consumption). Não há um único ponto de código vulnerável: cada implementação de HTTP/2 (Netty, Tomcat, Jetty, nghttp2, swift-nio-http2, golang.org/x/net, akka-http, H2O, Envoy, HAProxy, gRPC, hyper, entre outras) precisou de correção própria, porque a lacuna está na ausência de limite de taxa para reset de streams por conexão, não em uma implementação incorreta de um RFC.

Como é explorada

O vetor é rede pura: qualquer cliente TCP capaz de estabelecer conexões HTTP/2 pode disparar o ataque, sem autenticação, sem interação do usuário e sem pré-condição de configuração no lado do servidor — basta que o serviço aceite HTTP/2. A complexidade de execução é baixa; existem PoCs públicas (por exemplo o gerador de tráfego usado para reproduzir o comportamento, referenciado nos advisories) que abrem e resetam streams em loop.

Na prática documentada, os operadores de CDN e provedores de nuvem relataram exploração massiva entre agosto e outubro de 2023, com picos de requisições por segundo muito acima de qualquer DDoS de camada 7 registrado até então (a Cloudflare descreveu ataques na ordem de centenas de milhões de requisições por segundo usando botnets relativamente modestos em número de máquinas, justamente pela eficiência da técnica). A CISA confirmou exploração ativa no mundo real, o que motivou a inclusão no catálogo KEV.

O resultado final do ataque é indisponibilidade do serviço — esgotamento de threads, conexões de worker, memória ou CPU do servidor/proxy, ou saturação de backend por requisições encaminhadas antes do cancelamento chegar — sem qualquer comprometimento de confidencialidade ou integridade (por isso C:N/I:N no vetor CVSS, com impacto concentrado em A:H).

Versões

Afetadas
Não há uma faixa única — a vulnerabilidade é de design de protocolo (HTTP/2) e afeta múltiplas implementações independentes, cada uma com sua própria faixa vulnerável. Exemplos documentados: golang.org/x/net < 0.17.0; nghttp2 < 1.57.0; swift-nio-http2 < 1.28.0; akka-http-core < 10.5.3 (branches 2.12/2.13) e <= 10.1.15 (branch 2.11, sem correção); Apache Tomcat 8.5.x < 8.5.94, 9.0.x < 9.0.81, 10.1.x < 10.1.14, 11.0.0-M1 a < 11.0.0-M12; Eclipse Jetty 9.3.x/9.4.x < 9.4.53, 10.0.x < 10.0.17, 11.0.x < 11.0.17, 12.0.x < 12.0.2. Outras implementações afetadas (Netty, Envoy, HAProxy, gRPC-go, hyper, Node.js, .NET, Caddy, H2O, proxygen, Traffic Server) têm faixas próprias registradas em seus respectivos advisories.
Corrigidas em
Varia por projeto — não há versão de correção única. Confirmadas nas fontes: golang.org/x/net 0.17.0; nghttp2 1.57.0; swift-nio-http2 1.28.0; akka-http-core 10.5.3; Apache Tomcat 8.5.94 / 9.0.81 / 10.1.14 / 11.0.0-M12; Eclipse Jetty 9.4.53 / 10.0.17 / 11.0.17 / 12.0.2. Para os demais componentes (Netty, Envoy, HAProxy, gRPC, hyper, Node.js, .NET, Caddy, H2O, proxygen, Traffic Server, nginx), consultar o advisory específico do respectivo projeto para a versão exata corrigida.

Como se proteger

Não existe um único patch de fornecedor: a correção precisa ser aplicada implementação por implementação, e a lista de versões corrigidas varia por projeto. Entre as citadas nos advisories: golang.org/x/net corrigido em 0.17.0; nghttp2 corrigido em 1.57.0; swift-nio-http2 em 1.28.0; akka-http-core em 10.5.3 (ramos 2.12/2.13) — o ramo 2.11 (<=10.1.15) não recebeu correção; Apache Tomcat em 8.5.94, 9.0.81, 10.1.14 e 11.0.0-M12; Eclipse Jetty em 9.4.53, 10.0.17, 11.0.17 (módulos http2) e 12.0.2 (módulo jetty-http2). Outros projetos afetados incluem Netty, Envoy, HAProxy, gRPC-go, hyper, Node.js, .NET/ASP.NET Core, Caddy, Traffic Server, H2O, proxygen e Tengine, cada um com seu próprio ciclo de release — checar o advisory específico do stack em uso é obrigatório, já que a faixa de versão vulnerável e a corrigida não são as mesmas entre projetos.

Quando atualizar não é viável de imediato, o paliativo real é limitar a taxa de reset de streams por conexão (janela deslizante de RST_STREAM, como implementado no swift-nio-http2 1.28) ou derrubar a conexão de clientes que excedem um número razoável de streams abertos/cancelados por segundo — algumas implementações expõem isso via callback (nghttp2_on_frame_recv_callback, contando RST_STREAM) ou via configuração de limite de conexões HTTP/2 e goaway forçado. Reduzir MAX_CONCURRENT_STREAMS não mitiga o ataque, porque o Rapid Reset especificamente contorna esse limite ao nunca deixar streams simultaneamente abertos. Desabilitar HTTP/2 e forçar HTTP/1.1 remove a exposição por completo, ao custo de multiplexação e performance — é mitigação funcional, mas não é solução, apenas troca de superfície.

O que não funciona: rate limiting apenas por número de conexões TCP ou por requisições HTTP completas não pega o ataque, porque as requisições nunca completam — o controle precisa olhar para frames RST_STREAM e HEADERS dentro da conexão HTTP/2, não para requisições HTTP terminadas nos logs de acesso tradicionais.

Como detectar

O sinal característico é o padrão HEADERS seguido imediatamente de RST_STREAM, repetido em alto volume dentro de uma mesma conexão TCP/HTTP2 — um número de streams abertos-e-cancelados por segundo muito acima do padrão de navegação humana ou de clientes legítimos. Ferramentas com telemetria de frame HTTP/2 (proxies, WAFs com inspeção de protocolo, ou logging customizado de RST_STREAM via callback da biblioteca HTTP/2) conseguem captar isso; logs de acesso HTTP tradicionais não mostram nada de anormal, porque as requisições nunca completam e frequentemente nem aparecem no log de acesso do servidor de aplicação.

Em nível de rede, indicadores indiretos incluem picos de CPU/memória do processo servidor sem aumento correspondente de requisições completadas nos logs, aumento de conexões HTTP/2 de curta duração com contagem de streams por conexão anormalmente alta, e alertas de rate limiting de conexão disparando repetidamente para os mesmos IPs de origem — mas sem visibilidade a nível de frame HTTP/2, a detecção fica limitada a sintomas de esgotamento de recursos, não à causa raiz.

Pesquisado e redigido com IA a partir do advisory do fornecedor e de análises públicas, com as fontes acima. Confira sempre a versão corrigida no advisory oficial antes de agir.
The HTTP/2 protocol allows a denial of service (server resource consumption) because request cancellation can reset many streams quickly, as exploited in the wild in August through October 2023.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Produtos afetados
n/a · n/a
PoCs públicas encontradas53
exploitdbwww.exploit-db.com/exploits/52426não verificadogithubgithub.com/bcdannyboy/CVE-2023-44487247githubgithub.com/secengjeff/rapidresetclient76githubgithub.com/Appsynergy-io/CVE-2023-4448756githubgithub.com/imabee101/CVE-2023-4448756githubgithub.com/studiogangster/CVE-2023-4448722githubgithub.com/nxenon/cve-2023-4448715githubgithub.com/threatlabindonesia/CVE-2023-44487-HTTP-2-Rapid-Reset-Exploit-PoC11githubgithub.com/ndrscodes/http2-rst-stream-attacker6githubgithub.com/tpirate/cve-2023-44487-POC2githubgithub.com/ReToCode/golang-CVE-2023-444872githubgithub.com/moften/CVE-2023-44487-HTTP-2-Rapid-Reset-Attack2githubgithub.com/madhusudhan-in/CVE_2023_44487-Rapid_Reset1githubgithub.com/tahaXafous/CVE-2023-44487-dos1githubgithub.com/aulauniversal/CVE-2023-444871githubgithub.com/CerberusMrXi/CVE-2023-44487-HTTP2-DoS-Rapid-Reset-Exploit1githubgithub.com/zanks08/cve-2023-44487-demo1githubgithub.com/sigridou/CVE-2023-44487-0githubgithub.com/BMG-Black-Magic/CVE-2023-444870githubgithub.com/ramonzx6/rapid-reset-check0githubgithub.com/sn130hk/CVE-2023-444870githubgithub.com/TLevente20/HTTP-2-RapidReset-CVE-2023-44487-Testlab0githubgithub.com/Hirokiii/CVE-2023-444870githubgithub.com/ByteHackr/CVE-2023-444870githubgithub.com/pabloec20/rapidreset0githubgithub.com/madhantr0/http2-security-lab0githubgithub.com/TYuan0816/cve-2023-444870githubgithub.com/ReGeLePuMa/HTTP-2-Rapid-Reset-DDos0githubgithub.com/sastraadiwiguna-purpleeliteteaming/DDoS-Purple-Teaming-Offensive-Multi-Vector-7-Tier-Defensive-Holistic-Blueprint-0vulncheckvulncheck.com/xdb/a64a9ab88fd5não verificadovulncheckvulncheck.com/xdb/6dd9a135b0d8não verificadovulncheckvulncheck.com/xdb/54af2e2a4404não verificadovulncheckvulncheck.com/xdb/0f9d4f2a05f8não verificadovulncheckvulncheck.com/xdb/f0fe97192105não verificadovulncheckvulncheck.com/xdb/de08f4feae4cnão verificadovulncheckvulncheck.com/xdb/1a4725458b4anão verificadovulncheckvulncheck.com/xdb/34690740d2d3não verificadovulncheckvulncheck.com/xdb/f5782b81dab1não verificadovulncheckvulncheck.com/xdb/b3d01bf4f362não verificadovulncheckvulncheck.com/xdb/c3bd71694fc8não verificadovulncheckvulncheck.com/xdb/5331b5b1af5anão verificadovulncheckvulncheck.com/xdb/dcaf0e10df00não verificadovulncheckvulncheck.com/xdb/ad0b2af920fdnão verificadovulncheckvulncheck.com/xdb/b81499235b44não verificadovulncheckvulncheck.com/xdb/8fa92d2789bdnão verificadovulncheckvulncheck.com/xdb/9fffe4fac461não verificadovulncheckvulncheck.com/xdb/1a0aa0f9ed90não verificadovulncheckvulncheck.com/xdb/e7e84a1490d3não verificadovulncheckvulncheck.com/xdb/f2040c1e3da3não verificadovulncheckvulncheck.com/xdb/9ae3b81b8bd9não verificadovulncheckvulncheck.com/xdb/12f36ea6cd3enão verificadovulncheckvulncheck.com/xdb/95898a14699anão verificadovulncheckvulncheck.com/xdb/2a1d7187487enão verificado
⚠ Recursos públicos, para você avaliar a exposição de sistemas que controla ou está autorizado a testar. Teste apenas com autorização.