CVE-2026-92682
WysokieCVSS 8.6Streszczenie
W @neo4j/graphql w wersjach od 7.0.0 do 7.6.4, kwantyfikator none w filtrach @authorization na relacjach i połączeniach nie jest negowany podczas tłumaczenia na Cypher, więc zachowuje się jak some. Reguła taka jak "żaden z powiązanych zabronionych użytkowników nie pasuje do podmiotu JWT" zwraca dokładnie rekordy, które miała wykluczyć, i wyklucza te, które miała zwrócić. Uwierzytelniony użytkownik, którego taka reguła ma odrzucić, może odczytać chronione rekordy. Dotyczy to również mutacji, więc wrażliwe dane mogą być tworzone i usuwane przez użytkowników, którzy nie powinni mieć do nich dostępu zgodnie z typedefs. Naprawiono w 7.6.4.
Ocena ryzyka
Ryzyko obejmuje nieautoryzowany dostęp do chronionych danych oraz możliwość tworzenia i usuwania wrażliwych danych przez nieuprawnionych użytkowników.
Rekomendacja
Zaleca się aktualizację @neo4j/graphql do wersji 7.6.4 lub nowszej oraz przegląd reguł autoryzacji pod kątem poprawności negacji.
Inne podatności w @neo4j/graphql
Zobacz wszystkie- CVE-2026-92681Krytyczne
W pakiecie @neo4j/graphql w wersjach do 7.6.3 włącznie dyrektywy @authentication stosowane na poziomie schematu lub na typach Query/Mutation są po cichu ignorowane dla pól najwyższego poziomu oznaczonych @cypher. Egzekwowane są tylko dyrektywy @authentication umieszczone bezpośrednio na poszczególnych polach. Aplikacja wystawiająca pole @cypher najwyższego poziomu i polegająca na ochronie na poziomie schematu lub typu pozwala nieuwierzytelnionym wywołującym uruchomić skonfigurowane zapytanie Cypher z uprawnieniami konta usługi GraphQL, co może umożliwić odczyt i modyfikację danych. Poprawiono w 7.6.4.
- CVE-2026-19869Wysokie
@neo4j/graphql od wersji 5.2.0 do wersji przed poprawką nie egzekwuje reguł autoryzacji na poziomie pól dla niestandardowych resolverów, gdy na tym samym typie operacji istnieje również reguła na poziomie typu. Reguła na poziomie pola jest ignorowana, co pozwala klientowi spełniającemu słabszą regułę na wywołanie bardziej restrykcyjnego pola.
- CVE-2026-5423Wysokie
Biblioteka @neo4j/graphql w wersjach przed 7.5.6 nie weryfikuje autentyczności dostarczonego przez klienta, wstępnie zdekodowanego obiektu JWT przekazywanego przez GraphQL subscription connectionParams. W rezultacie każdy nieuwierzytelniony zdalny klient, który może otworzyć połączenie GraphQL-over-WebSocket, może sfałszować dowolne roszczenia JWT (np. sub, roles) w connectionParams.jwt i mieć je zaakceptowane jako tożsamość uwierzytelnioną dla oceny dyrektyw @authentication i @subscriptionsAuthorization. Umożliwia to nieuwierzytelnionemu atakującemu otrzymywanie zdarzeń subskrypcji, które powinny być ograniczone do określonych uwierzytelnionych ról/użytkowników. Zalecane jest uaktualnienie do wersji 7.5.6+ lub 5.12.14+.
Oryginalny opis (angielski, źródło NVD)
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.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

