Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 976

Poluição de protótipo

Revisado porCybersecurity entrepreneur & security researcher

O que é Poluição de protótipo?

Poluição de protótipoVulnerabilidade 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

  1. 01

    Enviar {"__proto__":{"isAdmin":true}} a um endpoint que faz merge JSON e obter admin global.

  2. 02

    Poluir o protótipo para alterar opções de render de templates e desencadear RCE.

Perguntas frequentes

O que é Poluição de protótipo?

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. Pertence à categoria Vulnerabilidades da cibersegurança.

O que significa Poluição de protótipo?

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.

Como se defender contra Poluição de protótipo?

As defesas contra Poluição de protótipo costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.

Quais são outros nomes para Poluição de protótipo?

Nomes alternativos comuns: Poluição de Object.prototype, Injeção __proto__.

Termos relacionados

Ver também