Skip to main content

GraphQL-core EUVDEUVD-2026-108226

| CVE-2026-75507 HIGH
Uncontrolled Resource Consumption (CWE-400)
2026-10-22 GitHub_M GHSA-vj8h-fx38-h3vc
7.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Reach public GraphQL endpoint
  2. Delivery
    Send shallow repeated-inline-fragment query
  3. Exploit
    Trigger quadratic OverlappingFieldsCanBeMerged validation
  4. Execution
    Pin worker CPU for minutes
  5. Persist
    Repeat concurrently to saturate workers
  6. Impact
    Service denial of availability

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

No special conditions beyond the product being reachable: the OverlappingFieldsCanBeMerged rule ships in specified_rules and is enabled by default, so every GraphQL-core server at default settings is vulnerable with no authentication and no user interaction (PR:N/UI:N). The attacker only needs to submit a crafted query that repeats an inline fragment selecting the same response name at two nesting levels. Limiting factors are narrow: impact is availability-only (no data disclosed or modified), and the flaw is fixed by upgrading to 3.2.12 or 3.3.0rc1, which enforces a default 250,000-comparison budget (MAX_FIELD_COMPARISONS). Per-field-depth or complexity limiters do NOT mitigate it because they run after validation; the only stated pre-upgrade workaround is rejecting oversized documents measured on the DECOMPRESSED body, and removing the rule is explicitly not safe because it is a spec-required correctness rule.

Impact

All severity signals point the same direction: the supplied CVSS 3.1 vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H describes a network-reachable (AV:N), low-complexity (AC:L), unauthenticated (PR:N), no-interaction (UI:N) attack with high availability impact and no confidentiality or integrity impact - a clean denial-of-service profile scoring 7.5. The GHSA advisory confirms the mechanism end-to-end (quadratic/O(n²·m²) CPU in the OverlappingFieldsCanBeMerged validation rule) and includes a working proof-of-concept with measured timings (364 KB query pinning one core for 319 s on 3.2.8), so the technical impact is verified, not inferred. No EPSS score and no CISA KEV entry were provided in the input, so there is no evidence of active exploitation; the only priority signal is the vuln.today Decision label 'this_week', which is consistent with a credible, easily-weaponizable unauthenticated DoS that is not yet confirmed exploited in the wild. The practical risk is elevated beyond a generic DoS because the cost lands in the validation phase, before resolvers or AST depth/complexity limiters run, and the payload is trivially shallow (depth 3, complexity 1) and highly compressible, so standard GraphQL defenses and compressed-body/WAF inspection do not catch it. This is a real this-week patching priority for any exposed GraphQL-core server, not a high-CVSS-but-low-real-risk issue; the only tempering factor is that impact is confined to availability.

Exploit ScenarioDerived

An unauthenticated attacker sends a single small, highly compressible GraphQL query (one short inline-fragment string repeated at two nesting levels) to a public GraphQL-core endpoint. Validation enters the OverlappingFieldsCanBeMerged rule and burns minutes of CPU on one worker before any resolver runs; a handful of concurrent requests saturate a multi-worker deployment. A working proof-of-concept with measured timings is published in the GHSA advisory.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 22, 2026

Denial of service in the Python GraphQL-core library (3.0.0 through 3.2.11, plus 3.3.0 pre-releases before 3.3.0rc1) lets an unauthenticated remote attacker pin a worker process for minutes with a single shallow, highly compressible query. The OverlappingFieldsCanBeMerged rule, which ships in specified_rules and is therefore enabled by default on every GraphQL-core server, re-compares flattened inline fragments at every nesting level and can be driven into quadratic - worst case O(n²·m²) - CPU work during validation, before any resolver, depth limiter or complexity analyzer runs; the vendor advisory documents a 364 KB query consuming one core for over 300 seconds on 3.2.8. Severity is availability-only (no confidentiality or integrity impact) and the CVSS 3.1 vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H scores 7.5; the advisory includes a proof-of-concept query generator with measured timings, which is a public PoC reference rather than independently verified working exploit code, and there is no confirmed active exploitation (no CISA KEV listing) at time of analysis. Fixed versions 3.2.12 and 3.3.0rc1 enforce a 250,000-comparison budget.

RemediationAI

