Ietekme
Uzbrucēji var apiet lietojumprogrammu loģiku, lai lasītu, atjauninātu vai dzēstu ierakstus datu bāzē, ja rindas līmeņa drošība (RLS) nav pareizi ieviesta [S1]. Tā rezultātā lietotāji, kuriem ir piekļuve tikai publiskajai anonīmajai atslēgai API, bieži tiek atklāta personu identificējoša informācija (PII) vai sensitīvi lietojumprogrammu dati.
Galvenais cēlonis
Supabase izmanto Postgres Row Level Security, lai pārvaldītu piekļuvi datiem datu bāzes līmenī, kas ir ļoti svarīgi datu aizsardzībai [S1]. Next.js vidē izstrādātājiem ir jāizveido Supabase klients, kas pareizi apstrādā sīkfailus un sesijas, lai uzturētu drošību servera puses renderēšanas laikā [S2]. Ievainojamības parasti rodas, ja:
- Tabulas tiek izveidotas bez iespējotas RLS, padarot tās pieejamas, izmantojot publisko anonu atslēgu [S1].
- Supabase klients ir nepareizi konfigurēts Next.js, un tas nespēj pareizi nodot lietotāja autentifikācijas pilnvaras datu bāzei [S2].
- Izstrādātāji klienta puses kodā nejauši izmanto atslēgu
service_role, kas apiet visas RLS politikas [S1].
Betona labojumi
- Iespējot RLS: Nodrošiniet, lai rindas līmeņa drošība būtu iespējota katrai tabulai jūsu Supabase datubāzē [S1].
- Definējiet politikas: izveidojiet īpašas Postgres politikas
SELECT,INSERT,UPDATEunDELETE, lai ierobežotu piekļuvi, pamatojoties uz lietotāja ZBETCOKVIXVIXZX. - Izmantojiet SSR klientus: ieviesiet pakotni
@supabase/ssr, lai izveidotu klientus Next.js, kas pareizi pārvalda servera puses autentifikāciju un sesijas noturību [S2].
Kā FixVibe to pārbauda
FixVibe tas jau attiecas, izmantojot izvietoto lietotņu un repo pārbaudes. Pasīvais modulis baas.supabase-rls atklāj Supabase URL un anon-atslēgu pārus no viena izcelsmes JavaScript komplektiem, pieprasa PostgREST publiskos tabulas metadatus un veic ierobežotas tikai lasāmas atlases, lai apstiprinātu anonīmo datu ekspozīciju, nematējot klientu datus. Repo skenēšana arī palaiž repo.supabase.missing-rls, lai atzīmētu SQL migrācijas, kas veido publiskas tabulas bez ENABLE ROW LEVEL SECURITY, un slepenā skenēšana meklē pakalpojuma lomas atslēgas ekspozīciju, pirms tā sasniedz pārlūkprogrammu.
