Bug 2563715 (CVE-2026-119286)

Summary: CVE-2026-119286 graphql-core: graphql-core: Denial of Service via unbounded memory growth during document validation
Product: [Other] Security Response Reporter: OSIDB Bzimport <bzimport>
Component: vulnerabilityAssignee: Product Security DevOps Team <prodsec-dev>
Status: NEW --- QA Contact:
Severity: high Docs Contact:
Priority: high    
Version: unspecifiedCC: aprice, ilpinto, jsamir, ltomasbo, oezr, ykashtan
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: ---
Doc Text:
A flaw was found in graphql-core. When validating queries that exceed the maximum allowed error threshold, the library reuses an internal error object across multiple requests. This causes Python to retain historical request data in memory for the lifetime of the process. A remote, unauthenticated attacker can exploit this vulnerability by repeatedly submitting requests designed to trigger excessive validation errors, resulting in unbounded memory consumption and a Denial of Service (DoS).
Story Points: ---
Clone Of: Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 2565728, 2565729, 2565730, 2565731    
Bug Blocks:    

Description OSIDB Bzimport 2026-10-29 22:11:26 UTC
GraphQL-core is a Python port of the GraphQL.js reference implementation. From 3.3.0a3 until 3.3.1, validate() reuses a module-level ValidationAbortedError when a document exceeds max_errors. Python appends frames to the reused exception's traceback on every raise, retaining each document, validation context, and error set for the process lifetime. An unauthenticated client can repeatedly submit a small document with more than 100 validation errors to cause unbounded memory growth before query execution, eventually exhausting worker memory without disclosing or modifying data. This issue is fixed in version 3.3.1.