Pular para o conteúdo principal
CVE-2026-111497 · Brotli RCE

Patch de segurança Node.js (outubro de 2026)

Em 21 de outubro de 2026 o Node.js publicou uma release de segurança com 10 CVEs para as linhas 26.x, 24.x e 22.x. A mais grave, CVE-2026-111497, é uma escrita fora dos limites no descompressor Brotli que permite execução remota de código. As versões corrigidas são v26.12.1, v24.22.1 e v22.23.4; 20.x e 25.x estão em fim de vida e não recebem patch.

Você tem esta vulnerabilidade? Atualizamos o Node.js nos seus servidores, imagens Docker e pipelines, verificamos que a aplicação continua respondendo igual e planejamos a troca de linha se você ainda estiver no 20.x ou 25.x.

O que aconteceu

Dez CVEs numa release, quatro de severidade alta

A release corrige quatro vulnerabilidades altas, três médias e três baixas. Até 21 de outubro não havia relato de exploração de nenhuma delas.

CVE-2026-111497 é uma escrita fora dos limites no descompressor Brotli que permite execução remota de código. Não é preciso chamar o zlib diretamente para ficar exposto: segundo a Cyberkendra, o Express 5 e o fetch() descomprimem Brotli automaticamente.

As outras três altas afetam a rede. CVE-2026-106069 e CVE-2026-105483 permitem contornar a verificação de hostname em certificados TLS, que é a que garante que a sua aplicação fala com o servidor certo quando faz uma requisição HTTPS. CVE-2026-105482 faz o dns.resolve truncar nomes que contêm um caractere NUL.

A mesma release rejeita cadeias de certificados que usam as chaves comprometidas da eMudhra, a autoridade certificadora indiana cujos oito certificados intermediários foram gerados com chaves fracas. As linhas 20.x e 25.x, em fim de vida, não recebem nada disso.

Fontes: nodejs.org: October 2026 Security Releases

Você está afetado?

Versões corrigidas do Node.js

Se um serviço roda uma versão anterior à da sua linha, está afetado. No 20.x e no 25.x não há versão corrigida: a saída é trocar de linha.

Linha Corrigido em Nota
26.x v26.12.1
24.x v24.22.1
22.x v22.23.4
25.x Sem patch Fim de vida: migrar para 26.x
20.x Sem patch Fim de vida: migrar para 22.x ou 24.x

Verifique isto

  • Você tem APIs, backends ou renderização no servidor (Next.js, Nuxt, Astro, NestJS, Express) rodando em Node.js.
  • node -v no servidor, ou dentro da imagem Docker, mostra uma versão anterior à da sua linha.
  • O seu Dockerfile usa uma tag como node:22 e a imagem não foi reconstruída: continua com a versão que existia quando foi gerada.
  • Algum serviço ainda está no 20.x ou 25.x: essas linhas não terão patch.
  • A sua aplicação descomprime Brotli (com fetch(), Express 5 ou um proxy próprio) ou faz requisições HTTPS a terceiros.
Enquanto isso

Se você ainda está no 20.x ou 25.x

O Node.js não publicou mitigações temporárias para esta release. Numa linha sem suporte, a única correção é sair dela.

  1. 01 As linhas em fim de vida não recebem esta correção nem as próximas.
  2. 02 Passar do 20.x para o 22.x ou 24.x costuma exigir revisar dependências com módulos nativos e testar o build completo.
  3. 03 Durante a migração, vale saber quais endpoints aceitam corpos comprimidos e quais serviços baixam conteúdo de fora: são os primeiros a migrar.
Como fazemos

Sete passos, nesta ordem

Aplicamos o mesmo procedimento em cada servidor: primeiro saber qual versão roda em cada lugar, depois corrigir e, no fim, verificar que ninguém entrou antes do patch.

Inventário
versão por servidor
Mitigação
temporária
Atualização
v26.12.1 · v24.22.1 · v22.23.4
Verificação
em produção
Indícios
logs · arquivos
Segredos
se necessário
Acompanhamento
novos avisos
01

Inventário de versões

Localizamos onde o Node.js roda: servidores, imagens Docker, funções serverless, runners de CI e o .nvmrc ou o campo engines de cada repositório. Cada lugar pode ter uma versão diferente.

02

Mitigação imediata

Sem mitigação oficial, começamos pelos serviços mais expostos: os que aceitam corpos com Brotli ou baixam conteúdo de terceiros vão primeiro na fila.

03

Atualização

Subimos para v26.12.1, v24.22.1 ou v22.23.4, reconstruímos as imagens e fixamos a versão no Dockerfile, no .nvmrc e no CI. Se você está no 20.x ou 25.x, planejamos a troca de linha.

04

Verificação

Verificamos a versão dentro do contêiner em produção, rodamos os testes e conferimos que as chamadas HTTPS a terceiros continuam validando certificados.

05

Revisão de indícios de comprometimento

Revisamos logs da aplicação e do sistema em busca de quedas do processo, reinícios sem explicação e processos ou arquivos que não deveriam estar ali.

06

Rotação de segredos, se necessário

Se houver sinais de acesso, trocamos as variáveis de ambiente sensíveis: chaves de API, credenciais de banco de dados e tokens.

07

Acompanhamento de novos avisos

Deixamos registrada a versão de cada serviço e a data de fim de vida da sua linha, para que a próxima release de segurança comece desse inventário.

Antes e depois

Onde o Node.js fica sem atualizar

Atualizar no olho Com o procedimento
O Node é atualizado no servidor, mas a imagem Docker foi gerada há dois meses
Imagens reconstruídas e versão verificada dentro do contêiner
O CI testa com uma versão e a produção roda outra
A mesma versão fixada no Dockerfile, no .nvmrc e no pipeline
Um microsserviço no 20.x fica de fora porque ninguém se lembrou dele
Plano de migração para cada serviço numa linha sem suporte
Os segredos do .env continuam iguais, mesmo com o processo caindo sem explicação
Segredos trocados quando há indícios

Tem serviços no Node 20 e não sabe quanto custa migrá-los?

Consultoria gratuita →
FAQ

Perguntas frequentes sobre a release de segurança do Node.js

Quais versões do Node.js corrigem CVE-2026-111497?
v26.12.1, v24.22.1 e v22.23.4, publicadas em 21 de outubro de 2026. As linhas 20.x e 25.x estão em fim de vida e não têm versão corrigida.
Uso Node 20. Estou afetado?
O Node.js não publica patches para o 20.x, então nenhuma versão dessa linha corrige estas falhas. A saída é passar para o 22.x ou 24.x, revisando antes as dependências com módulos nativos e testando o build completo.
Isso me afeta se eu não uso Brotli?
Talvez você use sem saber: segundo a Cyberkendra, o fetch() e o Express 5 descomprimem Brotli automaticamente. Além disso, a release corrige outras falhas, como os dois bypass da verificação de hostname em TLS, que afetam qualquer aplicação que faça requisições HTTPS.
Basta trocar a imagem base do Docker?
É preciso reconstruir a imagem e fazer o deploy de novo. Um contêiner em execução continua com a versão com que foi gerado, mesmo que a tag node:22 já aponte para uma versão nova.
Vamos começar

Conte onde o seu Node.js roda

Começamos pelo inventário: qual versão cada serviço usa, qual precisa ser atualizado primeiro e qual linha exige migração.

Patch de segurança Node.js (outubro 2026)

Conte-nos seu desafio. Propomos uma solução.

Sem compromisso. Em menos de 24 horas, você recebe uma proposta com escopo, cronograma e orçamento. Sem letras miúdas.

Agende uma call gratuita →