Every finding carries two labels: how much harm it would allow (Critical to Low) and how sure we are (Likely, Reproduced, Fix verified). A rule matching the code proves neither, which is why the sandbox exists.
- Likely
- A rule matched the code and nothing in the code contradicted it. A strong lead, not yet a proven bug.
- Reproduced
- A private copy of the app ran in a sandbox with two test customers, and one of them reached the other's data.
- Fix verified
- After the fix, the same attack was refused, and each test customer could still reach their own data.
- Critical, High, Medium, Low
- How much harm the problem allows if the lead is right: from other people's data today (Critical) to tidy-up (Low).
- Row Level Security (RLS)
- The lock inside a Supabase database that decides which rows each signed-in user may read or change.
- Admin key (service role)
- The Supabase key that skips every Row Level Security rule. It belongs on the server, and code that uses it has to check the user itself.
- Entry point
- A way into your app from outside: an API route, a server action, or a page that runs code on the server.
- SECURITY DEFINER function
- A database function that runs with its owner's rights, so Row Level Security does not apply inside it.