CVE-2026-5423
WysokieCVSS 8.2Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 48 - wyżej niż 48% wszystkich znanych CVE
Streszczenie
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+.
Ocena ryzyka
Ryzyko nieautoryzowanego dostępu do danych subskrypcji, które powinny być chronione, co może prowadzić do naruszenia poufności informacji.
Rekomendacja
Zaleca się uaktualnienie biblioteki @neo4j/graphql do wersji 7.5.6+ lub 5.12.14+; wersja 6 jest zakończona i nie otrzyma poprawki.
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-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-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.
Oryginalny opis (angielski, źródło NVD)
@neo4j/graphql library versions prior to 7.5.6 fail to verify the authenticity of a client-supplied, pre-decoded JWT object passed through GraphQL subscription connectionParams. As a result, any unauthenticated remote client that can open a GraphQL-over-WebSocket connection can forge arbitrary JWT claims (e.g. sub, roles) in connectionParams.jwt and have them accepted as authenticated identity for the purposes of @authentication and @subscriptionsAuthorization directive evaluation. This allows a fully unauthenticated attacker to receive subscription events that should be restricted to specific authenticated roles/users. Upgrade the library to versions 7.5.6+ or 5.12.14+. v6 is end-of-life and will not receive a fix.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

