Anatomy of a finding

A finding you
can follow.

Read the evidence. Reproduce the issue. Review the fix. Check it again.

Illustrative report using synthetic data and a reserved .test domain. No live application was tested.

SAMPLE FINDINGMedium · 6.5

One account. Someone else’s invoice.

A signed-in member can read an invoice from another workspace by changing its ID.

CWE-639BROKEN OBJECT AUTHORIZATION
Request as Workspace A member
GET /api/invoices/inv_8421 HTTP/1.1
Host: demo.harbor.test
Authorization: Bearer [workspace-a-token]
Response
HTTP/1.1 200 OK
{
  "workspace_id": "workspace_b",
  "invoice_id": "inv_8421",
  "total": 2400
}
Workspace A can read Workspace B’s data.
Illustrative example. No live target.Download sample

Why this matters

The API authenticated the member, but did not check whether the invoice belonged to that member’s workspace. Authentication answers “who are you?” Authorization still needs to answer “can you read this?”

Assessed severity

CVSS v3.1: 6.5 (Medium). Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N. This sample assumes a logged-in attacker and a high confidentiality impact, with no demonstrated change to data or availability.

Fix the boundary, then retest it

Resolve the invoice within the caller’s server-verified workspace. Add tests for cross-tenant reads and confirm that authorized users can still access their own invoices.

Download sample JSON

Ship the fix. Check it holds.

Give rootscan a login. Get back to building.

Start testing

Inside rootscan

Illustrative rootscan dashboard

Illustrative product preview with sample data. Explore an interactive sample finding

Connect your Shopify store

Connect once. Keep watch.

Enter your store address to prepare your connection.

Website preview: this prepares a connection summary. No app is installed and no scan runs.

Start your first test

Give rootscan a way in.

Create a free account, then connect a test login and review your scan scope.

Create free account Already have an account? Sign in

No scan starts until you authorize it in the app.