
A copy reaches the wrong account.
Cross-account access to invoices
- Attack path
- The invoice endpoint (GET /api/v2/invoices/{id}) trusted a sequential id from the URL and never checked that the invoice belonged to the calling account. A standard user decrementing the id read invoices from other tenants.
- Evidence
- Two accounts provisioned under the ROE. Account A requested id 41022; substituting an id owned by Account B returned B’s invoice — full billing name, address, and line items — with A’s session token. Captured request/response saved and hashed.
- Impact
- Any authenticated tenant could enumerate and read every other tenant’s billing records. Cross-tenant exposure of personal and commercial data; no privilege escalation required.
- Remediation
- Enforce an ownership check server-side (the invoice’s account must equal the caller’s) before returning the record; move to non-sequential identifiers as defense in depth. Verified by the Zeroday operator, not the engine.
- RETEST
- Ownership check added; re-tested with the same two accounts — cross-tenant read no longer possible. Closed.





