Sanitized Report Sample

SaaS Application & API Security Review

A fictionalized demonstration of THF reporting depth for a multi-tenant SaaS product. Manual testing focused on APIs, access control, tenant isolation and business logic.

Request a Security ReviewJump to Example Finding

This sample is fictionalized and sanitized. It represents the format and level of detail used in THF engagements. It contains no client data.
01 — Executive Summary

Tenant Isolation Requires Immediate Attention

ObjectiveAssess tenant boundaries, API authorization, session behavior and business-critical workflows in a multi-tenant SaaS product.
Overall RiskCritical. A standard authenticated user could access a record outside the authorized workspace boundary.
Key ObservationAuthentication worked, but server-side ownership validation was not consistently enforced after login.
Business ImpactPotential cross-tenant data exposure, customer trust impact and incident-response obligations.
PriorityBlock release until object ownership checks are enforced and retested across adjacent workflows.
02 — Assessment Scope

Authorized Test Boundaries

Web application
REST API
Authentication flows
Authorization controls
Tenant isolation
Business logic workflows
Session handling
Sensitive data exposure
Administrative functions
SurfaceCoverageRolesStatus
Web applicationAuth, sessions, workflowsStandard / AdminReviewed
REST APIObjects, exports, integrationsWorkspace A / Workspace BReviewed
Out of scopeDoS, social engineering, physical testingExcluded
03 — Testing Methodology

Manual Product-Context Testing

01 Scope Review

Confirm product areas, roles, tenants, test accounts and sensitive workflows.

02 Attack Surface Mapping

Map exposed routes, APIs, objects, integrations and trust boundaries.

03 Authentication Review

Review login, session handling, reset flows and access-state transitions.

04 Authorization Testing

Test horizontal, vertical and tenant-boundary authorization controls.

05 API / Workflow Testing

Exercise object access, exports, bulk actions, state changes and edge workflows.

06 Business Logic Testing

Look for workflow abuse that automated scanners rarely understand.

07 Manual Validation

Reproduce findings safely and confirm impact with authorized test data.

08 Risk Analysis

Prioritize findings by exploitability, data sensitivity and business impact.

09 Remediation Guidance

Provide engineering-ready fixes and retesting criteria.

Coverage is informed by OWASP ASVS, OWASP WSTG and the OWASP API Security Top 10, then extended through manual product-context testing.

04 — Severity Distribution

Validated Risk Distribution

1Critical
3High
5Medium
4Low
2Informational
05 — Risk Matrix

Likelihood vs Business Impact

LikelihoodHigh

Exploitation required only a standard authenticated account and a modified object reference.

ImpactCritical

The weakness crossed tenant boundaries and exposed protected customer records.

Business RiskCross-tenant exposure

Unauthorized data access creates customer trust, contractual and regulatory risk.

06 — Risk Summary

Validated Findings

IDFindingSeverityStatus
THF-001Cross-tenant record accessCRITICALOpen
THF-002Privileged export available to standard usersHighOpen
THF-003Excessive customer metadataMediumOpen
THF-004Session remains active after resetMediumOpen
THF-005Internal object identifiers exposedLowOpen
07 — Example Finding

THF-001 — Cross-Tenant Record Access

Finding TitleCross-Tenant Record Access
SeverityCritical
Affected AreaREST API / Tenant isolation
CategoryBOLA / IDOR
CWECWE-639
EndpointGET /api/v1/records/{id}
Description

The endpoint verifies that the requester is authenticated but does not confirm that the requested record belongs to the requester’s tenant. A Workspace A user can replace a valid identifier with a Workspace B identifier and receive the record with HTTP 200.

Business Impact

The issue breaks a core SaaS security guarantee and could expose customer records across tenant boundaries.

Technical Evidence

GET /api/v1/records/rec_workspace_b_8421
Authorization: Bearer [Workspace A token]

HTTP/1.1 200 OK

Reproduction Summary

A low-privilege user authenticated in Workspace A modified an object identifier to reference a protected Workspace B record.

How This Was Verified

The issue was manually reproduced using a low-privilege test account. Requests were modified to reference resources outside the authorized tenant boundary. The API returned data belonging to another tenant, confirming missing server-side authorization enforcement.

Recommended Remediation

Apply tenant ownership checks in the data-access layer for every read, update, delete, export and batch operation.

Retesting Criteria

The original request and adjacent object-access workflows must return denied responses for cross-tenant resources while valid same-tenant workflows remain functional.

08 — Business Impact

A Core SaaS Security Guarantee Is Broken

  • Cross-tenant disclosure of customer records
  • Contractual and regulatory exposure
  • Potential bulk extraction if identifiers are enumerable
  • Customer confidence and incident-response impact
Authenticated UserValid SessionObject Reference ManipulationMissing Ownership ValidationCross-Workspace AccessSensitive Data Exposure
09 — Technical Evidence

Observed Authorization Failure

Expected

HTTP/1.1 403 Forbidden
Content-Type: application/json

{ “error”: “access_denied” }

Observed

HTTP/1.1 200 OK
Content-Type: application/json

{
“record_id”: “rec_demo_8421”,
“workspace_id”: “workspace_b”,
“customer_name”: “[REDACTED]”,
“status”: “active”
}

10 — Technical Reproduction

Reproduction Steps

  1. Sign in as the Workspace A standard user.
  2. Capture a valid record request.
  3. Replace the record identifier with the authorized Workspace B test record.
  4. Send the modified request.
  5. Observe HTTP 200 and confirm the token still belongs to Workspace A.

No administrative role was required. Testing was limited to authorized test records; no production customer data was accessed.

11 — Remediation Guidance

Enforce Ownership in the Data-Access Layer

Apply the authenticated tenant context to every server-side object lookup. Do not accept tenant identity from client-controlled input, and deny access by default.

record = records.find_one(
id = request.record_id,
tenant_id = authenticated_user.tenant_id
)
  • Constrain read, update, delete, export and batch operations
  • Centralize authorization policy where practical
  • Add automated cross-tenant regression tests
  • Log repeated object-identifier probing
  • Review adjacent endpoints using the same object model
12 — Security Engagement Timeline

Security Engagement Timeline

This sample deliverable represents the end-to-end reporting flow used during a focused SaaS security engagement, from scope confirmation through retesting.

ScopeMapTestValidateReportRetest
13 — Testing Philosophy

Our Testing Philosophy

The Hidden Finds focuses on real-world security testing, not automated vulnerability dumps. Our assessments prioritize exploitability, business impact, access control, API behavior, tenant isolation, and workflow abuse. Every finding is manually validated before being reported.

14 — Deliverables Included

Engineering-Ready Output

  • Executive summary and validated risk summary
  • Scope, methodology and technical findings
  • Sanitized evidence and reproduction steps
  • Business-impact analysis and remediation guidance
  • Engineering prioritization and optional remediation discussion
  • Retest support and final status update
Next Step

See What a Focused Review Would Find

If your team needs SaaS, API, access control, AI workflow, or business logic testing, The Hidden Finds can help scope the right review and deliver practical next steps.

Request a Security ReviewView Resources

NDA available • Scoped SOW • Secure access coordination • Retesting support