CWE ID: 1321
Name: Improperly Controlled Modification of Object Prototype Attributes (‘Prototype Pollution’)
Das Produkt empfängt Eingaben von einer vorgelagerten Komponente, die Attribute angibt, die in einem Objekt initialisiert oder aktualisiert werden sollen. Es werden jedoch die Modifikationen von Attributen des Objekt-Prototypen nicht ordnungsgemäß kontrolliert.
Effektivität: High
Beschreibung: Durch das anfängliche “Freezen” des Objekt-Prototypen (zum Beispiel mit Object.freeze(Object.prototype)
) wird die Modifikation des Prototypen unmöglich.
Notizen: Obwohl dies diese Schwäche vollständig mindern kann, werden andere Methoden empfohlen, wenn möglich, insbesondere in Komponenten, die von Upstream-Software (“libraries”) verwendet werden.
Effektivität: High
Beschreibung: Durch das Blockieren von Modifikationen von Attributen, die auf ein Objekt-Prototyp verweisen, wie beispielsweise proto
oder prototype
, kann diese Schwachstelle gemindert werden.
Effektivität: Limited
Beschreibung: Bei der Verarbeitung von nicht vertrauenswürdigen Objekten kann die Validierung unter Verwendung eines Schemas eingesetzt werden.
Effektivität: High
Beschreibung: Durch die Verwendung von Objekten ohne Prototypen (mittels Object.create(null)
) wird das Hinzufügen von Objekt-Prototyp-Attribute durch Zugriff auf den Prototyp über spezielle Attribute unmöglich, wodurch diese Schwachstelle gemindert wird.
Effektivität: Moderate
Beschreibung: Map
kann in den meisten Fällen anstelle von Objekten verwendet werden. Wenn Map
-Methoden anstelle von Objekt-Attributen eingesetzt werden, ist es nicht möglich, den Objekt-Prototyp zu erreichen oder zu modifizieren.