Catalog 2026.10.15
Checks
Each check has an ID, a severity and a plain-English explanation. 63 checks are enabled.
data
- SEC-001 · Secret committed in repo (current tree) · P0
- SEC-002 · Secret in git history · P1
- SEC-003 · Service-role or secret key in client bundle · P0
- SEC-004 · Public env prefix on a secret · P0
- SEC-005 · AI provider key used from browser · P0
- SEC-006 · .env file committed · P0
- DB-001 · Supabase table readable anonymously · P0
- DB-002 · RLS disabled on table · P0
- DB-003 · Policy allows anyone to write · P0
- DB-004 · Public storage bucket with user uploads · P1
- DB-005 · Firestore or Realtime Database rules open · P0
- DB-009 · SQL built by string concat · P1
- DB-010 · security definer function without search_path · P1
- PORT-001 · Database port publicly reachable · P0
- PORT-003 · .git or .env served over HTTP · P0
payments
- PAY-001 · Stripe webhook without signature verification · P0
- PAY-002 · Price or amount taken from client · P0
- PAY-003 · Paid access granted on redirect not webhook · P1
- PAY-004 · Webhook handler not idempotent · P1
- PAY-005 · Stripe live secret in frontend · P0
- PAY-006 · No handling of failed invoice or deleted subscription · P2
- WH-001 · Inbound webhooks unsigned · P1
- WH-002 · Webhook replay drill failing · P1
auth
- SEC-008 · Hard-coded admin email or password · P0
- AUTH-001 · Admin route without auth check · P0
- AUTH-002 · Authorization by client-side flag only · P0
- AUTH-003 · Supabase user_metadata used for roles · P1
- AUTH-004 · Email confirmation disabled with paid features · P2
- AUTH-005 · Missing rate limit on login, signup or OTP · P1
- AUTH-006 · JWT verified without algorithm, issuer or audience · P1
- AUTH-007 · Session cookie without HttpOnly, Secure or SameSite · P1
- AUTH-008 · Password reset token predictable or without expiry · P1
- AUTH-009 · IDOR: resource fetched by id without owner check · P0
- HDR-005 · CORS allows any origin with credentials · P1
availability
- DB-006 · No backups or point-in-time recovery · P1
- DB-007 · Backups never restore-tested · P1
- TLS-001 · Certificate expires in under 14 days · P1
- TLS-002 · TLS below 1.2 accepted · P1
- TLS-003 · HTTP not redirected to HTTPS · P1
- PORT-002 · Admin panels exposed · P1
- DEP-001 · Dependency with known critical CVE · P1
- DEP-002 · Dependency with high CVE · P2
- AVL-001 · No error tracking · P2
- AVL-002 · No health endpoint · P2
- AVL-003 · No rollback path · P1
- AVL-004 · Unbounded AI spend · P1
- AVL-005 · No uptime monitor · P2
hygiene
- SEC-007 · Source maps public in production · P2
- DB-008 · Migrations not in repo · P2
- HDR-001 · Missing HSTS · P2
- HDR-002 · Missing CSP · P2
- HDR-003 · Clickjacking: no frame-ancestors or X-Frame-Options · P2
- HDR-004 · X-Content-Type-Options missing · P2
- HDR-006 · Server or version banner leak · P2
- TLS-004 · Mixed content · P2
- DEP-003 · No lockfile · P2
- DEP-004 · Abandoned or typosquat package · P1
- HYG-001 · No tests at all · P2
- HYG-002 · TypeScript strict off or ignoreBuildErrors · P2
- HYG-003 · Console logs of tokens or personal data · P1
- HYG-004 · Debug or test routes left in production · P1
- HYG-005 · dangerouslySetInnerHTML with user input · P1
- HYG-006 · Open redirect · P2