Controlled SaaS audit sample

Sample SaaS Security Audit Report

See how Agnite Studio documents tenant isolation failures, authorization gaps, broken authentication, billing trust issues, webhook validation problems, export leaks, API key misuse, and audit log weaknesses.

Report summary

10 findings across SaaS trust boundaries

Scope

Tenant isolation, RBAC, billing, webhooks, exports

Evidence

Request and response artifacts

Format

Severity, evidence, impact, fix direction

Status

Controlled sample, not client data

This public sample shows the structure and level of evidence used in an Agnite SaaS security audit. It uses controlled lab scenarios instead of client data, so the findings can be reviewed without exposing private systems, source code, internal URLs, or raw request dumps.

01 Overview

What a buyer or engineering lead can expect from the audit output

The report focuses on security boundaries that matter in multi-tenant SaaS products: who made the request, which tenant or object was targeted, what the vulnerable behavior allowed, what the fixed behavior should enforce, and how the issue should be retested.

Evidence model

Each finding is framed around impact, proof summary, and remediation direction so the risk is understandable to both engineering and business stakeholders.

Public safety boundary

The public version intentionally omits raw commands, request dumps, source code, local URLs, repository names, and seed data.

02 Scope

Boundaries covered in the sample audit

Application

Fictional multi-tenant SaaS lab

Review type

Controlled security review of vulnerable and fixed request paths

Evidence model

Observed behavior, impact, proof summary, and remediation direction

Coverage

Tenant isolation, RBAC, billing, webhooks, exports, API keys, sessions

03 Findings Overview

Findings ordered by risk and business impact

Critical issues are shown first because they can expose tenant data, alter billing state, or accept forged trust signals. High severity issues cover privilege escalation, credential misuse, replay paths, and bulk data exposure.

FindingSeverityAreaProof Summary
Cross tenant invoice accessCriticalTenant isolationAn Alpha user can read a Beta invoice from the vulnerable endpoint.
Fake plan upgrade acceptedCriticalBillingThe vulnerable route trusts a client-supplied paid flag and accepts an enterprise upgrade.
Unsigned webhook acceptedCriticalWebhooksA Stripe-like webhook is processed without any signature on the vulnerable route.
Cross tenant project IDORHighIDOR / BOLAThe vulnerable project lookup exposes a Beta project to an Alpha user.
Member can invite usersHighRBACA regular member can create a project invite on the vulnerable route.
Expired token still worksHighBroken authenticationThe vulnerable profile endpoint still accepts an expired session token.
Cross tenant export leakHighExports and downloadsThe vulnerable export includes projects from Beta and Gamma, not just Alpha.
Deleted API key still worksHighAPI keysA deleted API key still authenticates to the vulnerable API key route.
Password reset token reusedHighBroken authenticationThe same reset token can be consumed more than once on the vulnerable flow.
Weak audit logsMediumAudit loggingThe vulnerable audit log misses key actor, target, tenant, and result context.
04 Detailed Summaries

Each finding uses the same evidence format

Every finding explains why the issue matters, what behavior proved the weakness, and what control should be added or corrected.

Critical Tenant isolation

Cross tenant invoice access

Why it matters

Financial records, billing history, and tenant identity data can be exposed across customer boundaries.

Proof summary

An Alpha user can read a Beta invoice from the vulnerable endpoint.

Fix direction

Enforce tenant-scoped authorization on every request and reject any object that falls outside the caller's tenant.

Critical Billing

Fake plan upgrade accepted

Why it matters

An attacker could unlock premium service tiers without a real payment event or billing validation.

Proof summary

The vulnerable route trusts a client-supplied paid flag and accepts an enterprise upgrade.

Fix direction

Move billing state decisions to trusted server-side checks and verify plan changes against authoritative subscription data.

Critical Webhooks

Unsigned webhook accepted

Why it matters

Forged events can alter subscription state, credits, or entitlement data without a valid trust boundary.

Proof summary

A Stripe-like webhook is processed without any signature on the vulnerable route.

Fix direction

Verify webhook signatures before processing, reject unsigned payloads, and make event handling idempotent.

High IDOR / BOLA

Cross tenant project IDOR

Why it matters

Project metadata, names, and tenancy details can be enumerated across customers.

Proof summary

The vulnerable project lookup exposes a Beta project to an Alpha user.

Fix direction

Bind object lookups to the authenticated tenant and deny any request that references an out-of-scope object.

High RBAC

Member can invite users

Why it matters

Unprivileged users can expand access and create unauthorized accounts inside a tenant.

Proof summary

A regular member can create a project invite on the vulnerable route.

Fix direction

Enforce role checks on the server and restrict invite creation to the minimum privileged role required.

High Broken authentication

Expired token still works

Why it matters

Expired credentials can continue to access user data after they should be invalid.

Proof summary

The vulnerable profile endpoint still accepts an expired session token.

Fix direction

Validate token expiry on every request and reject sessions once they are past their allowed lifetime.

High Exports and downloads

Cross tenant export leak

Why it matters

Bulk export paths can leak multiple tenants' project identifiers and internal structure at once.

Proof summary

The vulnerable export includes projects from Beta and Gamma, not just Alpha.

Fix direction

Scope exports to the caller's tenant and apply the same authorization checks used by interactive reads.

High API keys

Deleted API key still works

Why it matters

Revoked credentials can continue to access protected endpoints.

Proof summary

A deleted API key still authenticates to the vulnerable API key route.

Fix direction

Check key revocation status at request time and invalidate any cached auth state when a key is deleted.

High Broken authentication

Password reset token reused

Why it matters

One-time password reset links can be replayed to keep resetting or hijacking accounts.

Proof summary

The same reset token can be consumed more than once on the vulnerable flow.

Fix direction

Make password reset tokens single use, expire them quickly, and invalidate them after the first successful redemption.

Medium Audit logging

Weak audit logs

Why it matters

Poor audit trails make it harder to investigate abuse, denied actions, and support activity.

Proof summary

The vulnerable audit log misses key actor, target, tenant, and result context.

Fix direction

Log actor, target, action, tenant, result, and request context so security and support teams can reconstruct incidents.

05 Retest Checklist

Confirm the vulnerable behavior is gone

Reproduce the original vulnerable behavior in the controlled lab scenario.
Apply the remediation or compare against the fixed route.
Repeat the same request sequence with the same actor, tenant, object, and role context.
Confirm the response is blocked, scoped, rejected, or logged correctly.
Record the retest result next to the original finding.
06 Fix Priority Plan

Start with the trust boundary failures first

Fix the issues that break trust boundaries before polishing lower-risk hardening work.

01

Close the critical trust boundary issues first: cross-tenant invoice access, fake plan upgrade accepted, and unsigned webhook accepted.

02

Fix high severity tenant scoping and privilege escalation paths next, including cross-tenant IDORs, RBAC bypasses, and API key scope issues.

03

Harden broken auth and replay paths so expired, reused, and revoked credentials are rejected consistently.

04

Improve audit fidelity so suspicious actions, denied requests, and support activity are easier to investigate.

07
Next step

Need this level of evidence for your SaaS?

If your product has tenants, roles, billing flows, exports, API keys, webhooks, or sensitive audit trails, Agnite Studio can test those boundaries and return clear findings with remediation direction.