☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 7.5 🐛 CWE-770
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-32030

CVE-2025-32030 Vulnerability in Apollo Gateway
📅 PUBLISHED: 2025-04-07 20:38 UTC 🔄 UPDATED: 2026-09-23 20:20 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: LIKELY — 2 independent sources confirm fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.51%
👁️
0.51% probability
12.8× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
Patch available — upgrade to latest release
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
7.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-32030 is a high-severity Denial of Service (DoS) vulnerability in Apollo Gateway, a critical component for combining multiple GraphQL microservices. The flaw resides in the query planning engine, specifically during the expansion of deeply nested and reused named fragments. An unauthenticated attacker can craft a malicious GraphQL query that causes exponential resource consumption during fragment expansion, leading to excessive CPU and memory usage and ultimately a denial of service. The vulnerability is patched in version 2.10.1. No public exploit code or proof-of-concept is currently available, but the risk is significant due to the low attack complexity and network-based vector.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability affects the @apollo/gateway npm package. Organizations using Apollo Federation to compose a GraphQL supergraph are at risk. The package is a critical dependency in many modern API gateways. The supply chain risk is moderate; while the package itself is widely used and maintained, the vulnerability allows a remote, unauthenticated attacker to disrupt service without any special privileges. Teams should immediately audit their dependency trees for @apollo/gateway versions below 2.10.1 and update to the patched version.

CVSS Breakdown & Threat Level

  • CVSS Score: 7.5 (High)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
  • Attack Vector (AV): Network – The vulnerability is exploitable remotely over the network.
  • Attack Complexity (AC): Low – No special conditions or complex attack sequences are required.
  • Privileges Required (PR): None – No authentication is needed.
  • User Interaction (UI): None – The victim does not need to perform any action.
  • Scope (S): Unchanged – The vulnerable component and the impacted component are the same.
  • Confidentiality (C): None – No data is exposed.
  • Integrity (I): None – No data is modified.
  • Availability (A): High – The primary impact is a complete denial of service.

Threat Level: High. The low attack complexity and network vector make this a serious threat for any organization running an unpatched Apollo Gateway.

Deep Dive & Mechanics

The vulnerability is rooted in the query planning phase of Apollo Gateway. When a GraphQL query contains deeply nested and reused named fragments, the gateway's query planner expands each fragment spread individually. In a normal query, this is manageable. However, an attacker can craft a query where a single named fragment is spread multiple times within deeply nested structures. The expansion algorithm does not cache or deduplicate the expansion of identical fragments. As a result, the same fragment is expanded repeatedly, leading to an exponential increase in the number of operations the planner must perform.

For example, consider a fragment A that contains a spread of fragment B, which in turn contains a spread of fragment A (mutual recursion) or a deeply nested structure where fragment X is used at multiple levels. The planner will expand each spread independently, causing the number of expanded nodes to grow exponentially with the depth of nesting. This quickly exhausts CPU and memory resources, effectively halting the gateway's ability to process any further requests.

The fix in version 2.10.1 introduces memoization (caching) of fragment expansions. Once a fragment is expanded for a given context, the result is reused for all subsequent spreads of that same fragment, preventing the exponential blowup.

Vulnerable vs. Patched Code

Vulnerable Code (Conceptual - Pre-2.10.1):

// In the query planner's fragment expansion logic
function expandFragment(fragment, context) {
  let expanded = [];
  for (const selection of fragment.selections) {
    if (selection.kind === 'FragmentSpread') {
      // Recursively expand each spread without caching
      const nestedFragment = getFragment(selection.name.value);
      expanded = expanded.concat(expandFragment(nestedFragment, context));
    } else {
      expanded.push(selection);
    }
  }
  return expanded;
}

Patched Code (Conceptual - 2.10.1+):

// In the query planner's fragment expansion logic
const expansionCache = new Map();

function expandFragment(fragment, context) {
  const cacheKey = `${fragment.name.value}:${context}`;
  if (expansionCache.has(cacheKey)) {
    return expansionCache.get(cacheKey);
  }
  
  let expanded = [];
  for (const selection of fragment.selections) {
    if (selection.kind === 'FragmentSpread') {
      const nestedFragment = getFragment(selection.name.value);
      expanded = expanded.concat(expandFragment(nestedFragment, context));
    } else {
      expanded.push(selection);
    }
  }
  
  expansionCache.set(cacheKey, expanded);
  return expanded;
}

The key difference is the introduction of expansionCache which stores the result of expanding a fragment for a given context. This prevents redundant expansions and eliminates the exponential resource consumption.

Exploitation & Lab Setup

Red Team (Attack Simulation)

Objective: Craft a malicious GraphQL query to cause a denial of service on an unpatched Apollo Gateway.

Prerequisites:

  • Access to a GraphQL endpoint served by Apollo Gateway (version < 2.10.1).
  • No authentication required.

Exploit Query (Conceptual):

