Zum Inhalt springen

Nächste Ausgabe 7. September 2026

Mass Assignment

Mass Assignment ist eine Schwachstelle, bei der eine Anwendung vom Nutzer gelieferte Eingaben ungefiltert automatisch an interne Objekteigenschaften bindet und es einem Angreifer so erlaubt, Felder zu setzen, die er nicht kontrollieren sollte, etwa role, isAdmin oder balance. Auch Autobinding oder Object Injection genannt, taucht sie in den OWASP API Security Top 10 auf.

Autor
Unihackers Team
Lesezeit
2 Min. Lesezeit
Zuletzt aktualisiert

Warum es wichtig ist

Frameworks machen die Entwicklung schnell, indem sie Request-Daten automatisch an Objekte binden, doch dieser Komfort wird zur Schwachstelle, wenn das Objekt Felder enthält, die der Nutzer nie kontrollieren sollte. Ein einziges verstecktes Feld, role auf admin gesetzt, verwandelt eine gewöhnliche Anmeldung in eine Übernahme der Anwendung selbst.

Mass Assignment ist besonders häufig in APIs und einer der saubereren Pfade zur Privilege Escalation, die ein Tester finden kann, weshalb sie in den OWASP API Security Top 10 steht. Sie ist auch als Autobinding oder Object Injection bekannt und als CWE-915 katalogisiert.

Wie Frameworks autobinden

Um Entwicklern eine Zuweisung pro Feld zu ersparen, bieten Frameworks Helfer, die einen ganzen Request-Body in einem einzigen Aufruf auf ein Modell abbilden. Enthält das Modell sensible Spalten und hat das Binding keine Allow-List, wird jede Spalte aus dem Request beschreibbar. Das berühmteste Beispiel ist der GitHub-Vorfall von 2012, bei dem ein Researcher Mass Assignment nutzte, um seinen Public Key zu einer Organisation hinzuzufügen, die er nicht kontrollierte. Dasselbe Muster existiert in Rails, Laravel, Spring, ASP.NET, Django und vielen Node.js-ORMs.

Wie es funktioniert

Ein Registrierungs-Endpunkt akzeptiert JSON und validiert es gut:

json
{ "username": "testuser", "email": "test@example.com", "password": "Test123!" }

Der Angreifer fügt ein Feld hinzu, das das Formular nie zeigte, und wechselt oft den Content-Type, damit ein lockererer Parser es verarbeitet:

xml
<user>
  <username>testuser</username>
  <password>Test123!</password>
  <role>admin</role>
</user>

Bindet der Server <role> direkt auf das User-Modell, wird das neue Konto als Administrator angelegt. Das verbindet zwei Probleme: einen Content-Type, der die Validierung umgeht, und ein Autobinding, das role vom Client nie hätte akzeptieren dürfen. Es ist ein häufiges Ergebnis von Parameter Tampering beim API-Testing.

Wie du darauf testest

Fange einen Create- oder Update-Request ab und vergleiche die Felder, die die UI sendet, mit den wahrscheinlichen Eigenschaften des Objekts. Füge Kandidaten wie role, isAdmin, is_admin, verified, approved, balance, user_id und group einen nach dem anderen hinzu und beobachte, ob die Response oder ein Folge-Request bestätigt, dass das Feld akzeptiert wurde. Lies zuerst ein GET desselben Objekts, denn die Felder, die es zurückgibt, sind starke Hinweise auf die beschreibbaren Eigenschaften. Wiederhole den Request dann unter jedem akzeptierten Content-Type, da sich die Validierung zwischen JSON, XML und Formulardaten oft unterscheidet.

Prävention

Binde aus einer ausdrücklichen Allow-List sicherer Felder, binde nie ganze Request-Objekte und halte ein vom internen Modell getrenntes Schreibmodell. Weise unerwartete Felder ab, validiere jeden Content-Type nach demselben Maßstab und setze sensible Eigenschaften wie role nur in serverseitiger Logik, die der Client nicht beeinflussen kann.

Im Bootcamp

Wie wir Mass Assignment unterrichten

In unserem Cybersecurity Bootcamp lernen Sie nicht nur Mass Assignment in der Theorie, sondern üben mit echten Tools in praktischen Labs, angeleitet von Branchenfachleuten, die diese Konzepte täglich anwenden.

Behandelt in:

Modul 10: Penetrationstests und Ethisches Hacking

Verwandte Themen, die Sie beherrschen werden:MetasploitNmapBurp SuitePrivilege Escalation
Sehen Sie, wie wir das unterrichten

360+ Stunden Expertentraining • CompTIA Security+ inklusive