| TS-RLS-001 |
Exposed tables without Row-Level Security enabled |
Static |
| TS-RLS-002 |
Data API grants without an applicable row policy |
Static |
| TS-RLS-003 |
Unconditional or omitted policy boundaries (e.g. USING (true))
|
Static |
| TS-RLS-004 |
Policies that grant access to unintended or public roles
|
Static |
| TS-RLS-005 |
Write policies without an effective WITH CHECK clause |
Static |
| TS-RLS-006 |
Superuser or BYPASSRLS scan roles configured for app queries
|
Static |
| TS-RLS-007 |
Table ownership bypassing RLS (FORCE ROW LEVEL SECURITY omitted)
|
Static |
| TS-RLS-008 |
Authorization based on user-editable client metadata |
Static |
| TS-RLS-009 |
Deprecated Supabase auth helper function invocation |
Static |
| TS-RLS-010 |
TRUNCATE grants, which bypass row-level security entirely
|
Static |
| TS-FT-001 |
Exposed foreign tables without RLS protection |
Static |
| TS-FN-001 |
Exposed SECURITY DEFINER functions callable by public roles
|
Static |
| TS-FN-002 |
SECURITY DEFINER functions with unsafe search_path |
Static |
| TS-STORAGE-001 |
Supabase Storage bucket and object-policy mismatches |
Static |
| TS-PERF-001 |
Per-row auth.uid()/auth.jwt() calls without scalar SELECT caching
|
Static |
| TS-PERF-002 |
Tenant columns lacking leading B-tree indexes |
Static |
| TS-VIEW-001 |
Views exposed without security_invoker = true |
Static |
| TS-DYN-SELECT |
Cross-tenant row reads via simulated tenant roles |
Dynamic |
| TS-DYN-INSERT |
Cross-tenant inserts and owner claim verification |
Dynamic |
| TS-DYN-UPDATE |
Cross-tenant updates and tenant ownership hijacking |
Dynamic |
| TS-DYN-DELETE |
Cross-tenant row deletion attempts |
Dynamic |
| TS-DYN-SUBQUERY |
Dual-organization scalar subquery failures (SQLSTATE 21000)
|
Dynamic |