Firebase-Nutzer kann ein fremdes Dokument übernehmen
Prüfregel · RSC-SEC-134
- Sicherheit
- Schweregrad: Hoch
- CWE-639
- OWASP A01-2021
Findet eine `update`-/`write`-Regel, die den Eigentümer nur am EINGEHENDEN Dokument prüft (`request.resource.data.ownerId == request.auth.uid`), ohne den bestehenden Eigentümer zu prüfen oder das Feld zu pinnen — jeder Angemeldete kann sich so zum Eigentümer eines fremden Dokuments machen.
Warum das zählt
`allow update: if request.resource.data.uid == request.auth.uid` sieht nach Eigentümer-Bindung aus, prüft aber den Wert, den der Schreibende selbst mitgibt. Die Frage „bin ich der neue Eigentümer?“ ist immer mit ja zu beantworten — die Regel schützt nichts.
Für `create` ist genau diese Form richtig (man legt das eigene Dokument an). Für `update` ist sie eine Übernahme: Ein Angemeldeter schreibt auf ein fremdes Dokument, setzt `ownerId`/`uid` auf sich und erfüllt die Bedingung. So lässt sich jeder fremde Datensatz kapern — im Feld gesehen an einer kombinierten `allow create, update`-Regel.
Fix: In der `update`-Regel den BESTEHENDEN Eigentümer prüfen (`resource.data.ownerId == request.auth.uid`) und das Feld gegen den Altwert pinnen. `create` und `update` trennen, weil sie unterschiedliche Prüfungen brauchen.
Prüfstufe
- Repo-Zugang (Deep-Scan)
So behebt ihr es
Den bestehenden Eigentümer prüfen (`resource.data.ownerId == request.auth.uid`) und das Eigentümer-Feld gegen den Altwert pinnen (`request.resource.data.ownerId == resource.data.ownerId`).