Zum Inhalt springen

Prüfregel · RSC-SEC-070

Angemeldete Fremde lesen fremde Datensätze

SicherheitSchweregrad: HochCWE-639OWASP A01-2021

Legt nach Domain-Nachweis ein Wegwerf-Konto an und zählt, wie viele Zeilen dieses fremde Konto in personenbezogenen Tabellen sieht — ohne eine einzige Zeile abzurufen.

Warum das zählt

Es gibt zwei völlig verschiedene Fragen, und KI-generierte Zugriffsregeln beantworten regelmäßig die falsche. Die erste lautet: Ist der Aufrufer angemeldet? Die zweite: Gehört ihm dieser Datensatz? Eine Policy mit `auth.role() = 'authenticated'` beantwortet nur die erste — und gibt damit jedem, der sich registrieren kann, die Daten aller anderen.

Von außen ist das unsichtbar, und genau deshalb überlebt der Fehler so lange. Anonym antwortet die Tabelle mit null Zeilen; jeder reine Außen-Scan meldet sie als sauber. Erst ein echtes Konto zeigt den Unterschied — und ein Konto, das gerade erst entstanden ist, besitzt keine eigenen Daten. Sieht es trotzdem Zeilen, gehören sie zwangsläufig anderen. Das ist kein Indiz, sondern ein Beweis.

So prüft ihr es selbst: Legt euch ein zweites Konto an, meldet euch damit an und ruft eine Liste auf, die eigentlich nur eure eigenen Daten zeigen sollte. Seht ihr dort Einträge des ersten Kontos, ist die Trennung offen. In SQL erkennt ihr es an jeder Policy, deren `using`-Ausdruck den Nutzer nicht nennt.

Prüfstufe

Aktiv (nach Domain-Nachweis)

So behebt ihr es

Policies auf `auth.uid() = user_id` umstellen statt auf `auth.role() = 'authenticated'`, dann erneut prüfen.

Eigene App kostenlos prüfen