Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate and obtain valid non-admin JWT
-
DeliverySend GraphQL request to admin-restricted custom-resolver field
-
ExploitType-level @authentication evaluated and passed
-
ExecutionField-level @authentication silently discarded by library
-
PersistAdmin-restricted field executes
-
ImpactUnauthorized data access or privileged operation completed
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
|
| Exploitation Conditions | Exploitation requires all four of the following conditions to be simultaneously true: (1) the application runs @neo4j/graphql in a version from 5.2.0 to 5.12.14, 6.0.0 to 6.6.4, or 7.0.0 to 7.5.x; (2) the GraphQL schema defines a type-level @authentication directive on a Query or Mutation type AND at least one field-level @authentication directive on a root custom-resolver field within that same type; (3) the field-level directive enforces a stricter requirement than the type-level directive (e.g., an additional JWT role claim); and (4) the attacker possesses a legitimately issued, correctly signed JWT that satisfies the type-level (coarser) requirement. Applications using only type-level @authentication with no field-level overrides are NOT vulnerable. Applications using only field-level @authentication with no type-level rule are NOT vulnerable. Unauthenticated attackers cannot exploit this - a valid JWT satisfying the type-level check is a hard prerequisite. |
| Impact | The CVSS 4.0 score of 7.6 (High) with vector AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:N is a fair representation of actual risk. The two key risk-limiting signals are AT:P (attack requirements present - the vulnerable directive co-occurrence pattern must be in use) and PR:L (a valid, legitimately issued JWT is required). Applications that use type-level @authentication exclusively, or field-level @authentication exclusively, are not affected; only those that combine both scopes on the same type with a stricter field-level rule are vulnerable. No EPSS data was provided in the input, so exploitation probability cannot be quantified numerically. No CISA KEV listing exists and no public exploit code has been identified, indicating no confirmed widespread exploitation. Where the configuration pattern is present, the impact is high on both confidentiality and integrity - authenticated regular users can read sensitive data or invoke privileged write operations with no additional effort. This is a real, actionable priority for Neo4j GraphQL deployments using the affected directive pattern, not a theoretical high-CVSS-low-real-risk issue. |
| Exploit ScenarioDerived | An attacker holds a legitimately issued, correctly signed JWT with roles: ["user"], issued by the application's own identity provider. They identify a GraphQL Mutation type protected by a type-level @authentication rule (which their user token satisfies) that also contains an adminDeleteUser mutation field protected by a field-level @authentication rule requiring roles_INCLUDES: "admin". They send a standard GraphQL mutation request with their user token; the library evaluates the type-level rule (passes), discards the field-level admin check, and executes the privileged mutation. No token forgery, no brute force, and no public exploit code is required. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 18, 2026
Authentication bypass in @neo4j/graphql exposes admin-restricted custom-resolver fields to any authenticated user holding a legitimately issued, non-admin JWT. When both a type-level @authentication directive and a stricter field-level @authentication directive are declared on the same Query or Mutation type, the library silently discards the field-level rule and evaluates only the coarser type-level check - meaning a roles: ["user"] token is sufficient to invoke a field that requires roles_INCLUDES: "admin". Affected across three major branches (5.2.0-5.12.14, 6.0.0-6.6.4, 7.0.0-7.5.x); no public exploit or CISA KEV listing identified at time of analysis.
RemediationAI
Upgrade @neo4j/graphql to a patched version: 5.12.15 or later for 5.x deployments, or 7.6.0 or later for 7.x deployments. For the 6.x branch, consult the vendor advisory at https://neo4j.com/security/CVE-2026-19869 for the exact patched release, as the EUVD data indicates 6.6.4 is the last affected version but does not confirm the fix version number. As a compensating control prior to patching, eliminate the conflicting directive pattern: remove the type-level @authentication from the Query or Mutation type and replace it with explicit field-level @authentication directives on every field in that type, ensuring no field relies on type-level inheritance. This sidesteps the evaluation conflict entirely but requires auditing every field for completeness, since missing a field would leave it unprotected. Alternatively, move admin-role enforcement into custom resolver logic directly rather than relying on the directive layer; this is more verbose but removes the framework dependency. Both workarounds carry implementation risk if applied incompletely.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The @neo4j/graphql library (CPE: cpe:2.3:a:neo4j:graphql:*:*:*:*:*:*:*:*) is Neo4j's official GraphQL schema-generation and query-translation layer, which exposes Neo4j graph database data via a GraphQL API. It provides declarative authorization through @authentication directives that can be applied at the type level (governing an entire Query or Mutation type) and at the field level (governing individual root custom-resolver fields within those types). The defect, assigned CWE-639 (Authorization Bypass Through User-Controlled Key), manifests as a logic error in directive evaluation order: when both directive scopes are present on the same operation type, the authorization pipeline evaluates the type-level rule, short-circuits, and never reaches the field-level rule. The JWT claim check that enforces the stricter field-level requirement - for example, jwt: { roles_INCLUDES: "admin" } - is never executed. No token manipulation is required; the bypass is entirely a server-side evaluation failure.
Know when Neo4j 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
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
Network-accessible GraphQL API requires PR:L (valid user JWT mandatory); AC:L once the vulnerable directive pattern is deployed; no availability impact and no scope change.
Primary rating from Vendor (Neo4j).
CVSS VectorVendor: Neo4j
Lifecycle Timeline
2DescriptionCVE.org
@neo4j/graphql from 5.2.0 until the patched versions fails to enforce field-level @authentication rules on root custom-resolver fields when a type-level @authentication rule is also present on the same operation type. When both a type-level @authentication (on Query/Mutation) and a field-level @authentication (on a root custom-resolver field within that type) are declared, only the type-level rule is evaluated and the field-level rule is silently discarded. As a result a stricter per-field requirement - such as an admin-role JWT claim (jwt: { roles_INCLUDES: "admin" }) - is never checked, and any client that satisfies the coarser type-level requirement can invoke the more-restricted field. No token forgery is involved: a legitimately issued, correctly signed non-admin token (e.g. roles: ["user"]) is sufficient.
Executive ViewAI
A critical authentication bypass in @neo4j/graphql silently discards field-level authorization directives when type-level directives coexist, allowing authenticated non-admin users to invoke admin-restricted operations. No public exploit has been identified at time of analysis. Organizations using affected versions (5.2.0-5.12.14, 6.0.0-6.6.4, 7.0.0-7.5.x) face immediate risk of unauthorized administrative access through valid user tokens.
Apply vendor patch.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
neo4j-contrib neo4j-apoc-procedures version before commit 45bc09c contains a XML External Entity (XXE) vulnerability in
Neo4j through 3.4.18 (with the shell server enabled) exposes an RMI service that arbitrarily deserializes Java objects,
Due to incorrect access control in Neo4j Enterprise Database Server 3.4.x before 3.4.9, the setting of LDAP for authenti
APOC (Awesome Procedures on Cypher) is an add-on library for Neo4j. Rated high severity (CVSS 8.1), this vulnerability i
Neo4j APOC (Awesome Procedures on Cypher) before 4.3.0.7 and 4.x before 4.4.0.8 allows Directory Traversal to sibling di
Schema-level and Query/Mutation type-level @authentication directives are silently ignored for top-level @cypher fields
A failure in resetting the security context in some transaction actions in Neo4j Graph Database 4.2 and 4.3 could allow
Authorization bypass in @neo4j/graphql 7.0.0 through 7.6.3 lets an authenticated user read, create, and delete records t
JWT authentication bypass in @neo4j/graphql allows unauthenticated remote clients to forge arbitrary JWT claims over Gra
Multiple cross-site request forgery (CSRF) vulnerabilities in Neo4J 1.9.2 allow remote attackers to hijack the authentic
The Cypher component in Neo4j 5.0.0 through 5.18 mishandles IMMUTABLE privileges in some situations where an attacker al
Bolt protocol handshake decoder in Neo4j Enterprise and Community Editions fails to distinguish overlong capability mask
EUVD-2026-61047
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB