
Documentação do CVE-2017-11499: uma vulnerabilidade remota de DoS por inundação de hash no Node.js causada por sementes constantes de HashTable, com análise do vetor de ataque e mitigação via desativação de snapshots V8.
O Node.js era suscetível a ataques remotos de DoS por inundação de hash, pois a semente da HashTable era constante em uma determinada versão lançada do Node.js. Isso era resultado da compilação com snapshots V8 habilitados por padrão, o que fazia com que a semente inicialmente aleatória fosse sobrescrita na inicialização. Agradecimentos a Jann Horn do Google Project Zero por relatar essa vulnerabilidade.
Você pode ler sobre a categoria geral de vulnerabilidades de inundação de hash aqui.
Os snapshots foram desabilitados por padrão nestas atualizações. O código que depende fortemente de vm.runInNewContext provavelmente verá uma regressão de desempenho até que uma solução melhor seja implementada.
Esta é uma vulnerabilidade de alta gravidade e se aplica a todas as linhas de lançamento ativas (4.x, 6.x, 8.x), bem como à linha 7.x.
O código de aplicação que permite que o campo auth do objeto de opções usado com http.get() seja definido como um número pode resultar na criação/uso de um buffer não inicializado como string de autenticação. Por exemplo:
const opts = require('url').parse('http://127.0.0.1:8180');
opts.auth = 1e3; // A number here triggers the bug
require('http').get(opts, res => res.pipe(process.stdout));
A análise do campo auth foi atualizada no lançamento 4.x para que um TypeError seja lançado se o campo auth for um número quando http.get() for chamado.
Este é um defeito de baixa gravidade e se aplica apenas à linha de lançamento 4.x.