CyberGlossary

Vulnerabilidades

Poluição de protótipo

Também conhecido como: Poluição de Object.prototype, Injeção __proto__

Definição

Vulnerabilidade JavaScript em que entrada não confiável modifica Object.prototype, injetando propriedades em todos os objetos e alterando comportamento, podendo levar a RCE.

A poluição de protótipo explora a cadeia de protótipos do JavaScript: ao definir chaves como __proto__, constructor.prototype ou prototype em operações de merge/clone/assign, o atacante muta Object.prototype, fazendo com que todos os objetos herdem essas propriedades. Surge frequentemente em utilitários de merge recursivo, deep clone, parsers de query string ou motores de template que aceitam JSON controlado pelo utilizador. As consequências vão de DoS e bypass de autenticação a RCE, quando propriedades poluídas influenciam decisões de segurança (isAdmin, sandbox, opções de render). CVEs relevantes: lodash CVE-2019-10744 e várias bibliotecas Node.js. Mitigações: rejeitar chaves __proto__/constructor, usar Map ou Object.create(null) para dados não confiáveis, congelar o protótipo, adotar bibliotecas seguras.

Exemplos

  • Enviar {"__proto__":{"isAdmin":true}} a um endpoint que faz merge JSON e obter admin global.
  • Poluir o protótipo para alterar opções de render de templates e desencadear RCE.

Termos relacionados