Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Network vector, no privileges or interaction needed; confidentiality-only impact as attacker reads restricted subscription events but cannot write or execute.
Primary rating from Vendor (Neo4j).
CVSS VectorVendor: Neo4j
Lifecycle Timeline
4DescriptionCVE.org
@neo4j/graphql library versions prior to 7.5.6 fail to verify the authenticity of a client-supplied, pre-decoded JWT object passed through GraphQL subscription connectionParams. As a result, any unauthenticated remote client that can open a GraphQL-over-WebSocket connection can forge arbitrary JWT claims (e.g. sub, roles) in connectionParams.jwt and have them accepted as authenticated identity for the purposes of @authentication and @subscriptionsAuthorization directive evaluation. This allows a fully unauthenticated attacker to receive subscription events that should be restricted to specific authenticated roles/users. Upgrade the library to versions 7.5.6+ or 5.12.14+. v6 is end-of-life and will not receive a fix.
AnalysisAI
JWT authentication bypass in @neo4j/graphql allows unauthenticated remote clients to forge arbitrary JWT claims over GraphQL-over-WebSocket connections, bypassing @authentication and @subscriptionsAuthorization directive controls. Affected library versions prior to 7.5.6 (v7 branch) and 5.12.14 (v5 branch) accept client-supplied, pre-decoded JWT objects in subscription connectionParams without any cryptographic verification, meaning the library treats attacker-controlled identity claims as authenticated. No public exploit or KEV listing has been identified at time of analysis, but the exploitation barrier is low given the network-accessible vector and absence of authentication requirements.
Technical ContextAI
The @neo4j/graphql library (CPE: cpe:2.3:a:neo4j:graphql:*:*:*:*:*:*:*:*) provides a GraphQL API layer over Neo4j graph databases. The GraphQL-over-WebSocket protocol (graphql-ws) allows clients to pass arbitrary connection parameters at connection initiation via connectionParams. The library uses these parameters - specifically a pre-decoded JWT object at connectionParams.jwt - to resolve the caller's identity for evaluating @authentication and @subscriptionsAuthorization schema directives. The root cause is CWE-302 (Authentication Bypass by Assumed-Immutable Data): the library assumes that a pre-decoded JWT supplied by the client represents a verified identity, when in fact no signature verification is performed. A correctly implemented flow would verify the JWT's cryptographic signature against a trusted key before trusting its claims. The v6 branch is end-of-life and will not receive a fix, making any v6 deployment permanently vulnerable.
RemediationAI
For v7 users, upgrade @neo4j/graphql to 7.5.6 or later. For v5 users, upgrade to 5.12.14 or later. Both fixes are confirmed by the vendor advisory at https://neo4j.com/security/CVE-2026-5423. For v6 users, Neo4j has confirmed no patch will be released; migration to v7 (7.5.6+) is the only supported resolution. As a compensating control where immediate upgrade is not possible, network-level restrictions on WebSocket connections to the GraphQL endpoint can reduce exposure - specifically, restricting WebSocket access to trusted internal networks or requiring a gateway that enforces JWT verification before proxying subscription connections. Note that application-level workarounds within the library are not available; any mitigation short of upgrading must be enforced externally at the network or gateway layer. Do not rely on @authentication or @subscriptionsAuthorization directives for access control on any unpatched version.
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
A failure in resetting the security context in some transaction actions in Neo4j Graph Database 4.2 and 4.3 could allow
Authentication bypass in @neo4j/graphql exposes admin-restricted custom-resolver fields to any authenticated user holdin
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
Neo4J versions up to 2026.01 contains a vulnerability that allows attackers to XSS if the user opens the logs in a tool
An edgecase in SSO implementation in Neo4j Enterprise edition versions prior to version 2026.02 can lead to unauthorised
Share
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-54094