Ietekme
Ja netiek ieviesta rindas līmeņa drošība (RLS), neautentificēti uzbrucēji var pieprasīt datus no Supabase datu bāzes, kad publiskās tabulas tiek atklātas caur anonu robežu [S1]. Tā kā lietojumprogrammas Supabase anon klienta puses kodā parasti atklāj atslēgu Supabase anon, uzbrucējs var izmantot šo atslēgu, lai veiktu tiešus REST API, apejot lietotāju paredzētās datu bāzes izsaukumus un sensitīvas informācijas izsaukumus. [S2].
Galvenais cēlonis
Pēc noklusējuma Postgres tabulām Supabase ir nepieciešama rindas līmeņa drošības aktivizēšana, lai novērstu publisku piekļuvi [S1]. Ja izstrādātājs izveido tabulu, bet aizmirst iespējot RLS vai nespēj definēt ierobežojošas politikas, datubāze var atklāt datus ikvienam, kam ir projekta anon atslēga [S1]. Next.js lietojumprogrammās servera puses renderēšanai un klienta puses ielādei ir nepieciešama arī rūpīga Supabase klienta iestatīšana, lai autentificēts lietotāja konteksts sasniegtu datu bāzes slāni [S2].
Betona labojumi
- Iespējot RLS: Izpildiet
ALTER TABLE "your_table_name" ENABLE ROW LEVEL SECURITY;katrai publiskajai tabulai, kurā tiek glabāti lietotņu dati [S1]. - Definējiet politikas: izveidojiet īpašas politikas, kas ierobežo piekļuvi, pamatojoties uz lietotāja autentifikācijas statusu, piemēram,
CREATE POLICY "Users can see their own data" ON your_table_name FOR SELECT USING (auth.uid() = user_id);[S1]. - Droši servera puses klienti: izmantojot Next.js, saglabājiet pakalpojumu lomas klientus tikai ar serveri un joprojām lietojiet īpašumtiesību filtrus pirms datu atgriešanas lietotājiem [S2].
Kā FixVibe to pārbauda
FixVibe jau palaiž tikai lasāmu Supabase RLS pārbaudi, izmantojot baas.supabase-rls. Skeneris atklāj Supabase projekta vietrādi URL un publisko anon atslēgu no vienas izcelsmes JavaScript komplektiem, pieprasa PostgREST publiskos tabulas metadatus un mēģina ierobežotas tikai lasāmas atlases, lai apstiprinātu, vai dati tiek atklāti bez lietotāja sesijas. Tas neievieto, neatjaunina, nedzēš un neizmanto pakalpojumu lomas akreditācijas datus. Repo skenēšana to var arī uztvert agrāk, izmantojot repo.supabase.missing-rls, kas atzīmē SQL migrācijas, kas veido publiskas tabulas bez ENABLE ROW LEVEL SECURITY.
