FixVibe
Covered by FixVibehigh

Ufikiaji wa Data Usioidhinishwa kupitia Usalama wa Kiwango cha Safu wa ZXCVFIXVIXVIBETOKEN0ZXCV (RLS)

Katika programu zinazoungwa mkono na Supabase, usalama wa data unategemea Usalama wa Ngazi ya Mstari (RLS). Ikiwa RLS haijawashwa kwa njia dhahiri na kusanidiwa kwa sera, mtumiaji yeyote aliye na ufunguo usiojulikana wa umma anaweza kusoma, kusasisha, au kufuta data kwenye hifadhidata nzima. Hii ni muhimu sana katika mazingira ya Next.js ambapo mteja wa Supabase mara nyingi huanzishwa kwa ufunguo wa umma wa API.

CWE-284

Athari

Kushindwa kutekeleza Usalama wa Kiwango cha Safu (RLS) huruhusu washambuliaji ambao hawajaidhinishwa kuuliza data kutoka kwa hifadhidata ya Supabase majedwali ya umma yanapofichuliwa kupitia mpaka usio wa kawaida wa [S1]. Kwa sababu programu za Next.js kwa kawaida hufichua ufunguo wa Supabase anon katika msimbo wa upande wa mteja, mshambulizi anaweza kutumia ufunguo huu kupiga simu za REST API moja kwa moja kwenye hifadhidata, na kupita maelezo nyeti ya mtumiaji aliyekusudiwa ZKCVCVXFIX2.

Chanzo Chanzo

Kwa chaguomsingi, majedwali ya Postgres katika Supabase yanahitaji kuwezesha kwa njia dhahiri Usalama wa Kiwango cha Safu ili kuzuia ufikiaji wa umma [S1]. Msanidi anapounda jedwali lakini akasahau kuwasha RLS au akashindwa kufafanua sera zenye vizuizi, hifadhidata inaweza kufichua data kwa mtu yeyote anayemiliki ufunguo wa anon wa mradi [S1]. Katika programu za Next.js, uwasilishaji wa upande wa seva na uletaji wa upande wa mteja pia unahitaji usanidi makini wa mteja wa Supabase ili muktadha wa mtumiaji aliyeidhinishwa ufikie safu ya hifadhidata [S2].

Marekebisho ya Zege

  • Washa RLS: Tekeleza ALTER TABLE "your_table_name" ENABLE ROW LEVEL SECURITY; kwa kila jedwali la umma linalohifadhi data ya programu [S1].
  • Bainisha Sera: Unda sera mahususi zinazozuia ufikiaji kulingana na hali ya uthibitishaji ya mtumiaji, kama vile CREATE POLICY "Users can see their own data" ON your_table_name FOR SELECT USING (auth.uid() = user_id); [S1].
  • Linda Wateja wa Upande wa Seva: Unapotumia Next.js, weka wateja wa jukumu la huduma pekee na bado utumie vichujio vya umiliki kabla ya kurejesha data kwa watumiaji [S2].

Jinsi FixVibe inavyoifanyia majaribio

FixVibe tayari inatumia ukaguzi wa Supabase RLS kupitia baas.supabase-rls. Kichanganuzi hugundua URL ya mradi wa Supabase na ufunguo wa anon wa umma kutoka kwa vifurushi vya JavaScript vya asili moja, huuliza PostgREST kwa metadata ya jedwali la umma, na hujaribu kuchagua kusoma pekee ili kuthibitisha kama data itafichuliwa bila kipindi cha mtumiaji. Haiingizi, kusasisha, kufuta au kutumia vitambulisho vya jukumu la huduma. Uchanganuzi wa repo pia unaweza kupata hii mapema kupitia repo.supabase.missing-rls, ambayo huripoti uhamaji wa SQL ambao huunda majedwali ya umma bila ENABLE ROW LEVEL SECURITY.