# This query uses deeply nested and reused fragments to trigger exponential expansion
fragment A on Query {
  field1
  ...B
}
fragment B on Query {
  field2
  ...A
}
query {
  ...A
  ...A
  ...A
}

Explanation: The fragments A and B are mutually recursive. The query spreads fragment A three times. In the vulnerable version, each spread of A triggers a full expansion of the recursive chain, leading to exponential growth. In practice, the attacker would increase the number of top-level spreads and the depth of nesting to maximize resource consumption.

Lab Setup:

  1. Deploy a vulnerable Apollo Gateway (e.g., version 2.9.0) using Docker.
  2. Expose the GraphQL endpoint on a local port.
  3. Use a tool like curl or a custom script to send the malicious query.
  4. Monitor CPU and memory usage on the gateway host.

Expected Outcome: The gateway becomes unresponsive or crashes due to resource exhaustion.

Blue Team (Defense & Detection)

Defensive Measures:

  1. Immediate Patching: Upgrade to @apollo/gateway version 2.10.1 or later.
  2. Query Complexity Limits: Implement query depth and complexity limits using Apollo Server's built-in plugins or a reverse proxy.
  3. Rate Limiting: Apply rate limiting to GraphQL endpoints to mitigate repeated attack attempts.
  4. Web Application Firewall (WAF): Deploy WAF rules to detect and block queries with excessive fragment spreads or deep nesting.
  5. Monitoring: Set up alerts for unusual CPU/memory spikes on gateway instances.

Detection Strategy:

  • Monitor GraphQL query logs for patterns with high fragment reuse and deep nesting.
  • Use the YARA and Sigma rules below to scan for malicious query patterns in logs or network traffic.

Indicators of Compromise (IOCs)

  • Network Traffic: GraphQL queries containing multiple fragment spreads (e.g., ...A ...B ...C) with deep nesting (depth > 10).
  • Log Entries: Gateway logs showing excessive query planning times (e.g., > 5 seconds) for a single query.
  • System Metrics: Sudden, unexplained spikes in CPU and memory usage on Apollo Gateway hosts.
  • Error Messages: "Query planning timed out" or "Out of memory" errors in gateway logs.

Detection Engineering

YARA Rule

rule CVE_2025_32030_GraphQL_Fragment_Abuse {
  meta:
    description = "Detects GraphQL queries with excessive fragment spreads indicative of CVE-2025-32030 exploitation"
    author = "Valters IT"
    date = "2025-04-10"
    reference = "CVE-2025-32030"
  strings:
    $fragment_spread = /\.\.\.\w+/ nocase
    $deep_nesting = /\{[^}]*\{[^}]*\{[^}]*\{[^}]*\{/ nocase
  condition:
    #fragment_spread > 10 and $deep_nesting
}

Sigma Rule

title: CVE-2025-32030 - Apollo Gateway DoS via Fragment Expansion
id: 8a4b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects GraphQL queries with high fragment spread count and deep nesting, indicating potential exploitation of CVE-2025-32030.
author: Valters IT
date: 2025-04-10
logsource:
  category: webserver
  product: apollo_gateway
detection:
  selection:
    http.method: 'POST'
    http.content_type: 'application/json'
    body|contains: 'query'
  condition: selection and (body|re: /\.\.\.\w+/ count > 10) and (body|re: /\{[^}]*\{[^}]*\{[^}]*\{[^}]*\{/)
falsepositives:
  - Legitimate complex GraphQL queries from trusted clients
level: high
tags:
  - attack.t1499
  - cve.2025.32030

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-32030 - Apollo Gateway DoS via Fragment Expansion"; flow:to_server; content:"POST"; http_method; content:"application/json"; http_content_type; content:"query"; http_client_body; pcre:"/(\.\.\.\w+){10,}/"; pcre:"/\{[^}]*\{[^}]*\{[^}]*\{[^}]*\{/"; classtype:attempted-dos; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Patch: Upgrade @apollo/gateway to version 2.10.1 or later. Run npm update @apollo/gateway or update your package.json and redeploy.
  2. Workaround: If patching is not immediately possible, implement query complexity analysis and depth limiting using Apollo Server plugins (e.g., graphql-query-complexity). Set a maximum query depth (e.g., 10) and a maximum complexity score.
  3. Network Controls: Restrict access to the GraphQL endpoint to trusted IPs or networks using a firewall or reverse proxy.

Long-Term Mitigations:

  • Regular Dependency Audits: Use tools like npm audit or snyk to monitor for vulnerabilities in dependencies.
  • Security Testing: Include GraphQL-specific fuzzing and DoS testing in your CI/CD pipeline.
  • Monitoring: Implement continuous monitoring of gateway performance metrics and set up alerts for anomalies.

Valters IT Signature This report was generated by Valters IT Cyber Threat Intelligence. For questions, contact intelligence@valters.it.

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-32030/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.