Skip to main content

Keystone CMS EUVDEUVD-2026-64134

| CVE-2026-63421 HIGH
Improper Input Validation (CWE-20)
2026-08-21 GitHub_M GHSA-cqmq-8755-7xvh
7.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify public-facing Keystone GraphQL endpoint
  2. Delivery
    Craft query with large negative take value
  3. Exploit
    Submit unauthenticated GraphQL request
  4. Execution
    Bypass maxTake guard (negative integer < positive bound)
  5. Persist
    Database returns unbounded record set
  6. Impact
    Service memory/CPU/connections exhausted

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Input validation, allowlisting
Exploitation Conditions

The target must be running @keystone-6/core prior to version 6.5.3 with the graphql.maxTake option configured - without this option, all take values are unbounded by design and the comparison is moot. The GraphQL API endpoint must be network-reachable by the attacker; per CVSS PR:N, no authentication is required, meaning the endpoint must accept unauthenticated queries for full-severity exploitation. The bypass works on both top-level list queries (e.g., posts(take: -N)) and relationship sub-queries (e.g., user { posts(take: -N) }), so any exposed resolver with a relationship field compounds the risk. Exploitation is limited when GraphQL access is gated behind authentication, restricted to internal networks, or when graphql.maxTake is not configured (though the latter means no limit exists at all). Non-default deployment topologies that place the GraphQL API behind an authenticated API gateway are not affected by unauthenticated exploitation.

Impact

The CVSS 7.5 score with vector AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H accurately reflects real-world risk for publicly exposed deployments. Attack complexity is genuinely low - exploitation requires only a valid GraphQL query with a negative integer, a technique derivable from reading the public advisory and test cases in PR #9859. There is no confidentiality or integrity impact confirmed, limiting the blast radius to availability. KEV status is not listed, meaning active exploitation in the wild has not been confirmed by CISA. EPSS score was not provided in the input data. The 'Authentication Bypass' tag included in CVE metadata is partially misleading - this bypasses a record-count safeguard, not authentication controls. Deployments that restrict GraphQL API access to authenticated sessions or internal networks face substantially reduced risk, as PR:N exploitation requires the endpoint to be reachable by the attacker. For fully public-facing Keystone deployments, this is a credible DoS vector requiring immediate patching.

Exploit ScenarioDerived

An unauthenticated attacker sends a GraphQL query such as { posts(take: -999999) { id title body author { id } } } to a public-facing Keystone endpoint. The unpatched (take ?? Infinity) > maxTake guard passes because -999999 is less than, not greater than, any positive maxTake value, so the database query executes without a record limit. The server then attempts to stream an unbounded result set, exhausting database connections, application memory, or CPU, degrading or denying service to legitimate users. No specific public exploit tool has been identified, though the technique requires only knowledge of GraphQL syntax and the public advisory.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
1 public PoC Patch available 0.5% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 21, 2026

Unauthenticated resource exhaustion in Keystone CMS (Node.js) prior to version 6.5.3 allows any remote GraphQL client to bypass the configured graphql.maxTake record-count limit by supplying a negative take value, since the comparison (take ?? Infinity) > maxTake evaluates to false for negative integers regardless of their magnitude. The bypass applies to both top-level list queries and relationship sub-queries, enabling an attacker to force the server to retrieve an unbounded number of database records and exhaust service resources. No public exploit code has been identified at time of analysis, though the fix and advisory are publicly available.

RemediationAI

Upgrade @keystone-6/core to version 6.5.3 or later, which corrects the comparison logic in findMany by wrapping the take argument in Math.abs() before evaluating it against graphql.maxTake. The patched release is confirmed at https://github.com/keystonejs/keystone/releases/tag/@keystone-6/core@6.5.3 and the underlying fix is in commit 9fb88b2. If immediate upgrade is not feasible, require authentication for all GraphQL endpoint access via application middleware or API gateway policy - this converts the attack from unauthenticated to at minimum authenticated, reducing exposure. Alternatively, deploy a WAF rule or reverse-proxy middleware that rejects take arguments with negative integer values; note that some GraphQL pagination patterns use negative take for backwards pagination, so test client behavior before blocking. Restricting the Keystone GraphQL endpoint to internal networks or VPN-only access is the strongest compensating control and eliminates unauthenticated exposure entirely. The full advisory and PR discussion are at https://github.com/keystonejs/keystone/security/advisories/GHSA-cqmq-8755-7xvh and https://github.com/keystonejs/keystone/pull/9859.

Affected VersionsENISA

Keystone < 6.5.3

Affected Packages

