Prototype Pollution
Auch bekannt als:Prototypen-Vergiftung
Prototype Pollution: Manipulation des JavaScript-Objektprototyps, wodurch alle Objekte geerbte Angreiferwerte tragen. Die Schwachstelle ist eine EinschleusungInjection AttackManipuliert Interpreter oder Anwendungen durch eingeschleuste Befehle oder Daten. auf Sprachebene und reicht von der Rechteausweitung bis zur Codeausführung.
Funktionsweise und Einordnung
In JavaScript erben alle Objekte von Object.prototype. Verarbeitet eine Anwendung angreiferkontrollierte Schlüssel rekursiv — typisch in deepMerge, extend oder beim Parsen verschachtelter Query-Parameter — und filtert dabei __proto__, constructor und prototype nicht, schreibt der Angreifer direkt in den Prototyp. Danach besitzt jedes Objekt im Prozess die gesetzte Eigenschaft, sofern es sie nicht selbst definiert. Genau dieser Fallback macht den Angriff so wirkungsvoll.
Bedeutung in der Praxis
Die Wirkung entsteht erst durch die Auswertung an anderer Stelle. Prüft eine Autorisierung eine Eigenschaft, die das echte Objekt nicht besitzt, greift plötzlich der vergiftete Prototyp — der Angreifer erbt die Berechtigung. Liest eine Komponente daraus einen Datei- oder Kommandonamen, entsteht daraus Remote Code ExecutionRemote Code ExecutionSchwachstelle oder Angriff, der Code auf einem entfernten Ziel ausführen lässt.. Absicherung heißt: gefährliche Schlüssel beim Zusammenführen blocken, Object.create(null) oder Map für Datencontainer nutzen und Berechtigungsprüfungen ausschließlich auf eigene Eigenschaften stützen.
Verwandte Begriffe
- Injection AttackInjection AttackManipuliert Interpreter oder Anwendungen durch eingeschleuste Befehle oder Daten.: Manipuliert Interpreter oder Anwendungen durch eingeschleuste Befehle oder Daten.
- Remote Code ExecutionRemote Code ExecutionSchwachstelle oder Angriff, der Code auf einem entfernten Ziel ausführen lässt.: Schwachstelle oder Angriff, der Code auf einem entfernten Ziel ausführen lässt.
- Input ValidationInput ValidationPrüfung von Eingabedaten auf Format, Länge, Typ, Wertebereich und Zulässigkeit.: Prüfung von Eingabedaten auf Format, Länge, Typ, Wertebereich und Zulässigkeit.
- Application SecurityApplication SecuritySchützt Software während Entwicklung, Betrieb und Wartung vor Schwachstellen.: Schützt Software während Entwicklung, Betrieb und Wartung vor Schwachstellen.