Supabase
Security FAQ

What security issues do Supabase apps have?

Get instant answers about your app's security.

Short Answer

Supabase apps surface a predictable distribution of issues: 2 critical-impact classes (tables without rls, service role key exposure), 2 high-impact, 1 medium-or-below. The critical ones are what cause data breaches.

Detailed Answer

Headline incident: Most Supabase Security Issues: Missing RLS

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.

Critical issues in Supabase apps

  • **Tables Without RLS**: 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.)*
  • **Service Role Key Exposure**: The service_role key bypasses all RLS and grants admin access.

High-severity issues

  • **Permissive RLS Policies**: Policies that allow more access than intended (e.g., any authenticated user).
  • **Unprotected RPC Functions**: Database functions callable without authentication.

Medium/low-severity issues

  • **Storage Bucket Exposure**: Storage buckets without policies allow public read/write.

Why these are the issues specific to Supabase

Supabase apps ship with a recognizable stack (supabase). The issue list above is what appears when you scan that specific combination. A Firebase-backed app would have a different top-5; a self-hosted Postgres deployment would have yet another. Context is everything.

What VAS checks in a Supabase scan

  • **RLS Policies** — Tests your Row Level Security by attempting to read/write data as anonymous and authenticated users.
  • **Service Key Exposure** — Scans for service_role keys that should never be in client-side code.
  • **RPC Functions** — Tests your database functions for proper authentication requirements.
  • **Auth Configuration** — Checks authentication settings for weak passwords, missing verification, and rate limiting.

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

Which Supabase security issue is most dangerous?

Tables Without RLS. Any table without RLS enabled is fully exposed via the public API. Real-world evidence: This is the #1 vulnerability in Supabase apps, affecting majority of vibe-coded projects. The fix: ALTER TABLE name ENABLE ROW LEVEL SECURITY; on every table.

Are these issues unique to Supabase, or do they appear across platforms?

The patterns overlap with firebase, bolt, lovable — all vibe-coding platforms share the "AI-generated code prioritizes functionality over security" problem. But the *specific manifestation* differs per platform. An exposed Supabase anon key is structurally different from an exposed Firebase config, which is different from an exposed Postgres connection string. The right scan is platform-aware.

How do I see which of these issues my Supabase app has?

Run a VAS scan against your deployed Supabase app URL. It checks every issue in the list above, confirms each by actually probing (not just reading headers), and prioritizes by severity with copy-paste fixes. Most Supabase app scans return results in 2–3 minutes.