CVE-2026-19869
WysokieCVSS 7.6Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 20 - wyżej niż 20% wszystkich znanych CVE
Streszczenie
@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.
Ocena ryzyka
Atakujący z tokenem niebędącym administratorem (np. rola 'user') może uzyskać dostęp do funkcji wymagających wyższych uprawnień, co może prowadzić do nieautoryzowanych operacji i naruszenia bezpieczeństwa danych.
Rekomendacja
Zaktualizuj @neo4j/graphql do wersji zawierającej poprawkę, która egzekwuje reguły na poziomie pól.
Inne podatności w @neo4j/graphql
Zobacz wszystkie- CVE-2026-92682Wysokie
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.
- 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-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)
@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.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

