GraphQL-core: Denial of service via comment tokens bypassing the parser's max_tokens limit
GraphQL-core is a Python port of the GraphQL.js reference implementation. From 3.2.3 until 3.2.12 and 3.3.0rc1, the parser's max_tokens limit in Parser.advance_lexer counts only non-comment tokens returned after Lexer.lookahead skips comments. Each skipped comment is still allocated as a Token and retained through token.next and token.prev, allowing a highly compressible comment-padded GraphQL document to pass a low token limit while consuming memory. An unauthenticated remote attacker can exhaust worker memory before AST-based depth or complexity controls run. This issue is fixed in versions 3.2.12 and 3.3.0rc1.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-75508
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 3 Nov 2026, 18:04 UTC · Revision 1
Source evidence
GraphQL-core: Denial of service via comment tokens bypassing the parser's max_tokens limit
core-osv · Original sourcePublished 22 Oct 2026, 16:10 UTC
GraphQL-core is a Python port of the GraphQL.js reference implementation. From 3.2.3 until 3.2.12 and 3.3.0rc1, the parser's max_tokens limit in Parser.advance_lexer counts only non-comment tokens returned after Lexer.lookahead skips comments. Each skipped comment is still allocated as a Token and retained through token.next and token.prev, allowing a highly compressible comment-padded GraphQL document to pass a low token limit while consuming memory. An unauthenticated remote attacker can exhaust worker memory before AST-based depth or complexity controls run. This issue is fixed in versions 3.2.12 and 3.3.0rc1.
osv:CVE-2026-75508
Complete source record
{
"id": "0a7e1f90347fb9acbfa4f902ac97c3dee13d2871c26c0553af15e0685c27ccdb",
"url": "https://osv.dev/vulnerability/CVE-2026-75508",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "GraphQL-core: Denial of service via comment tokens bypassing the parser's max_tokens limit",
"summary": "GraphQL-core is a Python port of the GraphQL.js reference implementation. From 3.2.3 until 3.2.12 and 3.3.0rc1, the parser's max_tokens limit in Parser.advance_lexer counts only non-comment tokens returned after Lexer.lookahead skips comments. Each skipped comment is still allocated as a Token and retained through token.next and token.prev, allowing a highly compressible comment-padded GraphQL document to pass a low token limit while consuming memory. An unauthenticated remote attacker can exhaust worker memory before AST-based depth or complexity controls run. This issue is fixed in versions 3.2.12 and 3.3.0rc1.",
"evidence": "osv:CVE-2026-75508",
"products": [],
"severity": "high",
"structured": {
"id": "CVE-2026-75508",
"aliases": [
"CVE-2026-75508",
"GHSA-r77w-qph3-7vf8"
],
"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/graphql-python/graphql-core",
"type": "GIT",
"events": [
{
"introduced": "430ee891a52d239adadf133d873fdca2a3fe009b"
},
{
"fixed": "af6addb1bf39e3b111ae7b805d774326a02f1079"
},
{
"introduced": "f7e937ca298d90bca74cc1c90904f585c516a0bb"
},
{
"fixed": "2d72d39ce7107226b9bcd5cc47835a19da0c2c87"
},
{
"fixed": "437dea102e92fdf05a2971ca76787c5a5bad875a"
},
{
"fixed": "80ef435a1808fbbcc4aaac63ae76771a1c91002d"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"introduced": "3.2.3"
},
{
"fixed": "3.2.12"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
},
{
"range": [
{
"introduced": "3.3.0a3"
},
{
"fixed": "3.3.0rc1"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
},
{
"range": [
{
"fixed": "437dea102e92fdf05a2971ca76787c5a5bad875a"
}
],
"source": "REFERENCES_COMMIT"
},
{
"range": [
{
"fixed": "80ef435a1808fbbcc4aaac63ae76771a1c91002d"
}
],
"source": "REFERENCES_COMMIT"
},
{
"range": [
{
"fixed": "af6addb1bf39e3b111ae7b805d774326a02f1079"
}
],
"source": "REFERENCES_TAG",
"original_tag": "v3.2.12"
},
{
"range": [
{
"fixed": "2d72d39ce7107226b9bcd5cc47835a19da0c2c87"
}
],
"source": "REFERENCES_TAG",
"original_tag": "v3.3.0rc1"
}
]
}
}
],
"versions": [
"v3.2.11",
"v3.3.0rc0",
"v3.3.0b2",
"v3.3.0b1",
"v3.3.0b0",
"v3.3.0a14",
"v3.3.0a13",
"v3.2.10",
"v3.2.9",
"v3.2.8",
"v3.3.0a12",
"v3.2.7",
"v3.3.0a11",
"v3.3.0a10",
"v3.3.0a9",
"v3.3.0a8",
"v3.2.6",
"v3.3.0a7",
"v3.2.5",
"v3.2.4",
"v3.2.3",
"v3.3.0a6",
"v3.3.0a5",
"v3.3.0a4",
"v3.3.0a3"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-75508.json"
}
}
],
"modified": "2026-10-31T02:30:27.277957063Z",
"provider": "osv",
"references": [
"https://github.com/graphql-python/graphql-core/releases/tag/v3.2.12",
"https://github.com/graphql-python/graphql-core/releases/tag/v3.3.0rc1",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/75xxx/CVE-2026-75508.json",
"https://github.com/graphql-python/graphql-core/security/advisories/GHSA-r77w-qph3-7vf8",
"https://nvd.nist.gov/vuln/detail/CVE-2026-75508",
"https://github.com/graphql-python/graphql-core/commit/437dea102e92fdf05a2971ca76787c5a5bad875a",
"https://github.com/graphql-python/graphql-core/commit/80ef435a1808fbbcc4aaac63ae76771a1c91002d"
],
"provider_metadata": {
"cwe_ids": [
"CWE-400",
"CWE-770"
],
"cna_assigner": "GitHub_M",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/75xxx/CVE-2026-75508.json"
}
},
"related_cves": [
{
"value": "CVE-2026-75508",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 498157,
"published_at": "2026-10-22T16:10:17.124+00:00"
}