TenantTrace — tenant isolation audit

run VALID · http://127.0.0.1:8002

No cross-tenant access proven 34 cross-tenant attempts against 11 endpoints were refused by the application, using real credentials for a second tenant. A further 24 attempts could not be judged and count as neither. This covers what was probed — not the whole application.

Scope

Target
http://127.0.0.1:8002
Started
2026-07-27T14:21:17+00:00
Duration
0.6s
Tool
tenanttrace 0.1.0
Surface probed
11 endpoints of 11 reachable · 12 operations declared, the rest outside this run's shape
Attacks run
idor, listing, param_override, cache, aggregate, mass_assign
Evidence
canaries, identifiers, and exact counts

Summary

0confirmedproven by seeded ground truth
0suspectedhypotheses; never gate CI
11/12endpointsprobed of those known
34refusedattempts the app blocked

58 cross-tenant attempts across 11 endpoints.

Findings

None. Every cross-tenant attempt below was refused by the application.

Run integrity

Why the answer above can be trusted: the checks that prove the harness worked, and what the application refused.

Positive controls

What was checked and held

34 cross-tenant attempts were correctly refused.

attackrefused
aggregate6
cache4
idor8
listing8
mass_assign8

24 attempts were inconclusive — the oracle could not decide, which is not the same as enforcement.

Run notes

How to read this report
Confirmed
A canary planted in another tenant's data came back in this tenant's response, or an exact count did not match. Proven, not inferred — these are the only findings that fail CI by default.
Suspected
A hypothesis from reading the source: a query that looks unscoped. It has not been reproduced over HTTP and never gates a build on its own.
Positive control
A tenant reading its own data. If that fails, the harness is broken and an empty finding list means nothing — so the run is marked INVALID rather than clean.
Severity
The inherent severity of the category, never discounted by how sure we are. A suspected critical is still a critical that we are unsure about; flattening the two would let a hypothesis disappear below a CI threshold.
Inconclusive
The attempt ran but the oracle could not decide — a truncated body, a redirect. Deliberately not counted as enforcement.