{"id":"CVE-2026-92684","kind":"vulnerability","aliases":["CVE-2026-92684"],"related":[],"title":"Neo4j GraphQL library: aggregation queries leak protected data without authentication","description":"Missing Authentication for Critical Function in aggregation queries in Neo4j @neo4j/graphql 5.0.0 before 5.12.17 and 7.0.0 before 7.6.8 allows remote attackers to read protected data via GraphQL aggregation queries. Field-level @authentication is not enforced on string aggregates, which can return stored values verbatim, and connection-root aggregates bypass an entity's AGGREGATE authentication requirement, allowing unauthenticated callers to obtain aggregate results.","summary":"The @neo4j/graphql library skips field-level authentication on string aggregates and lets connection-root aggregates bypass the entity's AGGREGATE authentication rule. A remote caller can read protected stored values and aggregate results without logging in.","severity":"high","cvss":8.7,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["graphql","neo4j","node.js","package","self-hosted"],"not_affected_if":["auth-enforced-at-gateway","no-aggregation-queries"],"how_to_check":"- Check the installed version with `npm ls @neo4j/graphql`\n- Look for `@authentication` rules on types that use string fields or aggregation queries in your GraphQL schema","fix":"- `@neo4j/graphql` 5.x: move to `5.12.17` or later\n- `@neo4j/graphql` 7.x: move to `7.6.8` or later","status":"open","published_at":"2026-11-10T17:17:50+00:00","first_seen_at":"2026-11-10T17:22:45+00:00","triaged_at":"2026-11-10T17:23:46+00:00","updated_at":"2026-11-10T17:23:46+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-11-10T17:23:46Z","model":"claude-haiku-5-5","output":{"fix":"- `@neo4j/graphql` 5.x: move to `5.12.17` or later\n- `@neo4j/graphql` 7.x: move to `7.6.8` or later","reach":"internet","title":"Neo4j GraphQL library: aggregation queries leak protected data without authentication","impact":"medium","summary":"The @neo4j/graphql library skips field-level authentication on string aggregates and lets connection-root aggregates bypass the entity's AGGREGATE authentication rule. A remote caller can read protected stored values and aggregate results without logging in.","audience":"developers","category":"package","nicknames":[],"who_cares":["neo4j","graphql","node.js","self-hosted"],"confidence":0.7,"fix_status":"available","needs_auth":"no","worst_case":"unauthenticated callers read protected stored values and aggregate results","analyst_note":"","how_to_check":"- Check the installed version with `npm ls @neo4j/graphql`\n- Look for `@authentication` rules on types that use string fields or aggregation queries in your GraphQL schema\n- unknown","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["no-aggregation-queries","auth-enforced-at-gateway"],"who_is_affected":"Applications that expose a GraphQL API built on @neo4j/graphql and use @authentication rules to protect data. The exposure comes from the aggregation query path, so apps that never expose aggregation queries, or that restrict the API to authenticated callers at the gateway, are less exposed. The sources do not say which default configuration is affected.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"unknown","severity_if_unknown":"unknown"},"cost_usd":0.000764,"input_tokens":4655,"output_tokens":596,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-2026':12A,15A '-92684':13A,16A '5.0.0':72C '5.12.17':74C '7.0.0':76C '7.6.8':78C 'aggreg':4A,34B,40B,45B,57B,67C,88C,99C,110C,115C,123C 'allow':79C,118C 'attack':81C 'authent':10A,31B,46B,62C,93C,116C 'bypass':41B,111C 'caller':50B,120C 'connect':38B,108C 'connection-root':37B,107C 'critic':64C 'cve':11A,14A 'data':8A,85C 'enforc':96C 'entiti':43B,113C 'field':29B,91C 'field-level':28B,90C 'function':65C 'graphql':2A,17B,87C 'host':23B 'leak':6A 'let':36B 'level':30B,92C 'librari':3A,26B 'log':60B 'miss':61C 'neo4j':1A,18B,70C 'neo4j/graphql':25B,71C 'node.js':19B 'obtain':122C 'packag':20B 'protect':7A,53B,84C 'queri':5A,68C,89C 'read':52B,83C 'remot':49B,80C 'requir':117C 'result':58B,124C 'return':102C 'root':39B,109C 'rule':47B 'self':22B 'self-host':21B 'skip':27B 'store':54B,103C 'string':33B,98C 'unauthent':119C 'valu':55B,104C 'verbatim':105C 'via':86C 'without':9A,59B","nicknames":[],"mitigations":[],"who_affected":"Applications that expose a GraphQL API built on @neo4j/graphql and use @authentication rules to protect data. The exposure comes from the aggregation query path, so apps that never expose aggregation queries, or that restrict the API to authenticated callers at the gateway, are less exposed. The sources do not say which default configuration is affected.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"pkeys":[],"ptokens":[],"labels":["graphql","high","neo4j","nodejs","package","selfhosted"],"campaign_type":null,"search_a":"'-2026':12A,15A '-92684':13A,16A 'aggreg':4A 'authent':10A 'cve':11A,14A 'data':8A 'graphql':2A 'leak':6A 'librari':3A 'neo4j':1A 'protect':7A 'queri':5A 'without':9A","search_b":"'aggreg':34B,40B,45B,57B 'authent':31B,46B 'bypass':41B 'caller':50B 'connect':38B 'connection-root':37B 'entiti':43B 'field':29B 'field-level':28B 'graphql':17B 'host':23B 'let':36B 'level':30B 'librari':26B 'log':60B 'neo4j':18B 'neo4j/graphql':25B 'node.js':19B 'packag':20B 'protect':53B 'read':52B 'remot':49B 'result':58B 'root':39B 'rule':47B 'self':22B 'self-host':21B 'skip':27B 'store':54B 'string':33B 'valu':55B 'without':59B","search_c":"'5.0.0':72C '5.12.17':74C '7.0.0':76C '7.6.8':78C 'aggreg':67C,88C,99C,110C,115C,123C 'allow':79C,118C 'attack':81C 'authent':62C,93C,116C 'bypass':111C 'caller':120C 'connect':108C 'connection-root':107C 'critic':64C 'data':85C 'enforc':96C 'entiti':113C 'field':91C 'field-level':90C 'function':65C 'graphql':87C 'level':92C 'miss':61C 'neo4j':70C 'neo4j/graphql':71C 'obtain':122C 'protect':84C 'queri':68C,89C 'read':83C 'remot':80C 'requir':117C 'result':124C 'return':102C 'root':109C 'store':103C 'string':98C 'unauthent':119C 'valu':104C 'verbatim':105C 'via':86C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-10T13:51:40+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/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","cvss_by":"3b236295-4ccd-4a1f-a1c1-a72eecc8d7b6","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-92684","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-92684","severity":null,"published_at":"2026-11-10T17:17:50+00:00","modified_at":"2026-11-10T17:17:50+00:00","first_seen_at":"2026-11-10T17:22:45+00:00","fetched_at":"2026-11-10T17:22:45+00:00","note":null}],"documents":[{"id":116539,"url":"https://github.com/neo4j/graphql/security/advisories/GHSA-9r8x-hf5g-rh66","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-11-10T13:51:40+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"}],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}