Any customer can read other organisations' invoices by changing an ID
Affected
GET/api/v2/invoices/{invoiceId}
What we found
The endpoint checks that the caller is signed in, but not that the invoice belongs to the caller's organisation. Invoice IDs are sequential, so every invoice in the system can be reached.
Impact
Cross-tenant disclosure of billing addresses, line items and amounts for every customer. Discovered with two ordinary test accounts and no special access.
Recommended fix
Scope the lookup by the caller's organisation on the server, return 404 when it doesn't match, and add a regression test that requests another tenant's invoice. Switching to non-sequential IDs is defence in depth, not a fix.