Supabase
Security FAQ

What vulnerabilities are found in Supabase apps?

Get instant answers about your app's security.

Short Answer

Scans of Supabase apps surface a recurring set of findings: tables without rls, service role key exposure, and permissive rls policies. 1 of these have documented real-world exploitation.

Detailed Answer

Reference incident

The majority of Supabase security incidents stem from tables without Row Level Security enabled. When RLS is disabled, anyone with your anon key can read, modify, or delete all data in that table. This is the backdrop for every Supabase vulnerability discussion — apps were demonstrably exposed, and the root causes were configuration, not platform code.

The vulnerabilities actually found in Supabase apps

Not theoretical OWASP categories — specifically what appears when VAS, security researchers, and bug bounty hunters look at live Supabase deployments:

  1. **[CRITICAL]** **Tables Without RLS** *(high likelihood)*

Any table without RLS enabled is fully exposed via the public API.

*Observed:* This is the #1 vulnerability in Supabase apps, affecting majority of vibe-coded projects.

*Fix:* ALTER TABLE name ENABLE ROW LEVEL SECURITY; on every table.

2. **[CRITICAL]** **Service Role Key Exposure** *(medium likelihood)*

The service_role key bypasses all RLS and grants admin access.

*Fix:* Never use service_role in frontend. Keep it server-side only. Rotate if exposed.

3. **[HIGH]** **Permissive RLS Policies** *(medium likelihood)*

Policies that allow more access than intended (e.g., any authenticated user).

*Fix:* Use (select auth.uid()) = user_id pattern. Test policies with different contexts.

4. **[HIGH]** **Unprotected RPC Functions** *(medium likelihood)*

Database functions callable without authentication.

*Fix:* Add auth.uid() IS NOT NULL checks at the start of all functions.

5. **[MEDIUM]** **Storage Bucket Exposure** *(medium likelihood)*

Storage buckets without policies allow public read/write.

*Fix:* Configure storage policies to require authentication and ownership.

Distribution by severity

Of the findings above, 2 sit at critical impact (full data exposure), 2 at high (significant data or account compromise), and the rest are medium-or-lower (attack surface expansion). A first-scan Supabase app typically has 2–4 findings from this list live at any moment.

How to know which ones are in your app

Run a VAS scan. Each finding above is tested directly — we query your database to verify access controls are active, scan bundles for key patterns, probe auth endpoints for rate limiting, and check security headers in live responses. Output is a per-finding report with evidence and fix.

Security Research & Statistics

10.3%

of Lovable applications (170 out of 1,645) had exposed user data in the CVE-2025-48757 incident

Source: CVE-2025-48757 security advisory

91%

of data breaches involve databases with misconfigured access controls

Source: Verizon Data Breach Investigations Report

4.45 million USD

average cost of a data breach in 2023

Source: IBM Cost of a Data Breach Report 2023

Expert Perspectives

Vibe coding your way to a production codebase is clearly risky. Most of the work we do as software engineers involves evolving existing systems, where the quality and understandability of the underlying code is crucial.

Simon WillisonSecurity Researcher, Django Co-creator

The problem with AI-generated code isn't that it doesn't work - it's that it works just well enough to ship, but contains subtle security flaws that are hard to spot.

Security Research CommunityCollective wisdom from security researchers

Check Your Supabase App's Security

VAS scans for all the security issues mentioned above. Get a comprehensive security report in minutes.

Get Starter Scan

More Questions About This Topic

How severe are the vulnerabilities typically found in Supabase apps?

Supabase apps lean critical: Tables Without RLS alone can expose the full user dataset in one query. That's a critical-impact finding with high likelihood — it is, in practice, the default state of an unscanned Supabase app. Compare to e.g. missing security headers (medium) which require additional exploitation. Triage accordingly: critical findings are measured in minutes-to-breach, mediums in weeks.

How do I fix vulnerabilities once they're found in my Supabase app?

Each finding comes with a specific fix. Example: for "Tables Without RLS" → ALTER TABLE name ENABLE ROW LEVEL SECURITY; on every table. VAS exports these as markdown you can feed directly into Supabase's AI (or any other AI assistant) to apply the fix in-place. Re-scan afterward to confirm.

Can vulnerabilities in Supabase apps be exploited by a non-expert attacker?

Most can. Extracting an exposed API key is a single "view source" operation. Querying a table without RLS is a `curl` command. Exploiting missing rate limiting requires scripting skills equivalent to "follow a tutorial." Only a handful of the findings above (e.g., chained auth bypass) require specialist knowledge — the rest are routinely exploited by automated scanners with zero human involvement.