@neo4j/graphql: authorization relationship and connection filters invert the "none" quantifier
What fixes it
- 7.6.4@neo4j/graphqlCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
In @neo4j/graphql versions from 7.0.0 up to but not including 7.6.4, the none quantifier in @authorization filters on relationships and connections is not negated when translated to Cypher, so it behaves like some. A rule such as "none of the related denied users matches the JWT subject" therefore returns exactly the records it was meant to exclude, and excludes those it was meant to return. An authenticated user whom such a rule is meant to deny can read the protected records. This is also the case for mutations, so the impact is that sensitive data could also be created and deleted by users that shouldn't have access according to the typedefs. Fixed in 7.6.4.
Text from CVE List
Affected versions 1
- @neo4j/graphqlaffected: 7.0.0 before 7.6.4CVE List
References 4
- github.com/neo4j/graphql/commit/17650cc370445a6bb9d394d34063d3623e987aa2Fixvia CVE List
- github.com/neo4j/graphql/releases/tag/%40neo4j%2Fgraphql%407.6.4Fixvia CVE List
- github.com/neo4j/graphql/security/advisories/GHSA-h873-p2wr-fjx6Advisoryvia CVE List
- npmjs.com/package/@neo4j/graphqlReferencevia CVE List