FixVibe
Covered by FixVibehigh

Çatışmayan Supabase Sıra Səviyyəsi Təhlükəsizliyi (RLS) vasitəsilə icazəsiz Məlumat Girişi

Supabase tərəfindən dəstəklənən proqramlarda məlumat təhlükəsizliyi Sıra Səviyyəsi Təhlükəsizliyinə (RLS) əsaslanır. RLS açıq şəkildə aktivləşdirilməyibsə və siyasətlərlə konfiqurasiya edilməyibsə, ictimai anonim açarı olan istənilən istifadəçi bütün verilənlər bazası üzrə məlumatları oxuya, yeniləyə və ya silə bilər. Bu, Supabase müştərisinin tez-tez açıq API açarı ilə işə salındığı Next.js mühitlərində xüsusilə vacibdir.

CWE-284

Təsir

Sıra Səviyyəsi Təhlükəsizliyinin (RLS) həyata keçirilməməsi, ictimai cədvəllər [S1] anon sərhədindən keçdikdə, təsdiqlənməmiş təcavüzkarlara Supabase verilənlər bazasından məlumatları sorğulamağa imkan verir. Next.js proqramları adətən müştəri kodunda Supabase anon açarını ifşa etdiyinə görə, təcavüzkar bu açardan birbaşa REST API zəngləri etmək və verilənlər bazasına daxil olmaq və istifadəçi məlumatlarına daxil olmaq üçün istifadə edə bilər. [S2].

Kök Səbəb

Defolt olaraq, Supabase-də Postgres cədvəlləri ictimai girişin qarşısını almaq üçün [S1]-nin açıq şəkildə aktivləşdirilməsini tələb edir. Tərtibatçı cədvəl yaratdıqda, lakin RLS-ni aktivləşdirməyi unutduqda və ya məhdudlaşdırıcı siyasətləri müəyyən edə bilmədikdə, verilənlər bazası məlumatı layihənin anon [S1] açarına malik olan hər kəsə ifşa edə bilər. Next.js proqramlarında, server tərəfində göstərmə və müştəri tərəfinin gətirilməsi də diqqətli Supabase müştəri quraşdırmasını tələb edir ki, autentifikasiya edilmiş istifadəçi konteksti [S2] verilənlər bazası qatına çatsın.

Beton Təmirləri

  • RLS-ni aktiv edin: [S1] tətbiq məlumatlarını saxlayan hər bir ictimai cədvəl üçün ALTER TABLE "your_table_name" ENABLE ROW LEVEL SECURITY;-ni icra edin.
  • Siyasətləri müəyyənləşdirin: CREATE POLICY "Users can see their own data" ON your_table_name FOR SELECT USING (auth.uid() = user_id); [S1] kimi istifadəçinin autentifikasiya statusuna əsasən girişi məhdudlaşdıran xüsusi siyasətlər yaradın.
  • Təhlükəsiz Server Tərəfli Müştərilər: Next.js istifadə edərkən, xidmət rolu müştərilərini yalnız serverdə saxlayın və məlumatları [S2] istifadəçilərinə qaytarmazdan əvvəl sahiblik filtrlərini tətbiq edin.

FixVibe bunu necə sınaqdan keçirir

FixVibe artıq baas.supabase-rls vasitəsilə yalnız oxumaq üçün Supabase RLS yoxlamasını həyata keçirir. Skaner eyni mənşəli JavaScript paketlərindən Supabase layihəsinin URL-sini və ictimai anon açarını aşkar edir, PostgREST-dən ictimai cədvəl metadatasını soruşur və məlumatların istifadəçi seansı olmadan ifşa edilib-edilmədiyini təsdiqləmək üçün məhdud oxunuş seçiminə cəhd edir. O, xidmət rolu etimadnaməsini daxil etmir, yeniləmir, silmir və ya istifadə etmir. Repo skanları bunu əvvəllər ENABLE ROW LEVEL SECURITY olmadan ictimai cədvəllər yaradan SQL miqrasiyalarını qeyd edən repo.supabase.missing-rls vasitəsilə də tuta bilər.