FixVibe
Covered by FixVibehigh

Luvaton tietojen käyttö puuttuvan Supabase rivitason suojauksen kautta (RLS)

Supabase-tuetuissa sovelluksissa tietoturva perustuu rivitason suojaukseen (RLS). Jos RLS:tä ei ole erikseen otettu käyttöön ja määritetty käytännöillä, kuka tahansa käyttäjä, jolla on julkinen anonyymi avain, voi lukea, päivittää tai poistaa tietoja koko tietokannasta. Tämä on erityisen tärkeää Next.js-ympäristöissä, joissa Supabase-asiakas alustetaan usein julkisella API-avaimella.

CWE-284

Vaikutus

Jos rivitason suojausta (RLS) ei toteuteta, todentamattomat hyökkääjät voivat tehdä kyselyjä Supabase-tietokannasta, kun julkiset taulukot paljastuvat anon-rajan [S1] kautta. Koska Next.js-sovellukset tyypillisesti paljastavat Supabase anon-avaimen asiakaspuolen koodissa, hyökkääjä voi käyttää tätä avainta tehdäkseen suoria REST API-toimintoja, ohjaamalla käyttäjän arkaluontoisia tietokannan kutsuja ja sovelluskutsuja. [S2].

Perussyy

Oletuksena Supabase:n Postgres-taulukot vaativat nimenomaisen rivitason suojauksen aktivoinnin estääkseen julkisen pääsyn [S1]. Kun kehittäjä luo taulukon, mutta unohtaa ottaa käyttöön RLS tai ei määrittele rajoittavia käytäntöjä, tietokanta voi paljastaa tietoja kenelle tahansa, jolla on projektin anon-avain [S1]. Next.js-sovelluksissa palvelinpuolen renderöinti ja asiakaspuolen haku edellyttävät myös huolellista Supabase-asiakasasetusta, jotta todennettu käyttäjäkonteksti saavuttaa tietokantakerroksen [S2].

Betonikorjauksia

  • Ota käyttöön RLS: Suorita ALTER TABLE "your_table_name" ENABLE ROW LEVEL SECURITY; jokaiselle julkiselle taulukolle, joka tallentaa sovellustietoja [S1].
  • Määritä käytännöt: Luo erityisiä käytäntöjä, jotka rajoittavat pääsyä käyttäjän todennustilan perusteella, kuten CREATE POLICY "Users can see their own data" ON your_table_name FOR SELECT USING (auth.uid() = user_id); [S1].
  • Suojatut palvelinpuolen asiakkaat: Kun käytät tiedostoa Next.js, säilytä palvelurooliasiakkaat vain palvelimena ja käytä silti omistajuussuodattimia ennen tietojen palauttamista käyttäjille [S2].

Kuinka FixVibe testaa sitä

FixVibe suorittaa jo vain luku -muotoisen Supabase RLS-tarkistuksen kautta baas.supabase-rls. Skanneri löytää Supabase-projektin URL-osoitteen ja julkisen anon-avaimen samaa alkuperää olevista JavaScript-nipuista, pyytää PostgrESTiltä julkisia taulukon metatietoja ja yrittää rajoitettuja vain luku -valintoja varmistaakseen, paljastetaanko tietoja ilman käyttäjäistuntoa. Se ei lisää, päivitä, poista tai käytä palveluroolin tunnistetietoja. Repo-tarkistukset voivat havaita tämän myös aikaisemmin repo.supabase.missing-rls:n avulla, joka merkitsee SQL-siirrot, jotka luovat julkisia taulukoita ilman ENABLE ROW LEVEL SECURITY:tä.