Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 730

Mass Assignment

Geprüft vonCybersecurity entrepreneur & security researcher

Was ist Mass Assignment?

Mass AssignmentSchwachstelle, bei der eine Anwendung vom Client übergebene Felder blind auf interne Objekteigenschaften abbildet, sodass Angreifer Felder setzen können, die ihnen nicht gehören sollten.


Mass Assignment entsteht, wenn Frameworks (Rails, Spring, ASP.NET, NestJS, Django) eingehendes JSON oder Formularfelder automatisch auf Modell-Attribute abbilden, ohne explizite Allow-Liste. Ein Angreifer fügt zusätzliche Eigenschaften hinzu — isAdmin, role, balance, tenantId —, die der Server dann persistiert. Im Code Review ist die Lücke schwer zu erkennen, weil die Bindung implizit erfolgt: Ein einzelner Aufruf von update_attributes(params) oder eines Model-Binders verbirgt die Tatsache, dass jedes Attribut beschreibbar ist. Sie ist als CWE-915 katalogisiert und erscheint in den OWASP API Security Top 10 (2019 A6, 2023 zusammengeführt in API3 „Broken Object Property Level Authorization").

Der klassische Vorfall ist Egor Homakovs GitHub-Hack vom März 2012: Weil das SSH-Key-Formular public_key[user_id] ohne Whitelist band, fügte er ein präpariertes Feld hinzu, hängte seinen Schlüssel an das Rails-Organisationskonto und pushte einen Commit nach rails/rails. GitHub schloss die Lücke innerhalb von Stunden, und der Vorfall bewog Rails dazu, das Whitelisting per attr_accessible — später strong_parameters — zum Standard zu machen.

Zu den Gegenmaßnahmen zählen explizite DTOs oder Eingabeschemata, strikte Allow-Listen bindbarer Felder, die Trennung rein interner Attribute von benutzerbindbaren Modellen sowie Negativtests, die unerwartete JSON-Schlüssel einreichen.

flowchart TD
  A["Client sendet JSON per POST<br/>{name, isAdmin:true}"] --> B[Framework-Auto-Binder]
  B --> C{Explizite Allow-Liste<br/>der Felder?}
  C -->|Nein — Mass Assignment| D[Alle Schlüssel ins Modell geschrieben]
  D --> E[(isAdmin=true<br/>in DB persistiert)]
  C -->|Ja — DTO / strong params| F[Nur erlaubte Felder gebunden]
  F --> G[(Privilegierte Felder ignoriert)]

Beispiele

  1. 01

    Senden von {"name":"Bob","isAdmin":true} an /api/users — der Nutzer wird zum Admin.

  2. 02

    Aktualisierung einer Bestellung mit verstecktem Rabattfeld per POST, um die Preislogik zu umgehen.

Häufige Fragen

Was ist Mass Assignment?

Schwachstelle, bei der eine Anwendung vom Client übergebene Felder blind auf interne Objekteigenschaften abbildet, sodass Angreifer Felder setzen können, die ihnen nicht gehören sollten. Es gehört zur Kategorie Schwachstellen der Cybersicherheit.

Was bedeutet Mass Assignment?

Schwachstelle, bei der eine Anwendung vom Client übergebene Felder blind auf interne Objekteigenschaften abbildet, sodass Angreifer Felder setzen können, die ihnen nicht gehören sollten.

Wie schützt man sich gegen Mass Assignment?

Schutzmaßnahmen gegen Mass Assignment kombinieren typischerweise technische Kontrollen und operative Praktiken, wie in der Definition oben beschrieben.

Welche anderen Bezeichnungen gibt es für Mass Assignment?

Übliche alternative Bezeichnungen: Autobinding-Schwachstelle, Object Injection.

Verwandte Begriffe

Siehe auch