Blog

Boletim técnico · 23 de outubro de 2026

Node.js: atualize as linhas suportadas após os CVEs de outubro

O Node.js publicou correções de alta severidade para DNS, validação TLS e Brotli. A prioridade é atualizar o runtime efetivamente usado por cada serviço e validar o comportamento crítico da aplicação depois do rollout.

Prioridade alta.

Ambientes em Node.js 22.x, 24.x ou 26.x devem chegar, respectivamente, a 22.23.4, 24.22.1 ou 26.12.1 — ou a uma versão posterior suportada pelo projeto.

O que foi corrigido

O boletim oficial lista como altas as CVE-2026-105482 (tratamento de NUL em dns.resolve), CVE-2026-105483, CVE-2026-106069 (validação de hostname/certificado TLS com representações não canônicas de IP) e CVE-2026-111497 (escrita fora dos limites no decodificador Brotli).

Também há correções de severidade média em HTTP keep-alive, validação de certificados e entropia de crypto.randomUUID()/randomInt() em snapshots e SEAs. Versões fora de suporte devem ser consideradas expostas até migração para uma linha mantida.

Plano de atualização

LinhaVersão de correçãoStatus
22.x22.23.4LTS
24.x24.22.1LTS
26.x26.12.1Current
  1. Inventarie imagens de contêiner, pipelines, runners, funções serverless e processos gerenciados por PM2/systemd.
  2. Atualize a imagem ou pacote base; não confunda atualização de dependências npm com atualização do runtime Node.js.
  3. Recrie artefatos, faça deploy gradual e confirme a versão do processo em execução com node --version.
  4. Registre versão anterior, versão nova, serviço, data e responsável no controle de mudanças.

Verificação local

Informe a versão do Node.js

Consulte a versão com node --version e informe-a abaixo. A comparação é feita neste navegador; nenhum dado é enviado ao Vulcan Atlas.

Sem envio

A matriz cobre o boletim de 21 de outubro de 2026. Backports exigem validação com o fornecedor da distribuição.

Testes necessários após o patch

Execute em homologação e, após rollout gradual, monitore produção. Os testes abaixo comprovam compatibilidade do seu serviço; eles não tentam reproduzir as vulnerabilidades.

  • Inicialização e dependências: execute a suíte automatizada, health checks e fluxos de login, API, filas e jobs. Confira logs por falhas de módulos nativos, OpenSSL ou Undici.
  • DNS: valide que a aplicação rejeita entradas com caracteres de controle antes de chamar resolvedores e que domínios legítimos continuam resolvendo pelo caminho esperado.
  • TLS: teste integrações com endpoints autorizados usando nomes DNS e IPs canônicos. Confirme que certificados válidos são aceitos e erros de certificado continuam interrompendo a conexão.
  • HTTP: rode testes de integração com conexões persistentes, proxy reverso e balanceador; monitore taxa de 4xx/5xx, resets e aumento de latência.
  • Compressão: processe somente fixtures internas e confiáveis de Brotli/ZIP usadas pela aplicação. Verifique que uploads malformados são recusados sem reinício do processo.
  • Snapshots e SEAs: se a aplicação usa snapshots ou Single Executable Applications, reinicie múltiplas instâncias e valide que IDs de sessão, tokens e valores aleatórios não se repetem.

Mitigações emergenciais

Atualize o runtime assim que possível. Enquanto a mudança é planejada, reduza a exposição sem desligar controles que protegem a aplicação.

  • Controle de entrada: recuse caracteres de controle em entradas que se tornariam hostnames e use allowlists para integrações externas.
  • TLS estrito: não desative validação de certificado nem aceite hostnames/IPs informais para “restaurar” integrações após o update.
  • Limites de recursos: limite tamanho e taxa de uploads comprimidos no proxy e na aplicação; alerte para reinícios e consumo anormal de memória.
  • Isolamento: execute processos Node.js como usuário sem privilégios, com filesystem e rede mínimos necessários.
  • Snapshots/SEA: interrompa novos artefatos com snapshots até validar a aleatoriedade na versão corrigida.
Critério de encerramento
  1. Todos os processos usam uma versão corrigida ou posterior.
  2. O deploy passou nos testes de regressão relevantes.
  3. Telemetria não mostra regressão de TLS, DNS, HTTP ou consumo anormal de memória.
  4. As versões em uso foram registradas no inventário de ativos.

Scripts de contenção e monitoramento

Use apenas em hosts e pipelines que sua equipe administra. Os exemplos inventariam e observam; não executam exploração.

Inventariar runtime

node --version
node -p "process.versions"
npm --version

Processos gerenciados

pm2 list
pm2 logs --lines 200
journalctl -u seu-servico --since "1 hour ago"

Sinais operacionais

journalctl -u seu-servico -p warning --since today
ps -eo pid,comm,%mem,etimes | grep node
curl -fsS https://seu-servico/health

Substitua seu-servico e a URL de health check. Preserve logs antes de reiniciar processos em uma investigação.

Referências oficiais