Pollution de prototype Prototype pollution
Faille JavaScript : l'attaquant modifie Object.prototype, ce qui affecte tous les objets de l'application.
Elle repose sur le modèle d'héritage de JavaScript : chaque objet hérite d'Object.prototype. Si l'on exécute obj["__proto__"]["isAdmin"] = true, tous les autres objets reçoivent eux aussi isAdmin = true. Cas d'école : la fusion et le clonage profonds de lodash (CVE-2018-16487, divulguée en 2019), $.extend de jQuery, de nombreux paquets d'analyse de corps de requête pour Express. Cela dégénère souvent en exécution de code à distance lorsque la charge cible le bon attribut de prototype (shell, argv, etc.). Défenses : Object.freeze(Object.prototype), l'option --disable-proto=throw de Node, et ne jamais fusionner en profondeur une entrée non fiable.