← volver
CVE-2023-44487highbajo ataqueCWE-400

CVE-2023-44487

98Vexday Risk Score

Prioriza la corrección. Ella está bajo explotación confirmada por CISA y tiene prueba de concepto pública.

ssvc Actcvss 7.5epss 100%
de la publicación al arma0 días
Publicada en NVD10 oct
1ª PoC10 oct
CISA KEV10 oct
probabilidad de explotación
100%top 1% de las CVE
explotación observada
CISA + VulnCheck
53 exploit(s) público(s)
Lo que declaran los fabricantes (VEX)

Declaraciones oficiales de los fabricantes en formato CSAF/VEX: si su producto está afectado, ya corregido o descartado — y por qué. Es afirmación del fabricante, no juicio de Vexday.

Afectado
41 productos (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 · y otros 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…
Corregido
163 productos (8109 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 · y otros 158
No afectado
99 productos (10.453 componentes)porque el código vulnerable no está presente en el producto
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 · y otros 94
Acción exigida por CISAplazo 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.

Resumen

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.

Detalle 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.

Cómo se explota

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

Versiones

Afectadas
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.
Corregidas en
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.

Cómo protegerse

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.

Cómo 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.

Investigado y redactado con IA a partir del advisory del fabricante y análisis públicos, con las fuentes citadas. Verifica siempre la versión corregida en el advisory oficial antes de actuar.
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
Productos afectados
n/a · n/a
PoCs públicas encontradas53
exploitdbwww.exploit-db.com/exploits/52426no 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/a64a9ab88fd5no verificadovulncheckvulncheck.com/xdb/6dd9a135b0d8no verificadovulncheckvulncheck.com/xdb/54af2e2a4404no verificadovulncheckvulncheck.com/xdb/0f9d4f2a05f8no verificadovulncheckvulncheck.com/xdb/f0fe97192105no verificadovulncheckvulncheck.com/xdb/de08f4feae4cno verificadovulncheckvulncheck.com/xdb/1a4725458b4ano verificadovulncheckvulncheck.com/xdb/34690740d2d3no verificadovulncheckvulncheck.com/xdb/f5782b81dab1no verificadovulncheckvulncheck.com/xdb/b3d01bf4f362no verificadovulncheckvulncheck.com/xdb/c3bd71694fc8no verificadovulncheckvulncheck.com/xdb/5331b5b1af5ano verificadovulncheckvulncheck.com/xdb/dcaf0e10df00no verificadovulncheckvulncheck.com/xdb/ad0b2af920fdno verificadovulncheckvulncheck.com/xdb/b81499235b44no verificadovulncheckvulncheck.com/xdb/8fa92d2789bdno verificadovulncheckvulncheck.com/xdb/9fffe4fac461no verificadovulncheckvulncheck.com/xdb/1a0aa0f9ed90no verificadovulncheckvulncheck.com/xdb/e7e84a1490d3no verificadovulncheckvulncheck.com/xdb/f2040c1e3da3no verificadovulncheckvulncheck.com/xdb/9ae3b81b8bd9no verificadovulncheckvulncheck.com/xdb/12f36ea6cd3eno verificadovulncheckvulncheck.com/xdb/95898a14699ano verificadovulncheckvulncheck.com/xdb/2a1d7187487eno verificado
⚠ Recursos públicos, para evaluar la exposición de sistemas que controlas o estás autorizado a probar. Prueba solo con autorización.