{"id":"CVE-2026-63421","aliases":["EUVD-2026-64134","GHSA-cqmq-8755-7xvh"],"status":"published","title":"Keystone: `graphql.maxTake` bypass with negative `take`","description":"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.","severity":{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-12","score":0.0067,"percentile":0.52484,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-20","CWE-480"],"published":"2026-08-21T20:15:16Z","modified":"2026-10-28T02:31:03Z","fixes":[{"ecosystem":"npm","package":"@keystone-6/core","fixed_in":["6.5.3"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"npm","package":"@keystone-6/core","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"last_affected":"6.5.2"},{"fixed":"6.5.3"}]}]},{"source":"osv","ecosystem":"npm","package":"@keystone-6/core","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"6.5.3"}]}]}],"products":[{"vendor":"keystonejs","product":"keystone"},{"vendor":"openstack","product":"keystone"}],"references":[{"url":"https://github.com/keystonejs/keystone/security/advisories/GHSA-cqmq-8755-7xvh","tags":["x_refsource_CONFIRM","advisory","web"]},{"url":"https://github.com/keystonejs/keystone/pull/9859","tags":["x_refsource_MISC","fix","web"]},{"url":"https://github.com/keystonejs/keystone/commit/9fb88b246950ce4de754a43fe6416f20403577b1","tags":["x_refsource_MISC","fix","web"]},{"url":"https://github.com/keystonejs/keystone/releases/tag/@keystone-6/core@6.5.3","tags":["x_refsource_MISC","web"]},{"url":"https://github.com/advisories/GHSA-cqmq-8755-7xvh"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/63xxx/CVE-2026-63421.json","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-63421","tags":["advisory"]},{"url":"https://github.com/keystonejs/keystone","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2026-63421","title":"Keystone: `graphql.maxTake` bypass with negative `take`","description":"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.","status":"published","published":"2026-08-21T20:15:16.459Z","modified":"2026-08-26T17:39:12.659Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high","assessor":"cna"}],"cwes":["CWE-20","CWE-480"],"updated_at":"2026-11-02T14:19:55.914391Z"}],"euvd":[{"id":"EUVD-2026-64134","description":"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.","status":"published","published":"2026-08-21T20:15:16Z","modified":"2026-08-26T17:39:12Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T18:01:30.08255Z"}],"ghsa":[{"id":"GHSA-cqmq-8755-7xvh","title":"Keystone vulnerable to `graphql.maxTake` bypass with negative `take`","description":"# Summary\nThe value of `graphql.maxTake` can be bypassed by providing a negative input.\nThis 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.\n\n# Impact\nThis affects any project relying on `graphql.maxTake` to bound the number of items returned per query.\n\n# Patches\nThis issue has been patched in `@keystone-6/core` version `6.5.3`.\n\nIf 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.\n\n# Credit\nThis issue was found by [Haxset's](https://haxset.com) Security Scanner and validated by their team.","status":"published","published":"2026-08-21T20:55:11Z","modified":"2026-08-21T20:55:12Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"cwes":["CWE-20","CWE-480"],"updated_at":"2026-11-02T14:41:04.755504Z"}],"nvd":[{"id":"CVE-2026-63421","description":"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.","status":"published","published":"2026-08-21T21:17:01.643Z","modified":"2026-10-12T16:10:00.22Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high","assessor":"secondary"}],"cwes":["CWE-20","CWE-480"],"updated_at":"2026-11-02T14:12:40.665005Z"}],"osv":[{"id":"CVE-2026-63421","title":"Keystone: `graphql.maxTake` bypass with negative `take`","description":"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.","status":"published","published":"2026-08-21T20:15:16.459Z","modified":"2026-10-28T02:31:03.677032826Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"cwes":["CWE-20","CWE-480"],"updated_at":"2026-11-02T15:45:13.306117Z"},{"id":"GHSA-cqmq-8755-7xvh","title":"Keystone vulnerable to `graphql.maxTake` bypass with negative `take`","description":"# Summary\nThe value of `graphql.maxTake` can be bypassed by providing a negative input.\nThis 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.\n\n# Impact\nThis affects any project relying on `graphql.maxTake` to bound the number of items returned per query.\n\n# Patches\nThis issue has been patched in `@keystone-6/core` version `6.5.3`.\n\nIf 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.\n\n# Credit\nThis issue was found by [Haxset's](https://haxset.com) Security Scanner and validated by their team.","status":"published","published":"2026-08-21T20:55:11Z","modified":"2026-08-21T21:10:59.624585Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"cwes":["CWE-20","CWE-480"],"updated_at":"2026-11-02T15:46:45.28161Z"}]}}
