CVE-2025-32030

7.5 HIGH

📋 TL;DR

A denial-of-service vulnerability in Apollo Gateway allows attackers to craft GraphQL queries with deeply nested and reused named fragments that cause exponential resource consumption during query planning. This affects all Apollo Gateway deployments prior to version 2.10.1 that accept user-submitted GraphQL queries. The vulnerability can be exploited to exhaust server resources and cause service disruption.

💻 Affected Systems

Products:
  • Apollo Gateway
Versions: All versions prior to 2.10.1
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Any Apollo Gateway deployment accepting GraphQL queries is vulnerable. The vulnerability is in the query planning logic, not dependent on specific configurations.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete denial of service through CPU/memory exhaustion, potentially taking down the GraphQL gateway and affecting all downstream microservices.

🟠

Likely Case

Degraded performance and intermittent service disruptions when attackers send crafted queries, impacting legitimate users.

🟢

If Mitigated

Minimal impact with proper query complexity limits, rate limiting, and monitoring in place.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Exploitation requires only the ability to send GraphQL queries, which is typically available to all users. The vulnerability is well-documented in the advisory.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 2.10.1

Vendor Advisory: https://github.com/apollographql/federation/security/advisories/GHSA-q2f9-x4p4-7xmh

Restart Required: Yes

Instructions:

1. Update package.json to specify @apollo/gateway version 2.10.1 or higher. 2. Run npm update @apollo/gateway or yarn upgrade @apollo/gateway. 3. Restart the Apollo Gateway service.

🔧 Temporary Workarounds

Implement Query Complexity Limits

all

Configure Apollo Gateway to reject queries exceeding depth or complexity thresholds

// In Apollo Gateway configuration, add validationRules: [depthLimit(10), createComplexityLimitRule(1000)]

Rate Limit GraphQL Queries

all

Implement rate limiting at the API gateway or application level to prevent query flooding

🧯 If You Can't Patch

  • Implement strict query depth and complexity limits using GraphQL validation rules
  • Deploy a WAF or API gateway with GraphQL-specific protections to filter malicious queries

🔍 How to Verify

Check if Vulnerable:

Check package.json or run npm list @apollo/gateway to see if version is below 2.10.1

Check Version:

npm list @apollo/gateway | grep @apollo/gateway

Verify Fix Applied:

Confirm @apollo/gateway version is 2.10.1 or higher using npm list @apollo/gateway

📡 Detection & Monitoring

Log Indicators:

  • Unusually long query planning times
  • High CPU/memory usage spikes
  • GraphQL queries with deep nesting patterns

Network Indicators:

  • Large GraphQL query payloads with repeated fragment patterns
  • Sudden increase in query response times

SIEM Query:

source="apollo-gateway" AND ("query planning" AND duration>5000ms) OR (memory_usage>90% AND query_count>100)

🔗 References

📤 Share & Export