Security overview

A technical summary for security reviewers.

Architecture

  • Next.js on Vercel; Supabase (Postgres, Auth, Storage, Realtime).
  • All traffic over HTTPS with HSTS; strict Content-Security-Policy, frame-ancestors none, no-sniff and a restrictive Permissions-Policy.
  • The service-role key is used only in server code after an explicit authentication and role check.

Data protection

  • Row-level security on every table; org IDs are immutable on every row (enforced by trigger).
  • Evidence, vault files and exports are kept in private storage with per-workspace paths (profile photos are public); the legal vault also requires a two-factor-verified session.
  • Third-party secrets (KRA eTIMS keys, calendar tokens) are encrypted with AES-256-GCM before storage and never sent to browsers.
  • Spreadsheet exports neutralize formula injection.

Application security

  • Input validation with zod on every API route; mass-assignment guards; rate limiting on authentication, payment and export routes.
  • Webhook verification: GitHub HMAC-SHA256, IntaSend challenge plus server-side status re-fetch.
  • Open-redirect protection on all post-login redirects.

Reporting a vulnerability

Contact the OrbitOS team with details and steps to reproduce. Please give us reasonable time to fix before disclosure.