Zum Inhalt springen

Prüfregel · RSC-SEC-010

Supabase service_role-Schlüssel im Client

SicherheitSchweregrad: HochCWE-798OWASP A07-2021

Dekodiert JWTs im Bundle und meldet den Rollen-Claim `service_role`, der RLS vollständig umgeht.

Warum das zählt

Supabase gibt euch zwei Schlüssel. Der anon-Key darf ins Frontend — er sieht nur, was eure Row-Level-Security-Regeln erlauben. Der service_role-Key ist der Generalschlüssel: Er umgeht jede RLS-Regel und darf jede Zeile lesen, ändern und löschen. Er gehört ausschließlich auf den Server.

Der typische Weg ins Leck: Ein Generator oder ein Tutorial legt den Schlüssel in eine Variable mit dem Präfix NEXT_PUBLIC_ (Next.js) oder VITE_ (Vite). Beide werden fest in das Bundle kompiliert, das jeder Besucher herunterlädt. Wer die Developer-Tools öffnet, hat den Generalschlüssel — und damit die komplette Datenbank, egal wie sicher der Login aussieht.

So prüft ihr es selbst: Öffnet eure Seite, sucht im ausgelieferten JavaScript nach „service_role“. Findet ihr etwas, ist der Schlüssel öffentlich. Dann hilft kein Verstecken — er muss in der Supabase-Konsole rotiert und danach ausschließlich serverseitig verwendet werden (API-Route, Server Action, Edge Function).

Prüfstufe

Außen-Scan (anonym)

So behebt ihr es

Schlüssel sofort rotieren, ausschließlich serverseitig verwenden, Zugriffe prüfen.

Eigene App kostenlos prüfen