Em 27 de outubro de 2026, a CISA incluiu a CVE-2026-111497 no catálogo Known Exploited Vulnerabilities (KEV), com base em evidências de exploração ativa. Para equipes que operam aplicações Node.js, a atualização torna prioritário localizar onde dados Brotli não confiáveis chegam a um decodificador e instalar a versão corrigida correspondente.
O que a inclusão na KEV significa para a CVE-2026-111497
A falha é uma escrita fora dos limites no decodificador Brotli distribuído com o Node.js. A inclusão na KEV associa a vulnerabilidade a evidências de exploração ativa, o que aumenta a prioridade de resposta para quem mantém sistemas afetados.
O Node.js classifica o impacto como alto. Segundo o projeto, uma entrada malformada pode derrubar o processo, expor memória ou, potencialmente, permitir execução remota de código (RCE).
A exposição depende de dados não confiáveis chegarem ao decodificador
O defeito envolve uma troca de bloco malformada que o decodificador interpreta como um pedido por mais dados. Em seguida, o decodificador em fluxo continua acrescentando bytes a um buffer interno de oito bytes, causando a escrita fora dos limites.
A condição relevante é que dados Brotli controlados por um atacante cheguem a um decodificador vulnerável. Usar Brotli para comprimir dados, por si só, não caracteriza esse caminho de exposição.
No Node.js, a descompressão pode ocorrer em chamadas diretas a node:zlib ou sem uma chamada explícita da aplicação a essa biblioteca. O fetch() integrado decodifica respostas Brotli, e o Express 5 com body-parser pode descomprimir corpos de requisição quando configurado para isso. Um servidor HTTP básico do Node.js não decodifica um corpo Brotli simplesmente por recebê-lo.
Builds corrigidas do Node.js
O projeto Node.js corrigiu as linhas compatíveis 22.x, 24.x e 26.x nas versões abaixo. A equipe deve comparar esses números com a linha usada por cada aplicação.
| Linha do Node.js | Versão corrigida |
| 22.x | 22.23.4 |
| 24.x | 24.22.1 |
| 26.x | 26.12.1 |
O Node.js considera versões em fim de vida afetadas quando publica uma atualização de segurança. Por isso, a tabela se aplica às linhas compatíveis listadas, não a versões fora de suporte.
O que o teste da Imperva demonstrou
A Imperva relatou execução de código em testes com a imagem oficial do Node.js 24.22.0 para Linux arm64. Os caminhos examinados incluíram respostas decodificadas pelo fetch() integrado e corpos de requisição processados por Express 5 com body-parser configurado para descompressão.
Foram necessárias várias tentativas no ambiente testado. A Imperva também relatou que o Node.js 24.22.1 rejeitou as mesmas entradas.
Como localizar a exposição e aplicar a correção
Comece pelos pontos em que a aplicação decodifica Brotli: chamadas a node:zlib, uso do fetch() e configurações de middleware que descomprimem corpos de requisição. Inclua na análise contêineres e aplicações autocontidas, que podem levar sua própria cópia do runtime.
Atualize o runtime ou a biblioteca afetada. Se a aplicação incorpora uma versão própria, reconstrua o artefato ou a imagem com a correção, reimplante-o, reinicie o serviço e confirme a versão que está em execução. Atualizar apenas o Node.js instalado no servidor pode não substituir um runtime empacotado dentro da aplicação.
Controles temporários no proxy, como rejeitar corpos de requisição Brotli, reduzem a exposição nos caminhos de entrada correspondentes; não protegem um cliente que decodifica uma resposta maliciosa. A Aikido também alerta que retirar br do cabeçalho Accept-Encoding não basta para impedir esse caminho, pois um servidor ainda pode enviar uma resposta Brotli.