Skip to content
Heist/ feed
Back to feed
High

Apollo Gateway Query Planner Vulnerable to Excessive Resource Consumption via Optimization Bypass

Type: advisorySources: OSV

Apollo Gateway provides utilities for combining multiple GraphQL microservices into a single GraphQL endpoint. Prior to 2.10.1, a vulnerability in Apollo Gateway allowed queries with deeply nested and reused named fragments to be prohibitively expensive to query plan, specifically due to internal optimizations being frequently bypassed. The query planner includes an optimization that significantly speeds up planning for applicable GraphQL selections. However, queries with deeply nested and reused named fragments can generate many selections where this optimization does not apply, leading to significantly longer planning times. Because the query planner does not enforce a timeout, a small number of such queries can render gateway inoperable. This could lead to excessive resource consumption and denial of service. This has been remediated in @apollo/gateway version 2.10.1.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2025-32031
Confirmed fixed CVEs
Not specified
Updated in this feed
2 Nov 2026, 21:00 UTC · Revision 1

Source evidence

Apollo Gateway Query Planner Vulnerable to Excessive Resource Consumption via Optimization Bypass

core-osv · Original source

Published 7 Apr 2025, 20:41 UTC

Apollo Gateway provides utilities for combining multiple GraphQL microservices into a single GraphQL endpoint. Prior to 2.10.1, a vulnerability in Apollo Gateway allowed queries with deeply nested and reused named fragments to be prohibitively expensive to query plan, specifically due to internal optimizations being frequently bypassed. The query planner includes an optimization that significantly speeds up planning for applicable GraphQL selections. However, queries with deeply nested and reused named fragments can generate many selections where this optimization does not apply, leading to significantly longer planning times. Because the query planner does not enforce a timeout, a small number of such queries can render gateway inoperable. This could lead to excessive resource consumption and denial of service. This has been remediated in @apollo/gateway version 2.10.1.

osv:CVE-2025-32031
Complete source record
{
  "id": "c47b8b81a2f9bf2a448b1fdc7d3c5439d26728120aab62c0c2d7542da278d304",
  "url": "https://osv.dev/vulnerability/CVE-2025-32031",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Apollo Gateway Query Planner Vulnerable to Excessive Resource Consumption via Optimization Bypass",
    "summary": "Apollo Gateway provides utilities for combining multiple GraphQL microservices into a single GraphQL endpoint. Prior to 2.10.1, a vulnerability in Apollo Gateway allowed queries with deeply nested and reused named fragments to be prohibitively expensive to query plan, specifically due to internal optimizations being frequently bypassed. The query planner includes an optimization that significantly speeds up planning for applicable GraphQL selections. However, queries with deeply nested and reused named fragments can generate many selections where this optimization does not apply, leading to significantly longer planning times. Because the query planner does not enforce a timeout, a small number of such queries can render gateway inoperable. This could lead to excessive resource consumption and denial of service. This has been remediated in @apollo/gateway version 2.10.1.",
    "evidence": "osv:CVE-2025-32031",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2025-32031",
      "aliases": [
        "CVE-2025-32031",
        "GHSA-p2q6-pwh5-m6jr"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/apollographql/federation",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "7ae758947bd51f0a7fced6bb4999556d20a68428"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "2.10.1"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "cpe": "cpe:2.3:a:apollographql:apollo_gateway:*:*:*:*:*:node.js:*:*",
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "2.10.1"
                      }
                    ],
                    "source": "CPE_RANGE"
                  }
                ]
              }
            }
          ],
          "versions": [
            "@apollo/subgraph@2.9.3",
            "@apollo/query-planner@2.9.3",
            "@apollo/query-graphs@2.9.3",
            "@apollo/gateway@2.9.3",
            "@apollo/federation-internals@2.9.3",
            "@apollo/composition@2.9.3",
            "@apollo/subgraph@2.10.0",
            "@apollo/query-planner@2.10.0",
            "@apollo/query-graphs@2.10.0",
            "@apollo/gateway@2.10.0",
            "@apollo/federation-internals@2.10.0",
            "@apollo/composition@2.10.0",
            "@apollo/subgraph@2.9.2",
            "@apollo/query-planner@2.9.2",
            "@apollo/query-graphs@2.9.2",
            "@apollo/gateway@2.9.2",
            "@apollo/federation-internals@2.9.2",
            "@apollo/composition@2.9.2",
            "@apollo/subgraph@2.9.1",
            "@apollo/query-planner@2.9.1",
            "@apollo/query-graphs@2.9.1",
            "@apollo/gateway@2.9.1",
            "@apollo/federation-internals@2.9.1",
            "@apollo/composition@2.9.1",
            "@apollo/subgraph@2.9.0",
            "@apollo/query-planner@2.9.0",
            "@apollo/query-graphs@2.9.0",
            "@apollo/gateway@2.9.0",
            "@apollo/federation-internals@2.9.0",
            "@apollo/composition@2.9.0",
            "@apollo/subgraph@2.8.5",
            "@apollo/query-planner@2.8.5",
            "@apollo/query-graphs@2.8.5",
            "@apollo/gateway@2.8.5",
            "@apollo/federation-internals@2.8.5",
            "@apollo/composition@2.8.5",
            "@apollo/subgraph@2.8.4",
            "@apollo/query-planner@2.8.4",
            "@apollo/query-graphs@2.8.4",
            "@apollo/gateway@2.8.4",
            "@apollo/federation-internals@2.8.4",
            "@apollo/composition@2.8.4",
            "@apollo/subgraph@2.8.3",
            "@apollo/query-planner@2.8.3",
            "@apollo/query-graphs@2.8.3",
            "@apollo/gateway@2.8.3",
            "@apollo/federation-internals@2.8.3",
            "@apollo/composition@2.8.3",
            "@apollo/subgraph@2.8.2",
            "@apollo/query-planner@2.8.2",
            "@apollo/query-graphs@2.8.2",
            "@apollo/gateway@2.8.2",
            "@apollo/federation-internals@2.8.2",
            "@apollo/composition@2.8.2",
            "@apollo/subgraph@2.8.1",
            "@apollo/query-planner@2.8.1",
            "@apollo/query-graphs@2.8.1",
            "@apollo/gateway@2.8.1",
            "@apollo/federation-internals@2.8.1",
            "@apollo/composition@2.8.1",
            "@apollo/subgraph@2.8.0",
            "@apollo/query-planner@2.8.0",
            "@apollo/query-graphs@2.8.0",
            "@apollo/gateway@2.8.0",
            "@apollo/federation-internals@2.8.0",
            "@apollo/composition@2.8.0",
            "@apollo/subgraph@2.8.0-alpha.1",
            "@apollo/query-planner@2.8.0-alpha.1",
            "@apollo/query-graphs@2.8.0-alpha.1",
            "@apollo/gateway@2.8.0-alpha.1",
            "@apollo/federation-internals@2.8.0-alpha.1",
            "@apollo/composition@2.8.0-alpha.1",
            "@apollo/subgraph@2.8.0-alpha.0",
            "@apollo/query-planner@2.8.0-alpha.0",
            "@apollo/query-graphs@2.8.0-alpha.0",
            "@apollo/gateway@2.8.0-alpha.0",
            "@apollo/federation-internals@2.8.0-alpha.0",
            "@apollo/composition@2.8.0-alpha.0",
            "@apollo/subgraph@2.7.7",
            "@apollo/query-planner@2.7.7",
            "@apollo/query-graphs@2.7.7",
            "@apollo/gateway@2.7.7",
            "@apollo/federation-internals@2.7.7",
            "@apollo/composition@2.7.7",
            "@apollo/subgraph@2.7.6",
            "@apollo/query-planner@2.7.6",
            "@apollo/query-graphs@2.7.6",
            "@apollo/gateway@2.7.6",
            "@apollo/federation-internals@2.7.6",
            "@apollo/composition@2.7.6",
            "@apollo/subgraph@2.7.5",
            "@apollo/query-planner@2.7.5",
            "@apollo/query-graphs@2.7.5",
            "@apollo/gateway@2.7.5",
            "@apollo/federation-internals@2.7.5",
            "@apollo/composition@2.7.5",
            "@apollo/subgraph@2.7.4",
            "@apollo/query-planner@2.7.4",
            "@apollo/query-graphs@2.7.4",
            "@apollo/gateway@2.7.4",
            "@apollo/federation-internals@2.7.4",
            "@apollo/composition@2.7.4",
            "@apollo/subgraph@2.7.3",
            "@apollo/query-planner@2.7.3",
            "@apollo/query-graphs@2.7.3",
            "@apollo/gateway@2.7.3",
            "@apollo/federation-internals@2.7.3",
            "@apollo/composition@2.7.3",
            "@apollo/subgraph@2.7.2",
            "@apollo/query-planner@2.7.2",
            "@apollo/query-graphs@2.7.2",
            "@apollo/gateway@2.7.2",
            "@apollo/federation-internals@2.7.2",
            "@apollo/composition@2.7.2",
            "@apollo/subgraph@2.7.1",
            "@apollo/query-planner@2.7.1",
            "@apollo/query-graphs@2.7.1",
            "@apollo/gateway@2.7.1",
            "@apollo/federation-internals@2.7.1",
            "@apollo/composition@2.7.1",
            "@apollo/subgraph@2.7.0",
            "@apollo/query-planner@2.7.0",
            "@apollo/query-graphs@2.7.0",
            "@apollo/gateway@2.7.0",
            "@apollo/federation-internals@2.7.0",
            "@apollo/composition@2.7.0",
            "@apollo/subgraph@2.6.2",
            "@apollo/query-planner@2.6.2",
            "@apollo/query-graphs@2.6.2",
            "@apollo/gateway@2.6.2",
            "@apollo/federation-internals@2.6.2",
            "@apollo/composition@2.6.2",
            "@apollo/subgraph@2.6.1",
            "@apollo/query-planner@2.6.1",
            "@apollo/query-graphs@2.6.1",
            "@apollo/gateway@2.6.1",
            "@apollo/federation-internals@2.6.1",
            "@apollo/composition@2.6.1",
            "@apollo/subgraph@2.5.7",
            "@apollo/query-planner@2.5.7",
            "@apollo/query-graphs@2.5.7",
            "@apollo/gateway@2.5.7",
            "@apollo/federation-internals@2.5.7",
            "@apollo/composition@2.5.7",
            "@apollo/subgraph@2.5.6",
            "@apollo/query-planner@2.5.6",
            "@apollo/query-graphs@2.5.6",
            "@apollo/gateway@2.5.6",
            "@apollo/federation-internals@2.5.6",
            "@apollo/composition@2.5.6",
            "@apollo/subgraph@2.5.5",
            "@apollo/query-planner@2.5.5",
            "@apollo/query-graphs@2.5.5",
            "@apollo/gateway@2.5.5",
            "@apollo/federation-internals@2.5.5",
            "@apollo/composition@2.5.5",
            "@apollo/subgraph@2.5.4",
            "@apollo/query-planner@2.5.4",
            "@apollo/query-graphs@2.5.4",
            "@apollo/gateway@2.5.4",
            "@apollo/federation-internals@2.5.4",
            "@apollo/composition@2.5.4",
            "@apollo/subgraph@2.5.3",
            "@apollo/query-planner@2.5.3",
            "@apollo/query-graphs@2.5.3",
            "@apollo/gateway@2.5.3",
            "@apollo/federation-internals@2.5.3",
            "@apollo/composition@2.5.3",
            "@apollo/subgraph@2.5.2",
            "@apollo/query-planner@2.5.2",
            "@apollo/query-graphs@2.5.2",
            "@apollo/gateway@2.5.2",
            "@apollo/federation-internals@2.5.2",
            "@apollo/composition@2.5.2",
            "@apollo/subgraph@2.5.1",
            "@apollo/query-planner@2.5.1",
            "@apollo/query-graphs@2.5.1",
            "@apollo/gateway@2.5.1",
            "@apollo/federation-internals@2.5.1",
            "@apollo/composition@2.5.1",
            "@apollo/subgraph@2.5.0",
            "@apollo/query-planner@2.5.0",
            "@apollo/query-graphs@2.5.0",
            "@apollo/gateway@2.5.0",
            "@apollo/federation-internals@2.5.0",
            "@apollo/composition@2.5.0",
            "@apollo/subgraph@2.4.0",
            "@apollo/query-planner@2.4.0",
            "@apollo/query-graphs@2.4.0",
            "@apollo/gateway@2.4.0",
            "@apollo/federation-internals@2.4.0",
            "@apollo/composition@2.4.0",
            "@apollo/subgraph@2.4.0-alpha.1",
            "@apollo/query-planner@2.4.0-alpha.1",
            "@apollo/query-graphs@2.4.0-alpha.1",
            "@apollo/gateway@2.4.0-alpha.1",
            "@apollo/federation-internals@2.4.0-alpha.1",
            "@apollo/composition@2.4.0-alpha.1",
            "@apollo/subgraph@2.4.0-alpha.0",
            "@apollo/query-planner@2.4.0-alpha.0",
            "@apollo/query-graphs@2.4.0-alpha.0",
            "@apollo/gateway@2.4.0-alpha.0",
            "@apollo/federation-internals@2.4.0-alpha.0",
            "@apollo/composition@2.4.0-alpha.0",
            "2.2.0-rc.0",
            "publish/20220309171736",
            "publish/20220309170101",
            "publish/20220214110600",
            "apollo-federation-integration-testsuite@2.0.0-alpha.6",
            "@apollo/subgraph@2.0.0-alpha.6",
            "@apollo/router-bridge@2.0.0-alpha.6",
            "@apollo/query-planner@2.0.0-alpha.6",
            "@apollo/query-graphs@2.0.0-alpha.6",
            "@apollo/harmonizer@2.0.0-alpha.6",
            "@apollo/gateway@2.0.0-alpha.6",
            "@apollo/federation-internals@2.0.0-alpha.6",
            "@apollo/composition@2.0.0-alpha.6",
            "apollo-federation-integration-testsuite@2.0.0-alpha.1",
            "@apollo/subgraph@2.0.0-alpha.1",
            "@apollo/router-bridge@2.0.0-alpha.1",
            "@apollo/query-planner@2.0.0-alpha.1",
            "@apollo/query-graphs@2.0.0-alpha.1",
            "@apollo/harmonizer@2.0.0-alpha.1",
            "@apollo/gateway@2.0.0-alpha.1",
            "@apollo/federation@2.0.0-alpha.1",
            "@apollo/federation-internals@2.0.0-alpha.1",
            "@apollo/composition@2.0.0-alpha.1",
            "publish/20211103085729",
            "apollo-federation-integration-testsuite@2.0.0-alpha.0",
            "@apollo/subgraph@2.0.0-alpha.0",
            "@apollo/router-bridge@2.0.0-alpha.0",
            "@apollo/query-planner@2.0.0-alpha.0",
            "@apollo/query-graphs@2.0.0-alpha.0",
            "@apollo/harmonizer@2.0.0-alpha.0",
            "@apollo/gateway@2.0.0-alpha.0",
            "@apollo/federation@2.0.0-alpha.0",
            "@apollo/federation-internals@2.0.0-alpha.0",
            "@apollo/composition@2.0.0-alpha.0",
            "apollo-federation-integration-testsuite@0.33.2",
            "@apollo/subgraph@0.1.3",
            "@apollo/router-bridge@0.1.1",
            "@apollo/query-planner@0.5.2",
            "@apollo/harmonizer@0.33.4",
            "@apollo/gateway@0.42.4",
            "@apollo/federation@0.33.4",
            "publish/20210826121431",
            "apollo-federation-integration-testsuite@0.30.0",
            "@apollo/query-planner@0.4.0",
            "@apollo/harmonizer@0.30.0",
            "@apollo/gateway@0.39.0",
            "@apollo/federation@0.30.0",
            "publish/20210803175107",
            "apollo-federation-integration-testsuite@0.28.0",
            "@apollo/gateway@0.36.0",
            "@apollo/federation@0.28.0",
            "publish/20210727175430",
            "@apollo/query-planner@0.3.1",
            "@apollo/harmonizer@0.28.1",
            "@apollo/gateway@0.35.1",
            "@apollo/federation@0.27.1",
            "publish/20210702222118",
            "@apollo/gateway@0.32.0",
            "publish/20210702103216",
            "@apollo/query-planner@0.2.2",
            "@apollo/gateway@0.31.1",
            "publish/20210622204946",
            "@apollo/harmonizer@0.3.3",
            "@apollo/gateway@0.30.0",
            "@apollo/federation@0.25.2",
            "publish/20210616215933",
            "@apollo/gateway@0.29.1",
            "publish/20210616192610",
            "@apollo/gateway@0.29.0",
            "publish/20210610145647",
            "@apollo/query-planner@0.2.1",
            "@apollo/harmonizer@0.3.2",
            "@apollo/gateway@0.28.3",
            "publish/20210525001653",
            "apollo-federation-integration-testsuite@0.25.1",
            "@apollo/harmonizer@0.2.5",
            "@apollo/gateway@0.28.2",
            "@apollo/federation@0.25.1",
            "publish/20210510202305",
            "apollo-federation-integration-testsuite@0.25.0",
            "@apollo/harmonizer@0.2.4",
            "@apollo/gateway@0.28.1",
            "@apollo/federation@0.25.0",
            "publish/20210503102213",
            "apollo-federation-integration-testsuite@0.24.0",
            "@apollo/query-planner@0.2.0",
            "@apollo/harmonizer@0.2.0",
            "@apollo/gateway@0.28.0",
            "@apollo/federation@0.24.0",
            "publish/20210429171631",
            "@apollo/query-planner@0.1.4",
            "@apollo/gateway@0.27.1",
            "publish/20210429133001",
            "apollo-federation-integration-testsuite@0.23.3",
            "@apollo/query-planner@0.1.3",
            "@apollo/gateway@0.27.0",
            "publish/20210426214525",
            "apollo-federation-integration-testsuite@0.23.2",
            "@apollo/harmonizer@0.1.5",
            "@apollo/gateway@0.26.3",
            "@apollo/federation@0.23.2",
            "publish/20210422213358",
            "apollo-federation-integration-testsuite@0.23.1",
            "@apollo/query-planner@0.1.2",
            "@apollo/harmonizer@0.1.4",
            "@apollo/gateway@0.26.2",
            "@apollo/federation@0.23.1",
            "publish/20210405205933",
            "@apollo/query-planner@0.1.1",
            "@apollo/query-planner-wasm@0.2.6",
            "@apollo/gateway@0.26.1",
            "publish/20210331111626",
            "@apollo/query-planner@0.0.14",
            "@apollo/query-planner-wasm@0.2.4",
            "@apollo/harmonizer@0.1.2",
            "@apollo/gateway@0.25.1",
            "publish/20210310114707",
            "@apollo/query-planner@0.0.13",
            "@apollo/query-planner-wasm@0.2.3",
            "@apollo/gateway@0.24.4",
            "publish/20210310092738",
            "@apollo/query-planner@0.0.12",
            "@apollo/query-planner-wasm@0.2.2",
            "@apollo/gateway@0.24.3",
            "publish/20210310092238",
            "@apollo/query-planner@0.0.11",
            "@apollo/query-planner-wasm@0.2.1",
            "@apollo/gateway@0.24.2",
            "publish/20210310082711",
            "@apollo/gateway@0.24.1",
            "publish/20210310080736",
            "apollo-federation-integration-testsuite@0.22.0",
            "@apollo/query-planner-wasm@0.2.0",
            "@apollo/gateway@0.24.0",
            "@apollo/federation@0.22.0",
            "publish/20210226202753",
            "@apollo/query-planner-wasm@0.1.2",
            "@apollo/gateway@0.23.2",
            "@apollo/federation@0.21.2",
            "publish/20210226192245",
            "@apollo/query-planner-wasm@0.1.1",
            "@apollo/gateway@0.23.1",
            "@apollo/federation@0.21.1",
            "publish/20210114172739",
            "apollo-federation-integration-testsuite@0.21.0",
            "@apollo/query-planner-wasm@0.0.10",
            "@apollo/gateway@0.22.0",
            "@apollo/federation@0.21.0",
            "publish/20201204223135",
            "@apollo/query-planner-wasm@0.0.9",
            "@apollo/gateway@0.21.4",
            "@apollo/federation@0.20.7",
            "publish/20201120184033",
            "apollo-federation-integration-testsuite@0.20.5",
            "@apollo/query-planner-wasm@0.0.8",
            "@apollo/gateway@0.21.3",
            "@apollo/federation@0.20.6",
            "publish/20201119213556",
            "@apollo/gateway@0.21.2",
            "@apollo/federation@0.20.5",
            "publish/20201109161401",
            "@apollo/query-planner-wasm@0.0.7",
            "@apollo/gateway@0.21.1",
            "v0.1.10",
            "v0.1.9",
            "v0.1.8",
            "publish/20200930151034",
            "@apollo/gateway@0.21.0",
            "stargate@0.0.1-alpha.0",
            "publish/20200925115054",
            "publish/20200925115045",
            "publish/20200925115037",
            "publish/20200925115025",
            "apollo-federation-integration-testsuite@0.20.4",
            "@apollo/query-planner-wasm@0.0.6",
            "@apollo/gateway@0.20.4",
            "@apollo/federation@0.20.4",
            "publish/20200924175307",
            "apollo-federation-integration-testsuite@0.20.3",
            "@apollo/query-planner-wasm@0.0.5",
            "@apollo/gateway@0.20.3",
            "@apollo/federation@0.20.3",
            "publish/20200921213411",
            "apollo-federation-integration-testsuite@0.20.2",
            "@apollo/gateway@0.20.2",
            "@apollo/federation@0.20.2",
            "@apollo/query-planner-wasm@0.0.4",
            "publish/20200918220443",
            "apollo-federation-integration-testsuite@0.20.1",
            "@apollo/gateway@0.20.1",
            "@apollo/federation@0.20.1",
            "@apollo/query-planner-wasm@0.0.3",
            "pre-cli-removal",
            "v0.0.3"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2025-32031.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:23.511740639Z",
      "provider": "osv",
      "references": [
        "https://github.com/apollographql/federation/releases/tag/%40apollo%2Fgateway%402.10.1",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/32xxx/CVE-2025-32031.json",
        "https://github.com/apollographql/federation/security/advisories/GHSA-p2q6-pwh5-m6jr",
        "https://nvd.nist.gov/vuln/detail/CVE-2025-32031",
        "https://github.com/apollographql/federation/pull/3236"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-770"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/32xxx/CVE-2025-32031.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2025-32031",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 490036,
  "published_at": "2025-04-07T20:41:35.767+00:00"
}