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.
$ node -vv22.20.0# 22.x é corrigida na v22.23.4: afetado$ docker run --rm api:prod node -vv20.19.5# A imagem em produção roda 20.x: sem patch$ cat .nvmrc22# O repositório fixa a linha, não o patchv26.12.1 · v24.22.1 · v22.23.4 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.
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 -vno servidor, ou dentro da imagem Docker, mostra uma versão anterior à da sua linha. - O seu Dockerfile usa uma tag como
node:22e 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.
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.
- 01 As linhas em fim de vida não recebem esta correção nem as próximas.
- 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.
- 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.
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 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.
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.
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.
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.
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.
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.
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.
Onde o Node.js fica sem atualizar
Tem serviços no Node 20 e não sabe quanto custa migrá-los?
Consultoria gratuita →Perguntas frequentes sobre a release de segurança do Node.js
Quais versões do Node.js corrigem CVE-2026-111497?
Uso Node 20. Estou afetado?
Isso me afeta se eu não uso Brotli?
Basta trocar a imagem base do Docker?
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.
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.