Indvirkning
Angribere kan omgå applikationslogik for at læse, opdatere eller slette poster i databasen, hvis Row Level Security (RLS) ikke håndhæves korrekt [S1]. Dette resulterer ofte i eksponering af personligt identificerbare oplysninger (PII) eller følsomme applikationsdata til brugere, der kun har adgang til den offentlige anonyme API-nøgle.
Grundårsag
Supabase bruger Postgres Row Level Security til at administrere dataadgang på databaseniveau, hvilket er grundlæggende for at sikre data [S1]. I et Next.js-miljø skal udviklere oprette en Supabase-klient, der korrekt håndterer cookies og sessioner for at opretholde sikkerheden under rendering af [S2] på serversiden. Sårbarheder opstår typisk, når:
- Tabeller oprettes uden RLS aktiveret, hvilket gør dem tilgængelige via den offentlige anon-nøgle [S1].
- Supabase-klienten er forkert konfigureret i Next.js, idet den ikke kan sende brugergodkendelsestokens korrekt til databasen [S2].
- Udviklere bruger ved et uheld nøglen
service_rolei kode på klientsiden, som omgår alle RLS-politikker [S1].
Konkrete rettelser
- Aktiver RLS: Sørg for, at Row Level Security er aktiveret for hver tabel i din Supabase-database [S1].
- Definer politikker: Opret specifikke Postgres-politikker for
SELECT,INSERT,UPDATEogDELETE-operationer for at begrænse adgangen baseret på brugerens UID ZXCVZVIXBETOKEN. - Brug SSR-klienter: Implementer
@supabase/ssr-pakken for at skabe klienter i Next.js, der korrekt administrerer server-side-godkendelse og sessionsvedholdenhed [S2].
Hvordan FixVibe tester for det
FixVibe dækker allerede dette gennem implementerede app- og repo-tjek. Det passive baas.supabase-rls-modul opdager Supabase URL- og anon-nøglepar fra JavaScript-bundter med samme oprindelse, beder PostgREST om offentlige tabelmetadata og udfører begrænsede skrivebeskyttede valg for at bekræfte anonym dataeksponering uden at mutere kundedata. Repo-scanninger kører også repo.supabase.missing-rls for at markere SQL-migreringer, der skaber offentlige tabeller uden ENABLE ROW LEVEL SECURITY, og hemmelige scanninger leder efter eksponering af servicerollenøgler, før den når browseren.
