CVE-2026-75507
High · 7.5CVSS
7.5
EPSS
0.6%
Published
Oct 22, 2026
CISA due date
—
Cloudanix analysis
A bug in a popular Python GraphQL library lets anyone send a specially written query that can freeze or slow down the service by making the server do far more work than necessary.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Library
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The OverlappingFieldsCanBeMerged validation rule in GraphQL-core performs repeated pairwise comparisons of fields sharing response names and recursively re-expands flattened inline fragments without memoization for this case, yielding quadratic to O(n²·m²) CPU consumption on specially crafted queries before any resolver or depth/complexity limits execute.
Why it matters to the business
An unauthenticated attacker can send a compact GraphQL query that exhausts CPU on one or more worker processes, causing request backlogs, timeouts, or full service unavailability for legitimate users; the recent publication and stable EPSS indicate low immediate mass-exploitation risk but still require prompt patching to avoid targeted denial-of-service.
How an attack unfolds
An attacker crafts a shallow GraphQL document containing many nested inline fragments that share response names, submits it over HTTP or WebSocket to any exposed endpoint, and forces the server-side validation phase to perform repeated field-merging work that consumes a worker thread until the process is pinned or the service saturates.
How to fix it
Upgrade GraphQL-core to 3.2.12 or 3.3.0rc1 (or later) in all environments; if immediate upgrade is blocked, place strict query-size, depth, and complexity limits in front of the GraphQL layer or disable the affected validation rule until patched.
How to confirm the fix worked
After upgrade, send the previously crashing query and confirm validation completes in linear time with no CPU spike; scan dependency manifests (requirements.txt, Pipfile, poetry.lock, etc.) for any remaining graphql-core versions older than 3.2.12 / 3.3.0rc1.
Typical attack path
- Identify an unauthenticated GraphQL endpoint accepting queries
- Generate or copy a compact query with deeply nested repeated inline fragments sharing response names
- Submit the query via POST or GET to trigger validation
- Observe sustained high CPU on the worker and degraded or lost availability for other requests
- Repeat or parallelize queries to amplify resource exhaustion
How to detect it
Search web-server and application logs for GraphQL POST bodies containing many nested inline fragments or unusually long fragment spreads; correlate with worker-process CPU or memory spikes that lack corresponding resolver activity.
What your security team should do
- Immediately inventory all Python services using graphql-core and schedule upgrade to 3.2.12 or 3.3.0rc1 within the next maintenance window
- Add GraphQL query-complexity and depth middleware if not already present
- Monitor CPU and request-latency metrics on GraphQL workers for anomalous sustained load
- Block or rate-limit unauthenticated GraphQL queries from untrusted networks until patched
The record
GraphQL-core is a Python port of the GraphQL.js reference implementation. From 3.0.0 until 3.2.12 and 3.3.0rc1, the OverlappingFieldsCanBeMerged rule in specified_rules repeatedly compares fields that share response names and recursively re-compares flattened inline fragments during the validation phase. The prior named-fragment memoization does not cover this path, so nested repeated inline fragments can drive quadratic and worst-case O(n²·m²) CPU work before any resolver or AST-based depth or complexity control runs. An unauthenticated remote attacker can submit a shallow, highly compressible GraphQL query that pins a worker process and can saturate a multi-worker service. This issue is fixed in versions 3.2.12 and 3.3.0rc1.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-63341 Aedes is an MQTT broker that can run on any stream server. CWE-400
- CVE-2026-62300 Filecoin Pin is an IPFS Pinning Service API implementation that pins to Filecoin's PDP… CWE-400
- CVE-2026-62254 LibreDWG is a free C library to read and write DWG files. CWE-400
- CVE-2026-62250 LibreDWG is a free C library to read and write DWG files. CWE-400
- CVE-2026-62303 Pistache is a high-performance REST toolkit written in C++. CWE-400
- CVE-2026-62160 Daptin is a GraphQL/JSON-API headless CMS. CWE-400
- CVE-2026-61848 Crass is a Ruby CSS parser that's fully compliant with the CSS Syntax Level 3… CWE-400
- CVE-2026-61854 VoiceSentinel is a real-time voice moderation system for Minecraft servers. CWE-400