Node.js publica 10 CVEs de emergência com falhas altas em HTTP/2 e no Permission Model

Versões 22.23.2, 24.18.1 e 26.5.1 foram liberadas em 29 de julho para corrigir memória em HTTP/2, uso após liberação e bypass do modelo de permissão que sustenta cargas isoladas.
A fundação Node.js publicou na quarta-feira (29 de julho) uma rodada de segurança que corrige 10 vulnerabilidades em uma única janela, três delas classificadas como HIGH. As versões 22.23.2, 24.18.1 e 26.5.1 concentram os patches, junto de bumps em undici (para 6.28.0, 7.29.0 e 8.9.0) e no parser llhttp 9.4.3. O lançamento vinha marcado para 28 de julho e foi adiado 24 horas por problemas de infraestrutura do próprio time de release.
A proporção de HIGH é o que chama atenção: em rodadas anteriores de 2026, Node.js liberou entre uma e duas críticas por trimestre. Três de uma vez, todas com vetor de rede ou de escape de sandbox, marca a segunda janela em cinco anos em que a linha 24 LTS recebe patch com peso equivalente ao das rodadas de 2021, na esteira dos bugs de HTTP/1.1 request smuggling.
O que está em cada HIGH
A CVE-2026-56846 atinge o servidor HTTP/2 nas linhas 22 e 24. Cabeçalhos retidos na sessão HTTP/2 conseguem escapar do limite de maxSessionMemory, o que abre caminho para exaustão remota de memória sem autenticação. Basta um cliente malicioso, uma sessão longa e uma sequência de headers grandes bem formatados. A mitigação sem patch é reduzir maxHeaderListPairs e maxSessionMemory para valores agressivos, ao custo de compatibilidade com clientes reais.
A CVE-2026-56848 atinge as três linhas ativas. É um use-after-free em nghttp2_session_mem_send quando o envio da sessão é reentrado dentro de um callback. Explora-se com pacotes HTTP/2 forjados que forçam o servidor a entrar em um ciclo de envio dentro de outro, e a corrupção de heap resultante permite, em cenários realistas, execução de código arbitrário. O time da nghttp2 upstream já havia sido notificado antes da divulgação coordenada.
A CVE-2026-58043 atinge o Permission Model, funcionalidade adicionada em Node 20 para restringir chamadas a arquivos e a rede via flags --allow-fs-read e --allow-fs-write. O bug está na estrutura radix-tree que casa prefixos de caminho: uma aplicação autorizada a ler /var/data pode, com abuso de prefix boundary, ler /var/data.pem ou /var/database, arquivos que o operador acreditava fora da allowlist. Para quem confia no Permission Model para isolar plugins ou funções de terceiros dentro do mesmo processo, o pressuposto de containment não vale até o upgrade.
Uma mensagem sobre o Permission Model
A correção em si é direta. O que importa é o padrão. O Permission Model foi promovido de experimental a stable no ciclo do Node 22, e times de plataforma em fintechs, provedores de serviço e SaaS começaram a incorporá-lo como camada barata de defesa em profundidade contra bibliotecas terceirizadas maliciosas. Com CVE-2026-58043 e as três LOW adicionais nesta rodada (58039, 56847, 58044) mostrando que o Permission Model tem furos em pelo menos quatro caminhos independentes, o CISO que assinou o waiver de RCE em uma app crítica com base nessa mitigação precisa reabrir a análise de risco.
A leitura sensata não é abandonar a feature, é rebaixar o crédito que ela recebe no modelo de ameaça. Isolamento por processo separado, seccomp e cgroups seguem entregando garantias que o Permission Model puro ainda não entrega.
Onde a dor cai primeiro
Nos Estados Unidos, os provedores de plataforma serverless que executam funções de cliente sobre runtime Node.js gerenciado, como AWS Lambda, Vercel e Cloudflare, precisam decidir se rolam versão nova antes da manutenção regular ou se aplicam mitigação por WAF na frente do HTTP/2. AWS já historicamente publica o cronograma com dois a quatro dias de atraso frente ao release upstream, e clientes com contrato Enterprise costumam receber a nota específica sobre HTTP/2 antes do público geral.
No Brasil, fintechs e empresas do setor de pagamentos concentram uso pesado do runtime, incluindo Nubank, Stone e Ebanx. Para times de SRE que ainda mantêm frota grande em Node 22 fora de container atualizado automaticamente, a rodada obriga uma janela de deploy fora do horário comercial nos próximos dias. Na Índia, TCS e Infosys sustentam back-ends corporativos de clientes globais que rodam Node.js em contratos de sustentação, e o time de application security desses parceiros costuma ser o primeiro a ser cobrado por comprovante de patch.
O detalhe do llhttp
Enquanto o foco vai para HTTP/2, o bump silencioso do llhttp para 9.4.3 corrige o CVE-2026-58044 de request smuggling em HTTP/1.1 quando cabeçalhos são truncados. É o tipo de correção que raramente vira manchete e que aparece no post-mortem do incidente do próximo trimestre. Vale a atualização mesmo em serviços que já bloqueiam HTTP/2 por política, como muitos brokers de API financeira ainda fazem.