Patch-release GraphQL-core v3.2.12, based on GraphQL.js v16.14.2.
This patch-release supports Python 3.7 to 3.14.
This is a security release. It fixes two denial-of-service vulnerabilities in the validator and the parser. Upgrading is recommended for all users.
Security fixes:
- CVE-2026-75507 (GHSA-vj8h-fx38-h3vc, High) — the
OverlappingFieldsCanBeMergedvalidation rule could be driven into quadratic and worse running time by a small, highly compressible query using repeated inline fragments, occupying a worker for minutes of CPU during validation, before any resolver runs. Validation now enforces a per-document comparison budget and aborts with aGraphQLErroronce it is exhausted. - CVE-2026-75508 (GHSA-r77w-qph3-7vf8, High) — comment tokens were allocated and retained but not counted toward the parser's
max_tokenslimit, so a comment-padded document could bypass the limit while allocating one token object per comment.max_tokensnow counts every token the parser consumes, including skipped comments.
Please note the two behaviour changes this implies:
- A pathological query that previously validated — slowly — now produces a validation error. Realistic queries stay far below the limit, which defaults to 250,000 field comparisons and can be adjusted by assigning to
graphql.validation.rules.overlapping_fields_can_be_merged.MAX_FIELD_COMPARISONS. - Comments now count toward
max_tokens, so a comment-heavy document that was previously accepted may now be rejected. If you parse documents with substantial comments and setmax_tokens, you may need to raise the limit. Thetoken_countof a parsed document now includes comments as well.
Both limits complement, but do not replace, a request body-size limit applied to the decompressed request body in your web framework.
Other changes:
- Updated development dependencies and CI tooling.
The security issues were reported by @BZHunt, who also reviewed the fixes before release. In memory of ZaX, who was the driving force behind this discovery. The first one was also independently found and diagnosed by @bcmyguest.
Thanks to @jkimbo for sponsoring this project.