vulns.co
/
GKData.io MCP

Tenant boundaries

A tenant id on an export, a job, or a file is a label until a second tenant can read the object. Test membership on the worker that builds the file, not only on the request that queued it.

Skill: Access control and tenant boundaries

Ask: Can account A read or change an object that belongs to account B, including a job, export, or leftover endpoint?

Stop: One object you own is denied to the other account, and one object you should not own is not returned.

Open the skill

Practice the class in the browser: PortSwigger Web Security Academy. The lab is theirs. This page is the stop condition and the disclosures.

Checklists

  • Tenant isolation - A tenant is a boundary, not a label in the UI. Replay objects you own across two organisations and record which identifier the server actually trusts.

Disclosures

No public card yet.

Playbooks

  • Tenant isolation - A tenant is the boundary between organizations, not a label in the UI. The test is two organizations you are allowed to join, and which identifier the server actually trusts.

Tools

  • Burp Suite - The industry-standard intercepting proxy for manual web testing. Community edition is free; Pro adds the active scanner and automation.
  • Caido - A modern, lightweight web proxy and pentest toolkit - a fast alternative to Burp with a clean workflow and scriptable automation.

Questions

The tenant id is a UUID. Am I done?

No. UUIDs leak in exports, invites, and object paths. The test is two tenants you are allowed to join, and whether the worker re-checks membership.

Is a tenant miss the same as a user object swap?

Same family, different boundary. A user who can read a teammate is one bug. A user who can read another organization is the tenant bug. Report the boundary you actually crossed.

This page is the linked pack hunt_brief("tenant") returns on the MCP connector. Authorized testing only.