Exception Security Private offensive security The platform

Sample finding

What one finding looks like when you open it

This is a sample. ExamplePay, its systems and everything below are fictional, written to show the format. It is not client work, no real system was tested, and the hashes and identifiers are illustrative. The score is real: it is what our scorer returns for this finding's inputs.

A buyer deciding whether to run private testing should see the deliverable first. This is one finding as it appears on the platform: what happened, what it means for the business, how to reproduce it, how it is scored, and the decisions that stay with you.

F-2610-4821 · Another merchant's settlement report can be downloaded by changing its ID

EngagementExamplePay merchant dashboard (sample)
AssetSettlement reports, merchant dashboard
ResearcherRSH-7F2A (a stable pseudonym; you never see a legal identity)
Exception Impact Score5.1 Medium
CVSS 3.16.5 Medium (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N)
ClassificationCWE-639 Authorization bypass through a user-controlled key · OWASP A01:2021 Broken access control
StageRemediation

Summary

A signed-in merchant can download any other merchant's daily settlement report. The download link carries a sequential report ID, and the server checks that the requester is signed in but not that the report belongs to them. Changing the number in the link returns someone else's report.

Business impact

Each report lists a merchant's transactions for the day: amounts, settlement totals, masked card numbers and customer reference IDs. Anyone with a merchant account, including one opened for the purpose, could collect the reports of every other merchant by counting through the IDs. That is confidential financial data of businesses who trusted the platform with it, and the kind of exposure a payment company is expected to report to its regulator and its merchants.

Steps to reproduce

  1. Sign in as merchant A and open Reports → Settlement.
  2. Download today's report. The request is GET /api/v2/settlements/reports/88231/download.
  3. Repeat the request with the ID changed to 88230.
  4. The response is merchant B's report, with a 200 status and the full file.

The researcher used two test merchant accounts created for the engagement and stopped after confirming one report from each, as the rules of engagement require. Nobody else's data was kept.

Evidence

How it is scored

We record both CVSS and the Exception Impact Score. The EIS weights the technical picture by the asset, the data and the regulation that apply. For this finding we set the asset as financial reporting, the data as confidential and the regime as banking and card rules.

Technical baseBusiness multiplierContextReport qualityEIS
5.278.7×+0.45+0.555.1 Medium
EIS:1.0/AV:N/AC:L/AU:S/C:H/I:N/A:N/AT:FR/DC:C/IR:B  →  5.1  MEDIUM

It needs a signed-in account and only reads data, so it is not Critical. It reaches confidential financial data under banking rules, so it is ranked well above the same flaw on a page carrying nothing. How the score works.

Remediation

Check ownership on the server for every report request: look the report up by its ID and the signed-in merchant's ID, and return 404 when they do not match. Replace sequential IDs with random ones as a second layer, not as the fix. Then check the other download endpoints that take an ID, such as invoices, refunds and payout statements, for the same pattern.

What happens to a finding

StageWhat it meansWho moves it
ReportedThe researcher submits it inside the authorised window and scopeResearcher
ValidationOur team reproduces it and sets the score, or closes it as invalidOur team
DisclosureSent formally to your named security contactOur team
RemediationYour team fixes itOur team records it
RetestThe fix is checked; a failed retest goes back to remediationOur team
ClosedResolved, with the full history keptOur team

What you decide, and what is recorded

Want to see it on the live platform? Write to founder@exceptionsecurity.com for a 10-minute walkthrough. If you'd rather start with no commitment at all, the free disclosure programme runs a reporting page in your name, and the free posture check shows what your domain tells a stranger.