Supabase Security
Security checks specific to Supabase projects. Row Level Security, service role keys, storage policies, and RPC functions.
8 vulnerabilities
Row Level Security Disabled
criticalSupabase tables without RLS enabled allow any authenticated or anonymous user to read, insert, update, and delete all rows using the client library.
RLS Policy with USING(true)
criticalRLS policies that use USING(true) or WITH CHECK(true) effectively disable row-level security by allowing all operations for all users.
RLS Enabled Without Policies
highRLS is enabled on a table but no policies are defined, which silently blocks all access including legitimate queries from your application.
Service Role Key Exposed
criticalThe Supabase service_role key is hardcoded in frontend code, committed to a repository, or exposed in client bundles, granting full database admin access to anyone.
Public Storage Buckets
mediumSupabase storage buckets with overly permissive policies allow any user to upload, read, or delete files including other users' private documents and images.
RPC Functions Without Authentication
highSupabase database functions (RPC) callable from the client without checking auth.uid(), allowing anonymous users to execute privileged operations.
Anon Key with Excessive Permissions
mediumThe anon database role has been granted permissions on too many tables, expanding the attack surface for anyone with the publicly available anon key.
Database Migrations Not in Repository
lowDatabase schema changes are applied manually through the Supabase Dashboard instead of tracked migration files, making security audits and rollbacks impossible.