FixVibe
Covered by FixVibehigh

Volitamata juurdepääs andmetele puuduva Supabase reataseme turvalisuse kaudu (RLS)

Supabase-ga toetatud rakendustes tugineb andmeturve reataseme turvalisusele (RLS). Kui RLS pole selgesõnaliselt lubatud ja poliitikatega konfigureeritud, saab iga avaliku anonüümse võtmega kasutaja lugeda, värskendada või kustutada andmeid kogu andmebaasis. See on eriti oluline Next.js keskkondades, kus klient Supabase on sageli lähtestatud avaliku API võtmega.

CWE-284

Mõju

Reataseme turvalisuse (RLS) rakendamata jätmine võimaldab autentimata ründajatel teha päringuid andmebaasist Supabase, kui avalikud tabelid on avatud anoonipiiri [S1] kaudu. Kuna rakendused Next.js avaldavad kliendipoolses koodis tavaliselt võtme Supabase anon, saab ründaja seda võtit kasutada otse REST API tegemiseks, kasutajate tundliku juurdepääsu kaudu andmebaasi logimisandmetele ja rakenduste jaoks. [S2].

Algpõhjus

Vaikimisi nõuavad Postgresi tabelid failis Supabase reataseme turvalisuse selgesõnalist aktiveerimist, et takistada avalikku juurdepääsu [S1]. Kui arendaja loob tabeli, kuid unustab lubada RLS või ei suuda määratleda piiravaid eeskirju, võib andmebaas avaldada andmeid kõigile, kellel on projekti võti anon [S1]. Next.js rakendustes nõuavad serveripoolne renderdus ja kliendipoolne toomine ka Supabase kliendi hoolikat seadistamist, et autentitud kasutajakontekst jõuaks andmebaasikihini [S2].

Betooniparandused

  • Lubage RLS: Käivitage ALTER TABLE "your_table_name" ENABLE ROW LEVEL SECURITY; iga avaliku tabeli jaoks, mis salvestab rakenduse andmeid [S1].
  • Määrake poliitikad: looge konkreetsed eeskirjad, mis piiravad juurdepääsu kasutaja autentimisoleku põhjal, nt CREATE POLICY "Users can see their own data" ON your_table_name FOR SELECT USING (auth.uid() = user_id); [S1].
  • Turvalised serveripoolsed kliendid: kui kasutate Next.js-d, hoidke teenindusrolliga kliendid ainult serverina ja rakendage siiski omandilise kuuluvuse filtreid enne andmete tagastamist kasutajatele [S2].

Kuidas FixVibe seda testib

FixVibe juba käitab kirjutuskaitstud Supabase RLS kontrolli läbi baas.supabase-rls. Skanner tuvastab sama päritoluga JavaScripti kimpudest projekti Supabase URL-i ja avaliku anonvõtme, küsib PostgrRESTilt avalike tabelite metaandmeid ja proovib piiratud kirjutuskaitstud valikuid, et kinnitada, kas andmeid avaldatakse ilma kasutajaseansita. See ei sisesta, värskenda, kustuta ega kasuta teenuserolli mandaate. Repo-skannid võivad selle tuvastada ka varem läbi repo.supabase.missing-rls, mis märgib SQL-i migratsioonid, mis loovad avalikke tabeleid ilma ENABLE ROW LEVEL SECURITY-ta.