GraphQL introspection attacks

What are GraphQL Introspection Attacks?

GraphQL introspection attacks exploit GraphQL's built-in self-documentation feature that allows clients to query the schema itself. When introspection is enabled in production, attackers can discover the complete API structure, including hidden queries, mutations, sensitive fields, and internal operations that were never intended to be public. This reconnaissance provides a complete roadmap for further attacks.

Vulnerable Scenario Example

Attacker discovers introspection is enabled:

# Simple introspection test
query {
  __schema {
    types {
      name
    }
  }
}

Response reveals entire API structure:

{
  "data": {
    "__schema": {
      "types": [
        {"name": "User"},
        {"name": "AdminUser"}, 
        {"name": "InternalNotes"},
        {"name": "PayrollData"},
        {"name": "DebugInfo"},
        {"name": "SystemConfig"}
      ]
    }
  }
}

Attack Result: Attacker now knows about sensitive types like AdminUser, PayrollData, and DebugInfo that they can target with specific queries to extract confidential data.

How GraphQL Introspection Attacks Work

GraphQL introspection is designed for development and debugging, allowing developers to explore API capabilities. However, when left enabled in production, it provides attackers with complete visibility into the API's internal structure, revealing attack surfaces that would otherwise remain hidden.

Introspection Attack Flow

  1. Introspection Discovery - Test if introspection queries are accepted

  2. Schema Enumeration - Extract complete schema including all types and fields

  3. Sensitive Field Discovery - Identify fields containing confidential data

  4. Hidden Endpoint Discovery - Find admin-only or internal queries/mutations

  5. Attack Vector Mapping - Plan targeted attacks based on discovered schema

  6. Exploitation - Execute attacks on discovered sensitive endpoints

Impact and Consequences

  • Complete API Mapping - Full visibility into application structure and capabilities

  • Sensitive Data Discovery - Identification of fields containing PII, financial data, secrets

  • Hidden Functionality Exposure - Discovery of admin panels, debug endpoints, internal tools

  • Attack Surface Expansion - Knowledge of all possible attack vectors

  • Business Logic Revelation - Understanding of application workflows and relationships

  • Compliance Violations - Exposure of regulated data fields and operations

GraphQL Introspection Fundamentals

Basic Introspection Queries

Schema Overview:

Type Discovery:

Query Root Fields:

Advanced Introspection Techniques

Complete Schema Dump:

Introspection Attack Methodology

Initial Introspection Detection

Testing for Enabled Introspection:

Using curl:

Using Postman:

Schema Discovery and Analysis

Using GraphQL Playground:

Using GraphQL Voyager:

Using Burp Suite with InQL Extension:

Systematic Schema Enumeration

Using GraphQLmap:

Manual Analysis with Postman Collections:

Common Introspection Attack Patterns

Sensitive Field Discovery

Identifying High-Value Targets:

Field-Level Analysis:

Hidden Query Discovery

Admin and Internal Queries:

Dangerous Mutations:

Argument and Directive Analysis

Input Validation Discovery:

Custom Directives:

Exploiting Introspection Results

Building Targeted Attacks

Using Discovered Admin Queries:

Exploiting Sensitive Fields:

Mutation Exploitation

Dangerous Operations:

Advanced Introspection Techniques

Bypassing Disabled Introspection

Alternative Discovery Methods:

Error-Based Schema Discovery:

Partial Introspection Extraction

Field-by-Field Discovery:

Burp Suite Intruder for Type Discovery:

Detection Evasion Techniques

Header Manipulation

Bypassing Introspection Blocks:

Query Obfuscation

Disguised Introspection:

Tools for Introspection Attacks

Specialized GraphQL Tools

GraphQL Security Testing Tools:

  • InQL (Burp Suite Extension) - Automated introspection and testing

  • GraphQL Voyager - Visual schema exploration

  • GraphQLmap - Command-line GraphQL security testing

  • GraphQL Playground - Interactive GraphQL IDE with introspection

Manual Testing Tools

Postman Configuration for Introspection:

Burp Suite Setup:

Browser-Based Testing

GraphQL Playground Access:

Last updated

Was this helpful?