PT-2020-16968 · Npm · Shvl
Publicado
2020-12-29
·
Atualizado
2022-05-24
·
CVE-2020-28278
CVSS v3.1
9.8
Crítica
| Vetor | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
Nome do software vulnerável e versões afetadas
Versões do shvl de 1.0.0 a 2.0.1
Descrição
A vulnerabilidade permite que um invasor cause uma negação de serviço e pode levar à execução remota de código devido a uma vulnerabilidade de contaminação de protótipo. Essa vulnerabilidade pode ser explorada porque a função
set() no módulo NPM ‘shvl’ não verifica o tipo de objeto antes de atribuir um valor a uma propriedade. Como resultado, um invasor pode criar propriedades inexistentes ou manipular as existentes, levando potencialmente à negação de serviço ou à execução remota de código. A vulnerabilidade pode ser acionada fornecendo-se um valor malicioso ao argumento path na função set(), permitindo que um invasor contamine o protótipo do objeto. Por exemplo, ajustando o valor de path para incluir a propriedade proto, um invasor pode atribuir uma propriedade diretamente a um objeto vazio, contaminando efetivamente o protótipo do objeto.Recomendações
Para as versões 1.0.0 a 2.0.1 do shvl, para mitigar a vulnerabilidade de contaminação de protótipo, considere o seguinte:
-
Congele objetos para impedir a adição, remoção ou alteração de suas propriedades.
-
Valide a entrada JSON usando validação de esquema para garantir que ela contenha apenas atributos predefinidos.
-
Use
Object.createpara alterar objetos de modo que eles não tenham nenhuma associação de protótipo, evitando assim a contaminação de protótipo.
Como solução temporária, considere desativar a função
set() até que um patch esteja disponível. Restrinja o acesso ao módulo shvl para minimizarExploit
Correção
Prototype Pollution
Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾
Enumeração de Fraquezas
Identificadores relacionados
Produtos afetados
Shvl