Impacte
Els atacants poden evitar la lògica de l'aplicació per llegir, actualitzar o suprimir registres de la base de dades si la seguretat a nivell de fila (RLS) no s'aplica correctament [S1]. Sovint, això provoca l'exposició d'informació d'identificació personal (PII) o dades d'aplicacions sensibles als usuaris que només tenen accés a la clau pública anònima API.
Causa arrel
Supabase utilitza Postgres Row Level Security per gestionar l'accés a les dades a nivell de base de dades, que és fonamental per protegir les dades [S1]. En un entorn Next.js, els desenvolupadors han de crear un client Supabase que gestioni correctament les galetes i les sessions per mantenir la seguretat durant la representació del servidor [S2]. Les vulnerabilitats solen sorgir quan:
- Les taules es creen sense RLS habilitat, fent-les accessibles mitjançant la clau pública anon [S1].
- El client Supabase està mal configurat a Next.js, i no pot passar correctament els testimonis d'autenticació d'usuari a la base de dades [S2].
- Els desenvolupadors utilitzen accidentalment la clau
service_roleal codi del client, que passa per alt totes les polítiques RLS [S1].
Correccions concretes
- Activa RLS: Assegureu-vos que la seguretat a nivell de fila estigui activada per a cada taula de la vostra base de dades Supabase [S1].
- Definir polítiques: Creeu polítiques de Postgres específiques per a les operacions
SELECT,INSERT,UPDATEiDELETEper restringir l'accés basant-se en elDELETEde l'usuari. - Utilitzeu clients SSR: Implementeu el paquet
@supabase/ssrper crear clients a Next.js que gestionen correctament l'autenticació del servidor i la persistència de la sessió [S2].
Com ho prova FixVibe
FixVibe ja cobreix això mitjançant comprovacions d'aplicacions desplegades i de repo. El mòdul passiu baas.supabase-rls descobreix l'URL Supabase i els parells de claus anònimes dels paquets de JavaScript del mateix origen, demana a PostgREST metadades de la taula pública i realitza seleccions limitades de només lectura per confirmar l'exposició de dades anònimes sense mutar les dades del client. Les exploracions de repo també executen repo.supabase.missing-rls per marcar les migracions SQL que creen taules públiques sense ENABLE ROW LEVEL SECURITY, i les exploracions secretes busquen l'exposició de claus de servei abans que arribi al navegador.