Vendor-released patch: upgrade to graphql-core 3.2.12 (or 3.3.0rc1 if tracking the 3.3 pre-release line); the fix commits are 150e59814d97d12140be005a558c93188ef89198 and 29c2753a7ee30a96a4109e7c6add1a2dae0497d7, and the advisory is GHSA-vj8h-fx38-h3vc. Be aware of the intentional behaviour change: once MAX_FIELD_COMPARISONS (default 250,000, a module-level constant in graphql.validation.rules.overlapping_fields_can_be_merged) pairwise comparisons are performed, validation aborts and returns a GraphQLError stating the query is too complex to validate for overlapping fields, so a pathological query that previously validated slowly now fails; the constant can be raised or lowered in code if your workloads legitimately need a different bound. If upgrading is not immediately possible, the only workaround the vendor states is to reject oversized documents before they reach validate(), and the size check must be applied to the decompressed body because the payload is highly compressible; removing OverlappingFieldsCanBeMergedRule from the rule set is explicitly not a safe workaround since it is a specification-required correctness rule, and per-field depth or complexity limiters do not mitigate the issue because they operate on the parsed document after validation has already completed. A request body-size limit remains worthwhile after upgrading, since the comparison budget bounds this one rule and not overall request cost.

Affected VersionsENISA

graphql-core 3.0.0, < 3.2.12
graphql-core 3.3.0a1, < 3.3.0rc1

Affected Packages

euvd graphql_core fix: 3.2.12, 3.3.0rc1

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

GraphQL-core is a Python port of the GraphQL.js reference implementation, and its validate() pipeline runs the specification-mandated rule set (specified_rules), which includes OverlappingFieldsCanBeMerged. That rule must compare every pair of fields sharing a response name and recurse into their sub-selections to detect conflicts; the memoization introduced for the earlier CVE-2023-26144 fix is keyed by named-fragment identity, so it does not cover inline fragments, which are flattened into the parent selection set before the cache is consulted and are therefore re-compared from scratch at every nesting level. Repeating an inline fragment that selects the same response name at two levels multiplies the quadratic outer pairwise loop by a quadratic inner walk, giving the CWE-400 (resource exhaustion; the advisory also assigns CWE-407, algorithmic complexity) behaviour measured by the reporter: doubling the outer repetition count at fixed inner width quadruples validation time, with reported measurements ranging from 0.16 s for a 7.6 KB document to 319 s for 364 KB on CPython 3.12/Linux x86_64. Because the work is pure CPU under the GIL and occurs in validation rather than execution, the malicious document can be trivially shallow (depth 3, complexity 1) and is one short string repeated many times, so it compresses to a few kilobytes and evades body-size limits and WAF inspection performed on the compressed request. The fix adds a ComparisonBudgetExceededError guard and a module-level MAX_FIELD_COMPARISONS constant (default 250,000) tracked on the OrderedPairSet, aborting validation with a GraphQLError once the document-wide pairwise comparison budget is exhausted.

Know when Python gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 7.5 HIGH

Default-enabled rule reachable by any unauthenticated remote query (AV:N/AC:L/PR:N/UI:N); availability-only CPU-exhaustion DoS with no confidentiality or integrity impact (C:N/I:N/A:H), scope unchanged.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

2
Patch available
Oct 22, 2026 - 17:18 EUVD
CVE Published
Oct 22, 2026 - 16:12 cve.org
HIGH 7.5

DescriptionCVE.org

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.

Technical POC Analysis

CWE-400 (Uncontrolled Resource Consumption), with the advisory also tagging CWE-407 (Inefficient Algorithmic Complexity).

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

A high-severity availability flaw in GraphQL-core (a Python library used by many customer-facing APIs) allows an unauthenticated attacker to exhaust server CPU with a single small query, potentially taking services offline for legitimate users. Since the vulnerable validation rule is enabled by default, any organization running an affected GraphQL-core version is exposed and should prioritize remediation.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations include enforcing rate limits, request timeouts, and query complexity/depth limits; disabling the OverlappingFieldsCanBeMerged validation rule if acceptable; and monitoring for anomalous query patterns.

Threat Intelligence Overview

Prevalence
Medium
core validation library under many Python GraphQL servers, but GraphQL subset
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
Social Media
1
Sightings
Data Quality
4 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC Yes
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
Poc
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

58
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

More in Python

View all
CVE-2025-24016 CRITICAL POC
9.9 Feb 10

Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t

CVE-2025-27520 CRITICAL POC
9.8 Apr 04

BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser

CVE-2025-2945 CRITICAL POC
9.9 Apr 03

pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi

CVE-2013-5093 MEDIUM POC
6.8 Sep 27

The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python

CVE-2025-32375 CRITICAL POC
9.8 Apr 09

BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica

CVE-2014-0224 HIGH POC
7.4 Jun 05

OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph

CVE-2024-21644 HIGH POC
7.5 Jan 08

pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.

CVE-2026-33017 CRITICAL POC
9.3 Mar 17

Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301

CVE-2017-9462 HIGH POC
8.8 Jun 06

In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse

CVE-2026-49869 CRITICAL POC
10.0 Jun 26

Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to

CVE-2026-39987 CRITICAL POC
9.3 Apr 08

Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/

CVE-2024-21645 MEDIUM POC
5.3 Jan 08

pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy