Utjecaj
Napadači mogu zaobići logiku aplikacije za čitanje, ažuriranje ili brisanje zapisa u bazi podataka ako sigurnost na razini retka (RLS) nije pravilno nametnuta [S1]. To često rezultira izlaganjem osobnih podataka (PII) ili osjetljivih podataka aplikacije korisnicima koji imaju pristup samo javnom anonimnom ključu API.
Glavni uzrok
Supabase koristi Postgres Row Level Security za upravljanje pristupom podacima na razini baze podataka, što je temeljno za osiguranje podataka [S1]. U Next.js okruženju, programeri moraju kreirati Supabase klijenta koji ispravno rukuje kolačićima i sesijama radi održavanja sigurnosti tijekom prikazivanja [S2] na strani poslužitelja. Ranjivosti obično nastaju kada:
- Tablice se stvaraju bez omogućenog RLS, što ih čini dostupnima putem javnog anonimnog ključa [S1].
- Supabase klijent je pogrešno konfiguriran u Next.js, ne uspijeva pravilno proslijediti korisničke tokene za provjeru autentičnosti bazi podataka [S2].
- Programeri slučajno koriste ključ
service_roleu kodu na strani klijenta, koji zaobilazi sva pravila RLS [S1].
Konkretni popravci
- Omogući RLS: Osigurajte da je sigurnost na razini retka omogućena za svaku tablicu u vašoj Supabase bazi podataka [S1].
- Definirajte pravila: Stvorite posebna Postgres pravila za operacije
SELECT,INSERT,UPDATEiDELETEza ograničavanje pristupa na temelju korisničkog UID-a [S1]. - Koristite SSR klijente: Implementirajte paket
@supabase/ssrza stvaranje klijenata u Next.js koji ispravno upravljaju autentifikacijom na strani poslužitelja i postojanošću sesije [S2].
Kako FixVibe to testira
FixVibe to već pokriva kroz provjere implementirane aplikacije i repoa. Pasivni modul baas.supabase-rls otkriva Supabase parove URL-a i anon-ključa iz JavaScript paketa istog podrijetla, traži od PostgREST-a metapodatke javne tablice i izvodi ograničene odabire samo za čitanje kako bi potvrdio izloženost anonimnih podataka bez mutiranja korisničkih podataka. Repo skeniranja također pokreću repo.supabase.missing-rls za označavanje SQL migracija koje stvaraju javne tablice bez ENABLE ROW LEVEL SECURITY, a tajna skeniranja traže izloženost ključa uloge usluge prije nego što dospije u preglednik.
