CVE-2026-33326 Overview
CVE-2026-33326 is an Authorization Bypass vulnerability in Keystone, a popular content management system for Node.js. Prior to version 6.5.2, the {field}.isFilterable access control mechanism can be bypassed in findMany queries by passing a cursor parameter. This bypass allows attackers to confirm the existence of records by accessing protected field values, effectively circumventing the intended access control restrictions.
This vulnerability represents an incomplete fix for the previously disclosed CVE-2025-46720, which addressed field-level isFilterable bypass for update and delete mutations. While that patch added checks to the where parameter in update and delete mutations, the cursor parameter in findMany queries was overlooked and continues to accept the same UniqueWhere input type, creating an exploitable access control gap.
Critical Impact
Unauthorized information disclosure through access control bypass allows attackers to enumerate and confirm the existence of sensitive records protected by field-level access controls.
Affected Products
- Keystone CMS for Node.js versions prior to 6.5.2
Discovery Timeline
- 2026-03-24 - CVE CVE-2026-33326 published to NVD
- 2026-03-25 - Last updated in NVD database
Technical Details for CVE-2026-33326
Vulnerability Analysis
This vulnerability stems from an improper authorization check (CWE-863) in the Keystone CMS GraphQL API. The isFilterable access control is designed to prevent unauthorized users from filtering or querying records based on sensitive field values. However, due to incomplete patching of a related vulnerability, the cursor-based pagination mechanism bypasses these controls.
When a GraphQL findMany query is executed with a cursor parameter, the system accepts a UniqueWhere input type that allows specification of field values for record identification. Because the isFilterable check is not applied to the cursor parameter processing path, an attacker can craft queries that use protected field values in the cursor, effectively probing for the existence of records with specific field values.
The attack allows for information disclosure through boolean-based enumeration—by observing whether queries succeed or fail, an attacker can confirm whether records with specific protected field values exist in the database.
Root Cause
The root cause is an incomplete patch for CVE-2025-46720. While the original fix correctly implemented isFilterable checks for where parameters in update and delete mutations, the same validation was not extended to the cursor parameter in findMany queries. Since both parameters accept the same UniqueWhere input type, this oversight creates a parallel attack path that bypasses the intended access controls.
Attack Vector
The attack is network-based and requires low privileges (authenticated access to the GraphQL API). An attacker with valid API credentials can craft findMany GraphQL queries with malicious cursor parameters containing protected field values. By analyzing the response behavior, the attacker can enumerate records and confirm the existence of specific values in protected fields.
The attack flow involves:
- Identifying a protected field with isFilterable access control enabled
- Crafting a findMany GraphQL query with a cursor parameter containing a suspected field value
- Analyzing the API response to determine if a record matching that value exists
- Iterating through potential values to enumerate protected data
For technical implementation details and specific query structures, refer to the GitHub Security Advisory.
Detection Methods for CVE-2026-33326
Indicators of Compromise
- Unusual patterns of findMany GraphQL queries with cursor parameters targeting protected fields
- High volume of sequential queries with varying cursor values from the same authenticated session
- API error logs showing access control violations or unexpected cursor-based lookups
- Authenticated users querying fields they should not have access to filter
Detection Strategies
- Implement logging for all GraphQL queries that include cursor parameters with field-specific values
- Create alerts for enumeration patterns (multiple rapid cursor queries from single sources)
- Monitor for queries targeting known protected isFilterable fields via cursor parameters
- Deploy Web Application Firewall (WAF) rules to detect suspicious cursor parameter patterns
Monitoring Recommendations
- Enable detailed GraphQL query logging including full parameter inspection
- Set up anomaly detection for cursor-based pagination abuse patterns
- Review access logs for authenticated users making unusual data discovery attempts
- Implement rate limiting on GraphQL endpoints to slow enumeration attacks
How to Mitigate CVE-2026-33326
Immediate Actions Required
- Upgrade Keystone CMS to version 6.5.2 or later immediately
- Audit access logs for potential exploitation attempts prior to patching
- Review which fields have isFilterable access controls to assess exposure scope
- Consider temporarily restricting GraphQL API access while patching is performed
Patch Information
The vulnerability has been patched in Keystone CMS version 6.5.2. Organizations should update their Keystone installations by running their standard package update procedures. The patch extends the isFilterable access control checks to cover the cursor parameter in findMany queries, closing the bypass vector.
For detailed patch information and upgrade instructions, refer to the GitHub Security Advisory.
Workarounds
- If immediate patching is not possible, consider implementing additional access control layers at the API gateway level
- Restrict GraphQL endpoint access to trusted networks or VPN-only access
- Implement custom middleware to validate and sanitize cursor parameters before they reach Keystone
- Audit and minimize the use of sensitive fields that rely solely on isFilterable for protection
# Upgrade Keystone to patched version
npm update @keystone-6/core@6.5.2
# Or using yarn
yarn upgrade @keystone-6/core@6.5.2
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

