CVE-2026-63421: Keystone: `graphql.maxTake` bypass with negative `take`

Published Aug 21, 2026
·
Updated

Summary The value of graphql.maxTake can be bypassed by providing a negative input. This can be used to exceed the developer's intended graphql.maxTake value, allowing queries to return results in excess of the graphql.maxTake value set.

Impact This affects any project relying on graphql.maxTake to bound the number of items returned per query.

Patches This issue has been patched in @keystone-6/core version 6.5.3.

If you cannot patch, you can workaround this by restricting take input values in your GraphQL queries to the bounded value, or by blocking negative values.

Credit This issue was found by Haxset's Security Scanner and validated by their team.

Other sources

Keystone is a content management system for Node.js. Prior to 6.5.3, the findMany resolver in packages/core/src/lib/core/queries/resolvers.ts compares the signed take argument directly with graphql.maxTake, allowing a remote unauthenticated GraphQL client to provide a negative take value whose magnitude exceeds the configured bound. The bypass also applies to relationship queries and can return more records than the developer intended, potentially exhausting service resources. This issue is fixed in version 6.5.3.

MITRE

Affected Software

2 affected componentsFixes available
Keystone Keystone (content management system for Node.js)<6.5.3
npm/@keystone-6/core<=6.5.2
6.5.3

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade npm/@keystone-6/core to a version that resolves this vulnerability.

    Fixed in 6.5.3
  2. Upgrade

    Upgrade @keystone-6/core to a version that resolves this vulnerability.

    Fixed in 6.5.3
  3. Configuration

    If you cannot patch to @keystone-6/core 6.5.3, workaround the bypass by restricting GraphQL `take` inputs to the bounded range implied by `graphql.maxTake`, or block negative `take` values (including for relationship queries) so negative values cannot exceed the configured bound.

    Keystone GraphQL query parameter handling graphql.maxTake bypass workaround = Restrict `take` input values to the bounded value, or block negative values

Event History

Aug 21, 2026
CVE Published
via MITRE·08:15 PM
Data Sourced
via MITRE·08:15 PM
DescriptionSeverityWeakness
Advisory Published
via GitHub·08:55 PM
Data Sourced
via GitHub·08:55 PM
DescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

Which deployments are exposed?

Keystone deployments running a version earlier than 6.5.3 are affected if they expose GraphQL findMany or relationship queries to remote clients. The issue can be exploited without authentication.

2

What does an attacker need to do to trigger the issue?

An attacker only needs network access to the GraphQL endpoint and can submit a negative take argument whose magnitude exceeds the configured graphql.maxTake value. No privileges or user interaction are required.

3

Does setting graphql.maxTake protect affected versions?

No. In affected versions, the resolver compares the signed take value directly to graphql.maxTake, so a negative value can bypass the configured limit.

4

What is the impact of exploitation?

The bypass can return more records than intended, including through relationship queries. Large responses or queries may exhaust service resources, causing an availability impact.

5

What is the remediation?

Upgrade Keystone to version 6.5.3, which fixes the issue.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203