npm @keystone-6/core fix: 6.5.3
euvd keystone fix: 6.5.3

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in npm, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Keystone is an open-source headless CMS built on Node.js and GraphQL, identified by CPE cpe:2.3:a:keystonejs:keystone:*:*:*:*:*:*:*:*. The vulnerability resides in packages/core/src/lib/core/queries/resolvers.ts within the findMany function, which enforces a configurable maximum record return limit via the graphql.maxTake server option. The guard condition (take ?? Infinity) > maxTake is designed to reject oversized take values, but fails for negative integers because a negative number is never arithmetically greater than a positive bound - e.g., -1000000 > 1000 is false. The root cause is CWE-20 (Improper Input Validation): the signed take argument is compared directly without first normalizing it with Math.abs(). The fix, introduced in PR #9859 (commit 9fb88b2), changes the guard to Math.abs(take ?? Infinity) > maxTake. The flaw also affects relationship sub-queries (e.g., user { posts(take: -N) }), meaning deeply nested GraphQL queries can compound the resource impact.

Know when Keystone gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 7.5 HIGH

Network-reachable GraphQL endpoint requires no auth (PR:N); single crafted query suffices (AC:L); only availability is impacted via unbounded record retrieval.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

2
Patch available
Aug 21, 2026 - 21:02 EUVD
CVE Published
Aug 21, 2026 - 20:15 cve.org
HIGH 7.5

DescriptionCVE.org

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.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 5 npm packages depend on @keystone-6/core (5 direct, 0 indirect)

Ecosystem-wide dependent count for version 6.5.3.

Latest POC

1 public PoC link from github

Sign in to open the public PoC links collected for this CVE.

Executive ViewAI

Why It Matters

Keystone CMS deployments before version 6.5.3 are vulnerable to resource-exhaustion attacks from any unauthenticated attacker; no public exploit identified at time of analysis. The vulnerability allows attackers to crash services and deny customer access by exhausting database resources. Organizations must patch to version 6.5.3 immediately to restore security.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.5%
Top 61% exploitable
Prevalence
Medium
popular Node.js headless CMS, moderate but not dominant footprint
Threat Intel
1
1 source
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC Yes
EPSS 0.5%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Out-of-Cycle
Exploitation· derived
Poc
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

58
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

CVE-2017-15879 HIGH POC
8.8 Oct 24

CSV Injection (aka Excel Macro Injection or Formula Injection) exists in admin/server/api/download.js and lib/list/getCS

CVE-2022-39382 CRITICAL POC
9.8 Nov 03

Keystone is a headless CMS for Node.js - built with GraphQL and React.`@keystone-6/core@3.0.0 || 3.0.1` users that use `

CVE-2022-39322 CRITICAL POC
9.8 Oct 25

@keystone-6/core is a core package for Keystone 6, a content management system for Node.js. Rated critical severity (CVS

CVE-2022-29354 CRITICAL POC
9.8 May 16

An arbitrary file upload vulnerability in the file upload module of Keystone v4.2.1 allows attackers to execute arbitrar

CVE-2017-16570 HIGH POC
8.8 Nov 06

KeystoneJS before 4.0.0-beta.7 allows application-wide CSRF bypass by removing the CSRF parameter and value, aka SecureL

CVE-2019-19687 HIGH POC
8.8 Dec 09

OpenStack Keystone 15.0.0 and 16.0.0 is affected by Data Leakage in the list credentials API. Rated high severity (CVSS

CVE-2021-38155 HIGH POC
7.5 Aug 06

OpenStack Keystone 10.x through 16.x before 16.0.2, 17.x before 17.0.1, 18.x before 18.0.1, and 19.x before 19.0.1 allow

CVE-2017-15878 MEDIUM POC
6.1 Oct 24

A cross-site scripting (XSS) vulnerability exists in fields/types/markdown/MarkdownType.js in KeystoneJS before 4.0.0-be

CVE-2022-2447 MEDIUM POC
6.6 Sep 01

A flaw was found in Keystone. Rated medium severity (CVSS 6.6), this vulnerability is remotely exploitable. Public explo

CVE-2014-3520 MEDIUM POC
6.5 Oct 26

OpenStack Identity (Keystone) before 2013.2.4, 2014.x before 2014.1.2, and Juno before Juno-2 allows remote authenticate

CVE-2014-0204 MEDIUM POC
6.5 Nov 03

OpenStack Identity (Keystone) before 2014.1.1 does not properly handle when a role is assigned to a group that has the s

CVE-2013-2059 MEDIUM POC
6.0 May 21

OpenStack Identity (Keystone) Folsom 2012.2.4 and earlier, Grizzly before 2013.1.1, and Havana does not immediately revo

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy