The Casebook · §2

The bugs we actually find.
Anonymized for the record.

Each entry below is taken from a real production scan. Names removed; mechanics intact. If your application resembles one of these, you may wish to find out before someone else does.

№01
F
Lovable + Supabase

Stripe live secret in window.__ENV

A B2B SaaS shipped sk_live_… directly in the React bundle. Anyone reading the page source could refund any customer. Fix took four minutes; the leak had been live for roughly three weeks.

Found in
17 days
Fixed in
4 minutes
№02
F
Lovable + Supabase

Forty thousand user emails, readable anonymously

The users table had no RLS policy. A single GET against /rest/v1/users returned the full member list to anyone with the anon key — which is, by definition, public.

Found in
2 days
Fixed in
20 minutes
№03
F
Cursor + Firebase

Firestore rules: allow read, write: if true

A marketplace launched with the default Firebase quickstart rules in production. Their orders collection was world-writable. We found it by listing five candidate collections.

Found in
6 hours
Fixed in
90 minutes
№04
D
v0 + Vercel

OPENAI_API_KEY in client bundle

A chat app wired the key into a client-side fetch. Every page-load shipped a fresh, valid key. Token usage spiked two-hundred-fold in week four.

Found in
5 days
Fixed in
2 hours
№05
D
Hand-rolled Next.js

Source maps and sensitive logic in production

Source map files were served from /_next/static/chunks, exposing JWT verification logic, environment variable names, and a hardcoded admin email allowlist.

Found in
3 weeks
Fixed in
15 minutes
№06
C
Replit + Supabase

Supabase Storage buckets listable

A bucket-listing endpoint returned bucket names including invoices and user-avatars. The names alone were enough reconnaissance for a targeted attempt.

Found in
1 day
Fixed in
10 minutes
A subject of one's own

Submit your URL.
Find out what shipped.

Reviewed in approx. 30 seconds. Free of charge. Confidential.
Or read the reference.