FixVibe
Covered by FixVibehigh

Next.js + Supabase ofsécheren: Row Level Security (RLS) Bypasss verhënneren

Uwendungen gebaut mat Next.js an Supabase vertrauen dacks op Row Level Security (RLS) fir Daten ze schützen. Versoe fir RLS z'aktivéieren oder den Supabase Client falsch ze konfiguréieren kann zu enger voller Datebankbelaaschtung féieren, wat onerlaabten Benotzer erlaabt sensibel records ze liesen oder z'änneren.

CWE-284

Impakt

Ugräifer kënnen d'Applikatiounslogik ëmgoen fir records an der Datebank ze liesen, ze aktualiséieren oder ze läschen, wann d'Row Level Security (RLS) net richteg duerchgesat gëtt [S1]. Dëst féiert dacks zu der Belaaschtung vu Perséinlech Identifizéierbar Informatioun (PII) oder sensibel Uwendungsdaten fir Benotzer déi nëmmen Zougang zum ëffentlechen anonyme API Schlëssel hunn.

Root Ursaach

Supabase benotzt Postgres Row Level Security fir den Datezougang um Datebankniveau ze verwalten, wat fundamental ass fir Daten [S1] ze sécheren. An engem Next.js Ëmfeld mussen d'Entwéckler en Supabase Client erstellen deen Cookien a Sessiounen korrekt handhabt fir d'Sécherheet während der Server-Säit Rendering [S2] z'erhalen. Schwachstelle entstinn normalerweis wann:

  • Dëscher sinn geschaf ouni RLS aktivéiert, mécht se zougänglech iwwer den ëffentlechen anon Schlëssel [S1].
  • Den Supabase Client ass falsch konfiguréiert an Next.js, net korrekt d'Benotzer Authentifikatioun Tokens un d'Datebank [S2] weiderginn.
  • Entwéckler benotzen zoufälleg der service_role Schlëssel am Client-Säit Code, déi Ëmgank all RLS Politiken [S1].

Beton Fixes

  • RLS aktivéieren: Suergen, datt Row Level Sécherheet fir all Dësch an Ärer Supabase Datebank [S1] aktivéiert ass.
  • Politik definéieren: Schafen spezifesch Postgres Politik fir SELECT, INSERT, UPDATE, an DELETE Operatiounen fir Zougang zu limitéiert Zougang baséiert op de Benotzer UID ZXCVZVIXBETOKEN.
  • Benotzen SSR Clienten: Ëmsetzen der @supabase/ssr Pak Clienten an Next.js schafen déi Server-Säit Authentifikatioun an Sëtzung Persistenz korrekt verwalten [S2].

Wéi FixVibe Tester fir et

FixVibe deckt dëst schonn duerch ofgesat-App a Repo Kontrollen. De passive baas.supabase-rls Modul entdeckt Supabase URL an anon-Schlësselpairen aus selweschten Hierkonft JavaScript Bündel, freet PostgREST fir ëffentlech Tabell Metadaten, a mécht limitéiert Lies-nëmme Selektiounen fir anonym Datenbelaaschtung ze bestätegen ouni Clientdaten ze mutéieren. Repo Scans lafen och repo.supabase.missing-rls fir SQL Migratiounen ze markéieren déi ëffentlech Dëscher erstellen ouni ENABLE ROW LEVEL SECURITY, a geheime Scans sichen no Service-Roll Schlësselbelaaschtung ier se de Browser erreecht.