FixVibe
Covered by FixVibehigh

നഷ്‌ടമായ Supabase റോ ലെവൽ സെക്യൂരിറ്റി (RLS) വഴിയുള്ള അനധികൃത ഡാറ്റ ആക്‌സസ്

Supabase- പിന്തുണയുള്ള ആപ്ലിക്കേഷനുകളിൽ, ഡാറ്റ സുരക്ഷ റോ ലെവൽ സെക്യൂരിറ്റിയെ ആശ്രയിക്കുന്നു (RLS). RLS വ്യക്തമായി പ്രവർത്തനക്ഷമമാക്കുകയും നയങ്ങൾ ഉപയോഗിച്ച് കോൺഫിഗർ ചെയ്യുകയും ചെയ്തിട്ടില്ലെങ്കിൽ, പൊതു അജ്ഞാത കീ ഉള്ള ഏതൊരു ഉപയോക്താവിനും മുഴുവൻ ഡാറ്റാബേസിൽ ഉടനീളമുള്ള ഡാറ്റ വായിക്കാനോ അപ്‌ഡേറ്റ് ചെയ്യാനോ ഇല്ലാതാക്കാനോ കഴിയും. ഒരു പൊതു API കീ ഉപയോഗിച്ച് Supabase ക്ലയൻ്റ് പലപ്പോഴും ആരംഭിക്കുന്ന Next.js പരിതസ്ഥിതികളിൽ ഇത് വളരെ നിർണായകമാണ്.

CWE-284

ആഘാതം

റോ ലെവൽ സെക്യൂരിറ്റി (RLS) നടപ്പിലാക്കുന്നതിലെ പരാജയം, RLS, Supabase ഡാറ്റാബേസിൽ നിന്നുള്ള ഡാറ്റ അന്വേഷിക്കാൻ അനധികൃത ആക്രമണകാരികളെ അനുവദിക്കുന്നു. Next.js ആപ്ലിക്കേഷനുകൾ സാധാരണയായി ക്ലയൻ്റ്-സൈഡ് കോഡിലെ Supabase anon കീ തുറന്നുകാട്ടുന്നതിനാൽ, ആക്രമണകാരിക്ക് ഈ കീ ഉപയോഗിച്ച് നേരിട്ട് REST ZXCVFIXVIBETOKEN7ZXCEV കോളുകൾ ആക്‌സസ് ചെയ്യാൻ കഴിയും. സെൻസിറ്റീവ് ഉപയോക്തൃ വിവരങ്ങൾ [S2].

മൂലകാരണം

ഡിഫോൾട്ടായി, Supabase-ലെ Postgres ടേബിളുകൾക്ക് പൊതു ആക്സസ് തടയാൻ [S1] റോ ലെവൽ സെക്യൂരിറ്റിയുടെ വ്യക്തമായ സജീവമാക്കൽ ആവശ്യമാണ്. ഒരു ഡവലപ്പർ ഒരു ടേബിൾ സൃഷ്‌ടിക്കുകയും എന്നാൽ RLS പ്രവർത്തനക്ഷമമാക്കാൻ മറക്കുകയോ നിയന്ത്രിത നയങ്ങൾ നിർവചിക്കുന്നതിൽ പരാജയപ്പെടുകയോ ചെയ്യുമ്പോൾ, പ്രോജക്റ്റിൻ്റെ anon കീ [S1] കൈവശമുള്ള ആർക്കും ഡാറ്റാബേസ് ഡാറ്റ വെളിപ്പെടുത്തിയേക്കാം. Next.js ആപ്ലിക്കേഷനുകളിൽ, സെർവർ-സൈഡ് റെൻഡറിംഗും ക്ലയൻ്റ്-സൈഡ് ലഭ്യമാക്കലും ശ്രദ്ധാപൂർവ്വം Supabase ക്ലയൻ്റ് സജ്ജീകരണം ആവശ്യമാണ്, അതിനാൽ ആധികാരികതയുള്ള ഉപയോക്തൃ സന്ദർഭം ഡാറ്റാബേസ് ലെയറിലേക്ക് [S2] എത്തുന്നു.

കോൺക്രീറ്റ് ഫിക്സുകൾ

  • RLS പ്രവർത്തനക്ഷമമാക്കുക: ആപ്പ് ഡാറ്റ [S1] സംഭരിക്കുന്ന എല്ലാ പൊതു ടേബിളിനും ALTER TABLE "your_table_name" ENABLE ROW LEVEL SECURITY; എക്സിക്യൂട്ട് ചെയ്യുക.
  • നയങ്ങൾ നിർവചിക്കുക: CREATE POLICY "Users can see their own data" ON your_table_name FOR SELECT USING (auth.uid() = user_id); [S1] പോലെയുള്ള ഉപയോക്താവിൻ്റെ പ്രാമാണീകരണ നിലയെ അടിസ്ഥാനമാക്കി ആക്‌സസ്സ് നിയന്ത്രിക്കുന്ന നിർദ്ദിഷ്ട നയങ്ങൾ സൃഷ്‌ടിക്കുക.
  • സുരക്ഷിത സെർവർ-സൈഡ് ക്ലയൻ്റുകൾ: Next.js ഉപയോഗിക്കുമ്പോൾ, സേവന-റോൾ ക്ലയൻ്റുകളെ സെർവറിൽ മാത്രം സൂക്ഷിക്കുക, ഉപയോക്താക്കൾക്ക് [S2] ഡാറ്റ തിരികെ നൽകുന്നതിന് മുമ്പ് ഉടമസ്ഥാവകാശ ഫിൽട്ടറുകൾ പ്രയോഗിക്കുക.

എങ്ങനെയാണ് FixVibe അതിനായി പരീക്ഷിക്കുന്നത്

FixVibe ഇതിനകം തന്നെ Supabase RLS പരിശോധന baas.supabase-rls വഴി ഒരു വായന-മാത്രം പ്രവർത്തിപ്പിക്കുന്നു. സ്കാനർ Supabase പ്രൊജക്റ്റ് URL-ഉം പബ്ലിക് അനോൺ കീയും ഒരേ ഉത്ഭവമുള്ള ജാവാസ്ക്രിപ്റ്റ് ബണ്ടിലുകളിൽ നിന്ന് കണ്ടെത്തുന്നു, പൊതു ടേബിൾ മെറ്റാഡാറ്റയ്ക്കായി PostgREST-നോട് ആവശ്യപ്പെടുന്നു, കൂടാതെ ഉപയോക്തൃ സെഷനില്ലാതെ ഡാറ്റ വെളിപ്പെടുത്തിയിട്ടുണ്ടോ എന്ന് സ്ഥിരീകരിക്കാൻ പരിമിതമായ വായന-മാത്രം തിരഞ്ഞെടുക്കാൻ ശ്രമിക്കുന്നു. ഇത് സേവന-റോൾ ക്രെഡൻഷ്യലുകൾ തിരുകുകയോ അപ്‌ഡേറ്റ് ചെയ്യുകയോ ഇല്ലാതാക്കുകയോ ഉപയോഗിക്കുകയോ ചെയ്യുന്നില്ല. ENABLE ROW LEVEL SECURITY ഇല്ലാതെ പൊതു ടേബിളുകൾ സൃഷ്‌ടിക്കുന്ന SQL മൈഗ്രേഷനുകളെ ഫ്ലാഗ് ചെയ്യുന്ന repo.supabase.missing-rls വഴിയും റിപ്പോ സ്‌കാനുകൾക്ക് ഇത് നേരത്തെ മനസ്സിലാക്കാൻ കഴിയും.