Nobody hacked these databases. That is the uncomfortable part. UpGuard's research looked across roughly 300,000 domains using Supabase and found 16,326 databases whose tables could simply be read by anyone who asked. TechCrunch covered the findings on 25 September.
What was sitting in the open
Over half showed signs of personal information. Smaller numbers held passwords, authentication tokens and indications of payment data. UpGuard's examples are concrete: a US valet service with more than 100,000 customer records including licence plates, a Philippine OTP service holding over 100,000 SMS messages with verification codes, and an African consulate exposing details of 25,000 vulnerable people, including emergency housing locations. Cybernews adds a Canadian immigration service with 884 plaintext passwords in a roughly 5,000-record table.
The setting at the centre
Supabase exposes Postgres through an API. The thing standing between the public key embedded in an app and the data is row level security (RLS). According to UpGuard, Supabase turned RLS on by default for tables created in its dashboard from March 2025, but tables created programmatically through the API do not get it by default. That second route is exactly how coding agents create schemas. The assistant writes a migration, the app works, and nobody opens the dashboard to notice the missing policy.
Why this is a process failure, not just a platform one
It is tempting to blame the tool, or the user, or the model. All three are involved, but the fix is a gate. A prototype becomes a product because the demo went well, and at no point does somebody ask who can read the table. The pattern is familiar from storage buckets a few years back, and UpGuard makes the same comparison.
A review list for anything generated from a prompt
- Enumerate every table in production and confirm RLS is enabled, not assumed.
- Test as an anonymous user with the public key. If a select returns rows, you have your answer.
- Search for plaintext passwords, tokens and OTPs. They should not be in your database at all.
- Add the check to CI so a new table without a policy fails the build.
- Keep an inventory of apps built outside engineering. Marketing and operations teams now ship software too.
- Know your notification duties. In the UK, exposed personal data can be a reportable breach even with no attacker identified.
Fast building is not the problem; unreviewed building is. If you would like help setting up lightweight guardrails for AI-assisted development, email sales@halfteck.com.