03-complet-saas · 1–2 days · 8 min
SaaS audit: isolation first, not headers.
On a SaaS, the hole that cuts revenue is not a missing header. It is org A’s invoice read from org B. Full SaaS exists for that. Without two tenants, isolation stays Untested — at the top of the report, not in a footnote.
- When to open it
- Multi-user SaaS: orgs, workspaces, teams, billing, webhooks
- The product promises “your data stays yours”
- You can provide at least one test account; two tenants for any isolation conclusion
- Agents
- 00–11 + saas-multitenant specialist (always)
- Outside this mode
- One tenant: no Confirmed cross-org IDOR. Untested, isolation confidence = 0
- Not a SOC 2 audit, not SSPM for SaaS you consume
- No id enumeration, no bruteforce
The wrong “SaaS security”
Most “SaaS security” pages sell a CISO seat: lock down Slack, Salesforce, Office 365. This is not that. Here you audit the application YOU sell. Your tenants. Your IDs. Your exports.
The two-tenant rule
Authenticate A, note ids the UI and API expose. Authenticate B (separate session). Ask, as B, for a resource of A whose id was seen in A — one GET. 200 with A’s data = evidence. 403/404 = observed control, not a Confirmed finding. One tenant + org_id in the URL = Untested. Confirming an IDOR without two contexts is forbidden.
What the squad looks for
- Invite, SSO, session, reset (agent 04).
- Intra-tenant roles first, then cross-org (05 + specialist).
- Object IDs, exports, webhooks, admin, global search, avatars, S3, caches, impersonation.
- Agent surface: 09 always runs. If nothing exists, it writes that down.
Launch phrase
Full SaaS on https://app.example.tld. Two tenants in the brief. Outside + inside. Accounts out of chat.
Before you launch
- I only have one demo account.
- We still run. Isolation stays Untested, stated at the top. Add a second tenant later and re-run as Delta.
- Is this also an MCP audit?
- 09 always runs on Full SaaS. If the product IS an agent, open MCP mode and add the multi-tenant specialist.
The kit, not the guide.
Open source, MIT. Clone it, open it in Claude, Codex, Cursor or Hermes. A held report — or QA’s silence.