CVE-2026-19869

Privilege Escalation via Dropped Field-Level @authentication

Published Aug 18, 2026 CVSS 4.0 · 7.6 High EPSS < 1% KEV · Not listed
Description
@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.

Remediation

Vendor Solution

Upgrade the library to 7.6.0+ or 5.12.15+. v6 is end-of-life and will not receive a fix. v5 releases prior to 5.2.0 are not affected. For users who cannot upgrade immediately: do not combine a type-level @authentication with a field-level @authentication on the same root operation type. Because the type-level annotation is what shadows the field-level rule, removing it restores correct enforcement — instead apply a complete @authentication directive to each root field individually, including the full stricter rule on the sensitive field. Alternatively, enforce the stricter requirement inside the custom resolver's own code.

Tracking

Sign in to view the affected projects.

Advisories

No advisories available
History
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}

Type Values Removed Values Added
Description @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.
Title Privilege Escalation via Dropped Field-Level @authentication
First Time appeared Neo4j
Neo4j graphql
Weaknesses CWE-639
CPEs cpe:2.3:a:neo4j:graphql:*:*:*:*:*:*:*:*
Vendors & Products Neo4j
Neo4j graphql
References
Metrics cvssV4_0

{'score': 7.6, 'vector': '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'}

Weaknesses

Sources

Status
PUBLISHED
Assigner
Neo4j
Published
Updated
Aug 19, 2026, 4:02 PM
Reserved
Aug 14, 2026, 11:22 AM
Status
Awaiting Analysis
Published
Aug 18, 2026, 5:16 PM
Modified
Oct 22, 2026, 10:10 PM