FixVibe
Covered by FixVibehigh

Accessu à i dati micca autorizatu via Missing Supabase Row Level Security (RLS)

In l'applicazioni sustinute da Supabase, a sicurità di dati si basa in Row Level Security (RLS). Se RLS ùn hè micca esplicitamente attivatu è cunfiguratu cù pulitiche, qualsiasi utilizatore cù a chjave anonima publica pò leghje, aghjurnà o sguassà dati in tutta a basa di dati. Questu hè particularmente criticu in ambienti Next.js induve u cliente Supabase hè spessu inizializatu cù una chjave publica API.

CWE-284

Impattu

A fallimentu di implementà a Seguretat di Livellu di Fila (RLS) permette à l'attaccanti micca autenticati di dumandà dati da una basa di dati Supabase quandu e tavule pubbliche sò esposte attraversu u cunfini anon [S1]. Perchè l'applicazioni Next.js tipicamente espone a chjave Supabase anon in u codice di u cliente, un attaccante pò aduprà sta chjave per fà REST direttu API chjamate l'accessu à l'infurmazioni sensibili di l'utilizatori, l'accessu à l'informazioni sensibili di l'utilizatori è l'accessu à l'infurmazioni sensibili di l'utilizatori. [S2].

Causa Root

Per automaticamente, i tavulini Postgres in Supabase necessitanu attivazione esplicita di Row Level Security per impedisce l'accessu publicu [S1]. Quandu un sviluppatore crea una tavula, ma si scurda di attivà RLS o ùn riesce à definisce e pulitiche restrittive, a basa di dati pò espose dati à qualchissia chì pussede a chjave anon di u prughjettu [S1]. In l'applicazioni Next.js, u rendering di u servitore è u latu di u cliente necessitanu ancu una cunfigurazione di u cliente Supabase per chì u cuntestu autenticatu di l'utilizatori ghjunghje à a capa di basa di dati [S2].

Correzioni Concrete

  • Abilita RLS: Eseguite ALTER TABLE "your_table_name" ENABLE ROW LEVEL SECURITY; per ogni tavula publica chì guarda i dati di l'app [S1].
  • Define Policies: Crea pulitiche specifiche chì limitanu l'accessu basatu annantu à u statu di autentificazione di l'utilizatori, cum'è CREATE POLICY "Users can see their own data" ON your_table_name FOR SELECT USING (auth.uid() = user_id); [S1].
  • Clienti Secure Server-Side: Quandu si usa Next.js, mantene i clienti di u rolu di serviziu solu per u servitore è ancu applicà i filtri di pruprietà prima di rinvià e dati à l'utilizatori [S2].

Cumu FixVibe prova per questu

FixVibe esegue già una verifica di sola lettura Supabase RLS attraversu baas.supabase-rls. U scanner scopre l'URL di u prugettu Supabase è a chjave pubblica anonima da i pacchetti JavaScript di listessa origine, dumanda à PostgREST per i metadati di a tavula publica, è prova selezioni limitate di sola lettura per cunfirmà se e dati sò esposti senza una sessione d'utilizatore. Ùn inserisce, aghjurnà, sguassate o utilizate credenziali di u rolu di serviziu. Repo scans ponu ancu catturà questu prima attraversu repo.supabase.missing-rls, chì marca migrazioni SQL chì creanu tavule publiche senza ENABLE ROW LEVEL SECURITY.