Zum Inhalt springen

Signup-Trigger übernimmt die Rolle aus selbst gesetzten Metadaten

Prüfregel · RSC-SEC-118

  • Sicherheit
  • Schweregrad: Kritisch
  • CWE-269
  • OWASP A01-2021

Findet einen Trigger auf `auth.users`, dessen Funktion beim Registrieren eine Berechtigungs-Spalte (Rolle, Plan, is_admin) aus `raw_user_meta_data` schreibt — Werte, die der Nutzer bei der Anmeldung selbst mitgibt.

Warum das zählt

Beim Registrieren kann der Client beliebige Metadaten mitsenden: `supabase.auth.signUp({ options: { data: { role: 'admin' } } })`. Übernimmt der `handle_new_user`-Trigger diesen Wert in die Rollen- oder Rechte-Spalte, macht sich jeder mit der Anmeldung selbst zum Admin.

Der Fehler ist unsichtbar für jeden Außen-Scan: Die Tabelle ist anonym leer, und die Policy kann korrekt an `auth.uid()` binden — die Rechteausweitung passiert vor der Policy, im Trigger.

So prüfen: ein Konto mit `data: { role: 'admin' }` anlegen und die eigene Zeile ansehen. Richtig ist ein fester Default im Trigger und eine getrennte, nur serverseitig beschreibbare Rollenverwaltung.

Prüfstufe

  • Repo-Zugang (Deep-Scan)

So behebt ihr es

Die Spalte im Trigger auf einen festen Default setzen (z. B. 'user'); Rollen nur serverseitig vergeben, nie aus raw_user_meta_data übernehmen.

Eigene App kostenlos prüfen