Vaikutus
Hyökkääjät voivat ohittaa sovelluslogiikan lukeakseen, päivittääkseen tai poistaakseen tietueita tietokannassa, jos rivitason suojausta (RLS) ei ole pantu asianmukaisesti täytäntöön [S1]. Tämä johtaa usein henkilökohtaisten tunnistetietojen (PII) tai arkaluonteisten sovellustietojen paljastamiseen käyttäjille, joilla on pääsy vain julkiseen anonyymiin API-avaimeen.
Perussyy
Supabase käyttää Postgres Row Level Securityä hallitakseen tietojen käyttöä tietokantatasolla, mikä on olennaista tietojen suojaamisessa [S1]. Next.js-ympäristössä kehittäjien on luotava Supabase-asiakas, joka käsittelee oikein evästeitä ja istuntoja turvallisuuden ylläpitämiseksi palvelinpuolen renderöinnin aikana [S2]. Haavoittuvuuksia syntyy yleensä, kun:
- Taulukot luodaan ilman, että RLS on käytössä, joten ne ovat käytettävissä julkisen anon-avaimen [S1] kautta.
- Supabase-asiakas on määritetty väärin kohdassa Next.js, eikä se pysty välittämään käyttäjän todennustunnisteita oikein tietokantaan [S2].
- Kehittäjät käyttävät vahingossa
service_role-avainta asiakaspuolen koodissa, joka ohittaa kaikki RLS-käytännöt [S1].
Betonikorjauksia
- Ota käyttöön RLS: Varmista, että rivitason suojaus on käytössä jokaisessa Supabase-tietokannan taulukossa [S1].
- Määrittele käytännöt: Luo erityiset Postgres-käytännöt
SELECT-,INSERT-,UPDATE- jaDELETE-toiminnoille rajoittaaksesi pääsyä käyttäjän UID-tunnukseen ZBETCVIXZX. - Käytä SSR-asiakkaita: Ota käyttöön
@supabase/ssr-paketti luodaksesi Next.js-asiakkaita, jotka hallitsevat oikein palvelinpuolen todennusta ja istunnon pysyvyyttä [S2].
Kuinka FixVibe testaa sitä
FixVibe kattaa tämän jo käyttöönotettujen sovellusten ja repotarkistusten kautta. Passiivinen baas.supabase-rls-moduuli löytää Supabase-URL-osoitteen ja anon-avainparit samaa alkuperää olevista JavaScript-nipuista, pyytää PostgrEST:ltä julkisia taulukon metatietoja ja suorittaa rajoitettuja vain luku -valintoja vahvistaakseen anonyymien tietojen paljastamisen asiakastietoja muuttamatta. Repo-tarkistukset suorittavat myös repo.supabase.missing-rls-merkinnän SQL-siirroista, jotka luovat julkisia taulukoita ilman ENABLE ROW LEVEL SECURITY:tä, ja salaiset tarkistukset etsivät palveluroolin avaimen paljastamista ennen kuin se saapuu selaimeen.
