FixVibe
Covered by FixVibehigh

Ongemagtigde datatoegang via ontbrekende Supabase ryvlaksekuriteit (RLS)

In Supabase-gesteunde toepassings maak datasekuriteit staat op ryvlaksekuriteit (RLS). As RLS nie uitdruklik geaktiveer en gekonfigureer is met beleide nie, kan enige gebruiker met die publieke anonieme sleutel data oor die hele databasis lees, opdateer of uitvee. Dit is veral krities in Next.js-omgewings waar die Supabase-kliënt dikwels met 'n publieke API-sleutel geïnisialiseer word.

CWE-284

impak

Versuim om ryvlaksekuriteit (RLS) te implementeer, laat ongeverifieerde aanvallers toe om data van 'n Supabase-databasis navraag te doen wanneer publieke tabelle deur die anon-grens [S1] blootgestel word. Omdat Next.js-toepassings tipies die Supabase anon-sleutel in kliënt-kant-kode blootstel, kan 'n aanvaller hierdie sleutel gebruik om direkte REST API-oproepe na die databasis te maak, deur toegang tot die beoogde sensitiewe gebruiker-inligting te omseil en [S2].

Oorsaak

Postgres-tabelle in Supabase vereis by verstek eksplisiete aktivering van ryvlaksekuriteit om publieke toegang [S1] te voorkom. Wanneer 'n ontwikkelaar 'n tabel skep, maar vergeet om RLS te aktiveer of versuim om beperkende beleide te definieer, kan die databasis data blootstel aan enigiemand wat die projek se anon-sleutel [S1] besit. In Next.js-toepassings vereis bediener-kant-weergawe en kliënt-kant haal ook versigtige Supabase kliëntopstelling sodat geverifieerde gebruikerkonteks die databasislaag [S2] bereik.

Betonoplossings

  • Aktiveer RLS: Voer ALTER TABLE "your_table_name" ENABLE ROW LEVEL SECURITY; uit vir elke publieke tabel wat programdata berg [S1].
  • Definieer beleide: Skep spesifieke beleide wat toegang beperk op grond van die gebruiker se stawingstatus, soos CREATE POLICY "Users can see their own data" ON your_table_name FOR SELECT USING (auth.uid() = user_id); [S1].
  • Veilige bedienerkantkliënte: Wanneer u Next.js gebruik, hou diensrolkliënte slegs bedieners en pas steeds eienaarskapfilters toe voordat data aan gebruikers [S2] teruggestuur word.

Hoe FixVibe daarvoor toets

FixVibe voer reeds 'n leesalleen Supabase RLS-tjek deur baas.supabase-rls uit. Die skandeerder ontdek die Supabase-projek-URL en publieke anonsleutel van dieselfde-oorsprong JavaScript-bundels, vra PostgREST vir publieke tabel-metadata, en probeer beperkte leesalleen-seleksies om te bevestig of data sonder 'n gebruikersessie blootgestel word. Dit voeg nie diensrolbewyse in, bywerk, vee uit of gebruik nie. Repo-skanderings kan dit ook vroeër vang deur repo.supabase.missing-rls, wat SQL-migrasies vlag wat publieke tabelle sonder ENABLE ROW LEVEL SECURITY skep.