CyberGlossary

Schwachstellen

Prototype Pollution

Auch bekannt als: Object.prototype-Pollution, __proto__-Injection

Definition

JavaScript-Schwachstelle, bei der nicht vertrauenswürdiger Input Object.prototype verändert, jedem Objekt Eigenschaften aufzwingt und so Verhalten ändert oder bis zu RCE führt.

Prototype Pollution missbraucht JavaScripts Prototype-Chain: Setzt man bei Merge/Clone/Assign Schlüssel wie __proto__, constructor.prototype oder prototype, mutiert man Object.prototype, sodass alle einfachen Objekte diese Properties erben. Häufig in rekursiven Merge-Utilities, Deep-Clone-Funktionen, Query-String-Parsern oder Template-Engines mit nutzerkontrolliertem JSON. Folgen reichen von DoS und Auth-Bypass bis hin zu RCE, wenn vergiftete Properties Sicherheitsentscheidungen beeinflussen (isAdmin, Sandbox, Render-Optionen). Bekannte CVEs sind u. a. lodash CVE-2019-10744 sowie viele Node.js-Bibliotheken. Schutz: __proto__/constructor-Schlüssel ablehnen, Map oder Object.create(null) für untrusted Daten, Prototyp einfrieren, sicherere Bibliotheken wählen.

Beispiele

  • POST {"__proto__":{"isAdmin":true}} an einen JSON-Merge-Endpoint und überall Admin-Rechte erhalten.
  • Prototyp vergiften, um Template-Render-Optionen zu ändern und RCE auszulösen.

Verwandte Begriffe