{"items":[{"id":"NVI-00010132","kind":"vulnerability","title":"GraphQL-core: Denial of service via comment tokens bypassing the parser's max_tokens limit","revision":3,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-r77w-qph3-7vf8","CVE-2026-75508"],"plain_summary":"GitHub lists this reviewed advisory for graphql-core, graphql-core. Published version ranges and source prerequisites are shown below; this is not an inspection of a visitor’s application.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"Identify the exact component and deployed version, examine the linked publisher’s conditions, and retain evidence of any mitigation.","source_ids":["sr-2759173ad1df2fac62d551d61d476001"],"action_type":"investigate","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null}],"schema_version":"1.1.0","source_metrics":[{"kind":"CVSS","as_of":"2026-10-22T16:27:14.000Z","value":"7.5 high","meaning":"GitHub source severity; exploitability and local consequence require separate evidence.","source_id":"sr-26aafde804e10e9c8a86187b68365f65"},{"kind":"EPSS","as_of":"2026-11-01T12:00:16.000Z","value":"0.573%","meaning":"FIRST EPSS model v2026.06.15; exploitation probability over 30 days, percentile 0.47349. Missing scores are unknown.","source_id":"sr-2759173ad1df2fac62d551d61d476001"}],"why_it_matters":"Published affected context helps an owner decide what evidence to gather. This report has not examined your application.","related_sources":[{"id":"sr-26aafde804e10e9c8a86187b68365f65","url":"https://github.com/advisories/GHSA-r77w-qph3-7vf8","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-r77w-qph3-7vf8","publisher":"GitHub Advisory Database","observed_at":"2026-10-31T22:07:30.906Z"},{"id":"sr-2759173ad1df2fac62d551d61d476001","url":"https://www.first.org/epss/data.html","basis":"official_catalog","notes":"FIRST EPSS; probability of exploitation in the next 30 days, not local compromise. Dataset date/model retained; FIRST services terms apply.","title":"CVE-2026-75508","publisher":"FIRST EPSS","observed_at":"2026-11-01T14:28:32.286Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-26aafde804e10e9c8a86187b68365f65"],"technology":"graphql-core","known_exclusions":[],"conditions_summary":"### Summary\n\nThe parser's `max_tokens` limit — the documented defence against oversized GraphQL\ndocuments — did not count comment tokens. A document padded with comments could\ntherefore pass a `max_tokens` check of any size while still allocating one `Token`\nobject per comment, all of which stay reachable for the lifetime of the parsed\ndocument. A 38 MB comment-padded payload allocated roughly 92 MB of additional\nresident memory with `max_tokens=5` in force.\n\n### Details\n\n`Lexer.lookahead()` reads tokens one at a time and skips over comments, returning only\nthe first non-comment token. Each skipped comment is nevertheless fully tokenized,\nallocated as a `Token` object, and linked into the persistent token list via\n`token.next` / `token.prev` — the chain that powers source-location reporting, and\nwhich is retained as long as the document is.\n\n`Parser.advance_lexer()` incremented the token counter only for the tokens the lexer\nactually returned. Comments were therefore invisible to the accounting, and\n`max_tokens` bounded only the *non-comment* tokens.\n\nThe practical consequence is a gap between what users reasonably believe `max_tokens`\nprotects and what it did protect. The limit wa","public_affected_ranges":[">= 3.2.3, < 3.2.12"]},{"certainty":"source_listed","source_ids":["sr-26aafde804e10e9c8a86187b68365f65"],"technology":"graphql-core","known_exclusions":[],"conditions_summary":"### Summary\n\nThe parser's `max_tokens` limit — the documented defence against oversized GraphQL\ndocuments — did not count comment tokens. A document padded with comments could\ntherefore pass a `max_tokens` check of any size while still allocating one `Token`\nobject per comment, all of which stay reachable for the lifetime of the parsed\ndocument. A 38 MB comment-padded payload allocated roughly 92 MB of additional\nresident memory with `max_tokens=5` in force.\n\n### Details\n\n`Lexer.lookahead()` reads tokens one at a time and skips over comments, returning only\nthe first non-comment token. Each skipped comment is nevertheless fully tokenized,\nallocated as a `Token` object, and linked into the persistent token list via\n`token.next` / `token.prev` — the chain that powers source-location reporting, and\nwhich is retained as long as the document is.\n\n`Parser.advance_lexer()` incremented the token counter only for the tokens the lexer\nactually returned. Comments were therefore invisible to the accounting, and\n`max_tokens` bounded only the *non-comment* tokens.\n\nThe practical consequence is a gap between what users reasonably believe `max_tokens`\nprotects and what it did protect. The limit wa","public_affected_ranges":[">= 3.3.0a3, < 3.3.0rc1"]}],"null_published_at":"2026-11-06T15:18:11.432Z","source_updated_at":"2026-10-22T16:27:14.000Z","source_disclosed_at":"2026-10-22T16:27:14.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"Dated EPSS estimate updated; this is not a new disclosure or proof of exploitation.","null_first_observed_at":"2026-10-31T22:07:30.906Z"},{"id":"NVI-00010132","kind":"vulnerability","title":"GraphQL-core: Denial of service via comment tokens bypassing the parser's max_tokens limit","revision":2,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-r77w-qph3-7vf8","CVE-2026-75508"],"plain_summary":"GitHub lists this reviewed advisory for graphql-core, graphql-core. Published version ranges and source prerequisites are shown below; this is not an inspection of a visitor’s application.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"Identify the exact component and deployed version, examine the linked publisher’s conditions, and retain evidence of any mitigation.","source_ids":["sr-01c77db06c8dae1c86dc018a3b53b873"],"action_type":"investigate","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null}],"schema_version":"1.1.0","source_metrics":[{"kind":"CVSS","as_of":"2026-10-22T16:27:14.000Z","value":"7.5 high","meaning":"GitHub source severity; exploitability and local consequence require separate evidence.","source_id":"sr-26aafde804e10e9c8a86187b68365f65"},{"kind":"EPSS","as_of":"2026-10-31T12:00:27.000Z","value":"0.573%","meaning":"FIRST EPSS model v2026.06.15; exploitation probability over 30 days, percentile 0.47356. Missing scores are unknown.","source_id":"sr-01c77db06c8dae1c86dc018a3b53b873"}],"why_it_matters":"Published affected context helps an owner decide what evidence to gather. This report has not examined your application.","related_sources":[{"id":"sr-26aafde804e10e9c8a86187b68365f65","url":"https://github.com/advisories/GHSA-r77w-qph3-7vf8","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-r77w-qph3-7vf8","publisher":"GitHub Advisory Database","observed_at":"2026-10-31T22:07:30.906Z"},{"id":"sr-01c77db06c8dae1c86dc018a3b53b873","url":"https://www.first.org/epss/data.html","basis":"official_catalog","notes":"FIRST EPSS; probability of exploitation in the next 30 days, not local compromise. Dataset date/model retained; FIRST services terms apply.","title":"CVE-2026-75508","publisher":"FIRST EPSS","observed_at":"2026-10-31T22:20:46.866Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-26aafde804e10e9c8a86187b68365f65"],"technology":"graphql-core","known_exclusions":[],"conditions_summary":"### Summary\n\nThe parser's `max_tokens` limit — the documented defence against oversized GraphQL\ndocuments — did not count comment tokens. A document padded with comments could\ntherefore pass a `max_tokens` check of any size while still allocating one `Token`\nobject per comment, all of which stay reachable for the lifetime of the parsed\ndocument. A 38 MB comment-padded payload allocated roughly 92 MB of additional\nresident memory with `max_tokens=5` in force.\n\n### Details\n\n`Lexer.lookahead()` reads tokens one at a time and skips over comments, returning only\nthe first non-comment token. Each skipped comment is nevertheless fully tokenized,\nallocated as a `Token` object, and linked into the persistent token list via\n`token.next` / `token.prev` — the chain that powers source-location reporting, and\nwhich is retained as long as the document is.\n\n`Parser.advance_lexer()` incremented the token counter only for the tokens the lexer\nactually returned. Comments were therefore invisible to the accounting, and\n`max_tokens` bounded only the *non-comment* tokens.\n\nThe practical consequence is a gap between what users reasonably believe `max_tokens`\nprotects and what it did protect. The limit wa","public_affected_ranges":[">= 3.2.3, < 3.2.12"]},{"certainty":"source_listed","source_ids":["sr-26aafde804e10e9c8a86187b68365f65"],"technology":"graphql-core","known_exclusions":[],"conditions_summary":"### Summary\n\nThe parser's `max_tokens` limit — the documented defence against oversized GraphQL\ndocuments — did not count comment tokens. A document padded with comments could\ntherefore pass a `max_tokens` check of any size while still allocating one `Token`\nobject per comment, all of which stay reachable for the lifetime of the parsed\ndocument. A 38 MB comment-padded payload allocated roughly 92 MB of additional\nresident memory with `max_tokens=5` in force.\n\n### Details\n\n`Lexer.lookahead()` reads tokens one at a time and skips over comments, returning only\nthe first non-comment token. Each skipped comment is nevertheless fully tokenized,\nallocated as a `Token` object, and linked into the persistent token list via\n`token.next` / `token.prev` — the chain that powers source-location reporting, and\nwhich is retained as long as the document is.\n\n`Parser.advance_lexer()` incremented the token counter only for the tokens the lexer\nactually returned. Comments were therefore invisible to the accounting, and\n`max_tokens` bounded only the *non-comment* tokens.\n\nThe practical consequence is a gap between what users reasonably believe `max_tokens`\nprotects and what it did protect. The limit wa","public_affected_ranges":[">= 3.3.0a3, < 3.3.0rc1"]}],"null_published_at":"2026-10-31T22:27:12.382Z","source_updated_at":"2026-10-22T16:27:14.000Z","source_disclosed_at":"2026-10-22T16:27:14.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"Dated EPSS estimate updated; this is not a new disclosure or proof of exploitation.","null_first_observed_at":"2026-10-31T22:07:30.906Z"},{"id":"NVI-00010132","kind":"vulnerability","title":"GraphQL-core: Denial of service via comment tokens bypassing the parser's max_tokens limit","revision":1,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-r77w-qph3-7vf8","CVE-2026-75508"],"plain_summary":"GitHub lists this reviewed advisory for graphql-core, graphql-core. Published version ranges and source prerequisites are shown below; this is not an inspection of a visitor’s application.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"Identify the exact component and deployed version, examine the linked publisher’s conditions, and retain evidence of any mitigation.","source_ids":["sr-26aafde804e10e9c8a86187b68365f65"],"action_type":"investigate","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null}],"schema_version":"1.1.0","source_metrics":[{"kind":"CVSS","as_of":"2026-10-22T16:27:14.000Z","value":"7.5 high","meaning":"GitHub source severity; exploitability and local consequence require separate evidence.","source_id":"sr-26aafde804e10e9c8a86187b68365f65"}],"why_it_matters":"Published affected context helps an owner decide what evidence to gather. This report has not examined your application.","related_sources":[{"id":"sr-26aafde804e10e9c8a86187b68365f65","url":"https://github.com/advisories/GHSA-r77w-qph3-7vf8","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-r77w-qph3-7vf8","publisher":"GitHub Advisory Database","observed_at":"2026-10-31T22:07:30.906Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-26aafde804e10e9c8a86187b68365f65"],"technology":"graphql-core","known_exclusions":[],"conditions_summary":"### Summary\n\nThe parser's `max_tokens` limit — the documented defence against oversized GraphQL\ndocuments — did not count comment tokens. A document padded with comments could\ntherefore pass a `max_tokens` check of any size while still allocating one `Token`\nobject per comment, all of which stay reachable for the lifetime of the parsed\ndocument. A 38 MB comment-padded payload allocated roughly 92 MB of additional\nresident memory with `max_tokens=5` in force.\n\n### Details\n\n`Lexer.lookahead()` reads tokens one at a time and skips over comments, returning only\nthe first non-comment token. Each skipped comment is nevertheless fully tokenized,\nallocated as a `Token` object, and linked into the persistent token list via\n`token.next` / `token.prev` — the chain that powers source-location reporting, and\nwhich is retained as long as the document is.\n\n`Parser.advance_lexer()` incremented the token counter only for the tokens the lexer\nactually returned. Comments were therefore invisible to the accounting, and\n`max_tokens` bounded only the *non-comment* tokens.\n\nThe practical consequence is a gap between what users reasonably believe `max_tokens`\nprotects and what it did protect. The limit wa","public_affected_ranges":[">= 3.2.3, < 3.2.12"]},{"certainty":"source_listed","source_ids":["sr-26aafde804e10e9c8a86187b68365f65"],"technology":"graphql-core","known_exclusions":[],"conditions_summary":"### Summary\n\nThe parser's `max_tokens` limit — the documented defence against oversized GraphQL\ndocuments — did not count comment tokens. A document padded with comments could\ntherefore pass a `max_tokens` check of any size while still allocating one `Token`\nobject per comment, all of which stay reachable for the lifetime of the parsed\ndocument. A 38 MB comment-padded payload allocated roughly 92 MB of additional\nresident memory with `max_tokens=5` in force.\n\n### Details\n\n`Lexer.lookahead()` reads tokens one at a time and skips over comments, returning only\nthe first non-comment token. Each skipped comment is nevertheless fully tokenized,\nallocated as a `Token` object, and linked into the persistent token list via\n`token.next` / `token.prev` — the chain that powers source-location reporting, and\nwhich is retained as long as the document is.\n\n`Parser.advance_lexer()` incremented the token counter only for the tokens the lexer\nactually returned. Comments were therefore invisible to the accounting, and\n`max_tokens` bounded only the *non-comment* tokens.\n\nThe practical consequence is a gap between what users reasonably believe `max_tokens`\nprotects and what it did protect. The limit wa","public_affected_ranges":[">= 3.3.0a3, < 3.3.0rc1"]}],"null_published_at":"2026-10-31T22:13:48.416Z","source_updated_at":"2026-10-22T16:27:14.000Z","source_disclosed_at":"2026-10-22T16:27:14.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"First indexed by Null; source disclosure date is shown separately.","null_first_observed_at":"2026-10-31T22:07:30.906Z"}],"next_cursor":null,"snapshot_revision":"42594"}