defu: Poluição de protótipo via chave `__proto__` no argumento defaults
Plataforma
nodejs
Componente
defu
Corrigido em
6.1.5
defu é um software que permite aos usuários atribuir propriedades padrão recursivamente. Antes da versão 6.1.5, aplicações que passam entrada de usuário não sanitizada (por exemplo, corpos de requisição JSON analisados, registros de banco de dados ou arquivos de configuração de fontes não confiáveis) como o primeiro argumento para `defu()` são vulneráveis à poluição de protótipo. Um payload malicioso contendo uma chave `__proto__` pode sobrescrever valores padrão pretendidos no resultado mesclado. A função interna `_defu` usava `Object.assign({}, defaults)` para copiar o objeto defaults. `Object.assign` invoca o setter `__proto__`, que substitui o `[[Prototype]]` do objeto resultante com valores controlados pelo atacante. Propriedades herdadas do protótipo poluído então contornam a proteção existente da chave `__proto__` no loop `for...in` e chegam ao resultado final. A versão 6.1.5 substitui `Object.assign({}, defaults)` por object spread (`{ ...defaults }`), que usa `[[DefineOwnProperty]]` e não invoca o setter `__proto__`.
Como corrigir
Nenhum patch oficial disponível. Procure alternativas ou monitore atualizações.
Monitore suas dependências automaticamente
Receba alertas quando novas vulnerabilidades afetarem seus projetos.
Começar grátis