← Back to All Scanners
Advanced AttacksMedium Severity

GraphQL Depth Limit Bypass Scanner

Identifies GraphQL nested query DoS vulnerabilities.

What is GraphQL Depth Limit Bypass?

GraphQL Depth Limit Bypass exploits deeply nested queries to cause denial of service. Queries like {user{friends{friends{friends{...}}}}} with 20+ levels can cause exponential database queries or memory consumption. Even with depth limits, aliasing, fragments, and other techniques may bypass restrictions.

Why is This Important?

A single malicious query can crash a GraphQL server or overwhelm the database. Without depth limits, O(n^depth) complexity quickly becomes unmanageable. Even with limits, bypass techniques can achieve similar effects. This is a significant DoS vector for any GraphQL API.

How It Works

1. Attack Surface Mapping

Identifies complex attack vectors including race conditions, desync points, and logic flaws in your application.

2. Advanced Exploitation

Executes sophisticated attack techniques that bypass traditional security controls and detection mechanisms.

3. Impact Assessment

Demonstrates real-world impact with detailed exploitation chains and business risk analysis.

Key Capabilities

Expert-level security testing for sophisticated vulnerabilities that evade traditional scanning tools.

  • Race condition and timing attack detection
  • Request smuggling and desync analysis
  • Business logic flaw identification
  • Chained exploit development
  • Protocol-level vulnerability testing

Frequently Asked Questions

How do depth attacks cause DoS?

Nested relationships multiply queries: user→10 friends→100 friends→1000 friends→10000. Each level multiplies by the relation count. Database query count or memory for results grows exponentially. Even caching doesn't prevent the initial attack from overwhelming resources.

What bypass techniques exist for depth limits?

Bypasses include: using aliases to repeat fields ({a:user{friends} b:user{friends}}), fragment spreading to obscure depth, inline fragments, multiple queries in a batch, circular references, and combining width (many fields) with depth for amplification.

What's the difference between depth and complexity?

Depth counts nesting levels. Complexity considers the 'cost' of each field and multiplication factors. A query with 3 levels but 1000 items per level may be more dangerous than 10 levels with 1 item each. Both need limiting, but complexity is more comprehensive.

How do I properly limit query depth and complexity?

Prevention: implement depth limiting (typically 5-10 levels max), add complexity analysis considering field costs and list sizes, implement query timeout, use pagination to limit results, cache aggressively, consider persisted queries (only allow pre-approved queries), and load test with malicious queries.

Related Scanners

Ready to secure your application?

Start testing for graphql depth limit bypass vulnerabilities today.

Get Started Free