Node.js corrige falha crítica no Brotli que pode permitir execução remota de código

Uma vulnerabilidade crítica no decodificador Google Brotli afeta as linhas suportadas do Node.js. Identificada como CVE-2026-111497, a falha permite que uma entrada Brotli malformada escreva além do limite de um buffer interno. O impacto pode incluir corrupção de memória, encerramento do processo, exposição de dados e potencial execução remota de código.

O registro oficial da CVE atribui pontuação CVSS 4.0 de 9,2, classificada como crítica. O problema foi publicado em 22 de outubro de 2026 e atualizado no dia seguinte. O Node.js lançou correções para as linhas 22.x, 24.x e 26.x em 21 de outubro, na atualização de segurança de outubro.

Como a falha funciona

O Brotli é um formato e uma biblioteca de compressão usados por servidores, proxies, navegadores e aplicações para reduzir o tamanho de respostas e arquivos. O Node.js inclui um decodificador Brotli acessível por meio do módulo node:zlib.

Segundo o aviso do Node.js, uma troca inválida de bloco no fluxo Brotli era interpretada como uma solicitação temporária por mais dados, e não como um erro permanente de formato. O decodificador continuava anexando bytes a um buffer interno de oito bytes. Com uma entrada cuidadosamente construída, o processo podia escrever além do fim desse buffer.

Essa escrita fora dos limites pode corromper o estado da memória do processo. Dependendo do contexto, o resultado pode ser uma falha do serviço, a divulgação de conteúdo da memória ou a execução de código controlado pelo atacante.

Quem pode estar exposto

A vulnerabilidade afeta aplicações Node.js que aceitam ou processam dados Brotli controlados por terceiros. Um caso comum envolve endpoints HTTP que descomprimem corpos de requisição, gateways que processam conteúdo comprimido ou serviços que leem arquivos Brotli enviados por usuários.

Também devem ser avaliados serviços que usam bibliotecas npm, frameworks ou componentes nativos que chamam o decodificador Brotli fornecido pelo runtime. A simples presença do Node.js no servidor não significa que a aplicação esteja explorável; é necessário verificar se dados não confiáveis chegam a uma rotina de descompressão.

O problema não é limitado a aplicações web. Ferramentas de linha de comando, workers, filas e pipelines de processamento também podem receber fluxos Brotli de origem externa. Ambientes que apenas comprimem dados, sem decodificá-los, tendem a ter uma exposição diferente, mas ainda devem confirmar o fluxo real da aplicação.

Versões afetadas e corrigidas

O projeto Node.js informa que a CVE-2026-111497 afeta as linhas 22.x, 24.x e 26.x. As versões corrigidas são:

  • Node.js 22.23.4, linha LTS;
  • Node.js 24.22.1, linha LTS;
  • Node.js 26.12.1, linha Current.

O registro da CVE também cobre o componente Brotli upstream nas versões 1.0.3 até antes de 1.0.10, 1.1.0 até antes de 1.1.1 e 1.2.0 até antes de 1.2.1. As correções do projeto Brotli correspondem às versões 1.0.10, 1.1.1 e 1.2.1.

Aplicações que usam uma cópia própria, distribuição independente ou binding nativo do Brotli precisam verificar a versão da biblioteca separadamente. Atualizar o Node.js corrige o Brotli embutido no runtime, mas não necessariamente atualiza uma cópia vendorizada pelo projeto da aplicação.

Como verificar a exposição

Comece inventariando todos os runtimes Node.js usados em produção, homologação, funções serverless, containers, workers e ferramentas de CI/CD. Registre a versão efetivamente executada, pois a versão declarada em um arquivo de projeto pode não ser a mesma instalada na imagem ou no servidor.

Use node --version no ambiente em execução e confira as imagens base dos containers. Revise também arquivos de lock, dependências nativas, módulos que utilizam node:zlib e configurações de proxy ou servidor que habilitem Brotli.

Procure rotas que descomprimam dados antes da autenticação ou sem limites de tamanho. Observe APIs que aceitam uploads, webhooks, requisições comprimidas e arquivos de terceiros. O risco aumenta quando um atacante pode fornecer o fluxo Brotli diretamente e quando a descompressão ocorre em um processo com muitos privilégios.

O que fazer imediatamente

Atualize o runtime. Instale Node.js 22.23.4, 24.22.1 ou 26.12.1, conforme a linha adotada pelo ambiente. Prefira uma linha LTS para sistemas de produção e planeje a retirada de versões fora de suporte, que permanecem vulneráveis quando uma atualização de segurança é publicada.

Reconstrua as imagens. Em containers e funções serverless, não basta atualizar o host. Gere novas imagens ou artefatos a partir de uma base corrigida, invalide caches de build e confirme a versão dentro do artefato final.

Atualize cópias independentes do Brotli. Se a aplicação compila ou distribui a biblioteca Brotli separadamente, atualize para 1.0.10, 1.1.1 ou 1.2.1, conforme a linha usada. Verifique os advisories do sistema operacional e dos mantenedores da distribuição.

Reduza a exposição durante a manutenção. Limite endpoints que aceitam conteúdo comprimido, aplique limites de tamanho e tempo de processamento e evite executar o processo Node.js com privilégios administrativos. Essas medidas reduzem o impacto, mas não substituem a atualização.

Investigação e monitoramento

Revise logs de requisições e procure padrões anormais em endpoints que processam Brotli. Sinais relevantes incluem encerramentos inesperados do processo, reinicializações repetidas, respostas 500, aumento de consumo de memória e requisições com tamanhos ou proporções de compressão fora do padrão.

Correlacione esses eventos com logs do proxy, balanceador, WAF, container runtime e sistema operacional. Uma exploração pode causar apenas uma falha de disponibilidade, mas também pode resultar em execução dentro do processo. Procure processos-filhos inesperados, conexões de saída, arquivos novos e alterações em variáveis ou configurações.

Se houver indícios de execução de código, preserve logs e memória quando possível, isole o serviço e avalie tokens, chaves e credenciais acessíveis pelo processo Node.js. Após a contenção, faça uma reconstrução a partir de artefatos confiáveis e rotacione segredos potencialmente expostos.

Conclusão

A CVE-2026-111497 transforma um fluxo Brotli malformado em um possível vetor de corrupção de memória e execução de código em aplicações Node.js que descomprimem entradas controladas por terceiros. A gravidade é crítica no registro CVE, e o componente vulnerável está presente em várias linhas atuais do runtime.

As equipes devem atualizar para Node.js 22.23.4, 24.22.1 ou 26.12.1, reconstruir imagens e verificar bibliotecas Brotli independentes. A auditoria deve se concentrar nos caminhos de descompressão, nos serviços expostos e nos processos que executam com privilégios elevados.

Fontes primárias

Node.js: October 2026 Security Releases.

Node.js: Node.js 22.23.4 LTS, Node.js 24.22.1 LTS e Node.js 26.12.1.

CVE.org: CVE-2026-111497 — Out-of-Bounds Write in Google Brotli Decoder.