FixVibe
Covered by FixVibehigh

Baimendu gabeko datuen sarbidea falta den Supabase errenkada-mailako segurtasunaren bidez (RLS)

Supabase-k babestutako aplikazioetan, datuen segurtasuna errenkada-mailako segurtasunean (RLS) oinarritzen da. RLS ez badago esplizituki gaituta eta politikekin konfiguratuta, gako anonimo publikoa duen edozein erabiltzailek datu-base osoko datuak irakurri, eguneratu edo ezabatu ditzake. Hau bereziki garrantzitsua da Next.js inguruneetan, non Supabase bezeroa maiz API gako publiko batekin hasieratzen den.

CWE-284

Eragina

Errenkada-mailako segurtasuna (RLS) ezartzeak aukera ematen die autentifikatu gabeko erasotzaileei Supabase datu-base bateko datuak kontsultatzeko aukera ematen die taula publikoak [S1] muga anonetik azaltzen direnean. Next.js aplikazioek normalean Supabase anon gakoa bezeroaren kodean agerian uzten dutenez, erasotzaileak gako hau erabil dezake REST zuzena egiteko API aplikazioaren datu-baserako deiak eta datu-basera atzitu nahi den informazio sentikorra saihestuz. [S2].

Arrazoia

Lehenespenez, Supabase-ko Postgres taulek Row Level Security aktibazio esplizitua behar dute [S1] sarbide publikoa eragozteko. Garatzaile batek taula bat sortzen duenean, baina RLS gaitzea ahazten denean edo politika murriztaileak definitzen ez dituenean, datu-baseak proiektuaren anon gako [S1] duen edonori azal ditzake datu-baseak. Next.js aplikazioetan, zerbitzariaren aldean errendatzeak eta bezeroaren aldean eskuratzeak ere Supabase bezeroaren konfigurazio kontu handiz konfiguratu behar du, autentifikatutako erabiltzailearen testuingurua datu-base geruza [S2] izatera iristeko.

Konponketa konkretuak

  • Gaitu RLS: Exekutatu ALTER TABLE "your_table_name" ENABLE ROW LEVEL SECURITY; aplikazioaren datuak gordetzen dituen taula publiko bakoitzeko [S1].
  • Definitu politikak: Sortu erabiltzailearen autentifikazio-egoeraren arabera sarbidea mugatzen duten politika espezifikoak, adibidez, CREATE POLICY "Users can see their own data" ON your_table_name FOR SELECT USING (auth.uid() = user_id); [S1].
  • Zerbitzariaren alboko bezero seguruak: Next.js erabiltzean, mantendu zerbitzu-eginkizuneko bezeroak zerbitzarian soilik eta aplikatu jabetza-iragazkiak [S2] erabiltzaileei datuak itzuli aurretik.

FixVibe probak nola egiten dituen

FixVibe-k irakurtzeko soilik den Supabase RLS egiaztatzeko baas.supabase-rls bidez exekutatzen du. Eskanerrak Supabase proiektuaren URLa eta gako anonimo publikoa deskubritzen ditu jatorri bereko JavaScript sortetatik, PostgREST taula publikoko metadatuak eskatzen dizkio eta irakurtzeko soilik aukeratzen saiatzen da datuak erabiltzaile-saiorik gabe azaltzen diren ala ez baieztatzeko. Ez ditu txertatzen, eguneratzen, ezabatzen edo zerbitzu-rolen kredentzialak erabiltzen. Repo eskaneek lehenago ere har dezakete repo.supabase.missing-rls bidez, zeinak ENABLE ROW LEVEL SECURITY gabe taula publikoak sortzen dituzten SQL migrazioak markatzen dituena.