Zum Inhalt springen

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`).

Eigene App kostenlos prüfen