Biblioteka @neo4j/graphql w wersjach przed 7.5.6 nie weryfikuje autentyczności obiektu JWT dostarczonego przez klienta w parametrach połączenia WebSocket. Nieuprawniony atakujący może sfałszować dowolne twierdzenia JWT i uzyskać dostęp do zdarzeń subskrypcji zarezerwowanych wyłącznie dla uwierzytelnionych użytkowników lub ról.
▸ Pokaż oryginał (EN)
@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.
Biblioteka akceptuje wstępnie zdekodowany obiekt JWT przekazany przez klienta w polu connectionParams.jwt podczas nawiązywania połączenia GraphQL-over-WebSocket, nie sprawdzając jego podpisu ani autentyczności. Atakujący może zatem samodzielnie skonstruować obiekt JSON z dowolnymi polami (np. sub, roles) i podać go jako connectionParams.jwt. Biblioteka traktuje tak dostarczony obiekt jak poprawnie uwierzytelnioną tożsamość przy ocenie dyrektyw @authentication i @subscriptionsAuthorization. Luka klasyfikowana jest jako CWE-302 (Authentication Bypass by Assumed-Immutable Data), gdyż system ufa danym dostarczanym przez klienta bez niezależnej weryfikacji.
W pełni nieuwierzytelniony, zdalny atakujący może otrzymywać zdarzenia subskrypcji GraphQL, które powinny być dostępne wyłącznie dla określonych ról lub konkretnych użytkowników, prowadząc do nieuprawnionego ujawnienia poufnych danych.
Należy zaktualizować bibliotekę @neo4j/graphql do wersji 7.5.6 lub nowszej (gałąź v7) albo do wersji 5.12.14 lub nowszej (gałąź v5). Użytkownicy gałęzi v6 powinni jak najszybciej przeprowadzić migrację do wspieranej gałęzi, ponieważ v6 osiągnęła status end-of-life i nie otrzyma łatki bezpieczeństwa.
Biblioteka @neo4j/graphql w wersjach przed 7.5.6 (gałąź v7) oraz przed 5.12.14 (gałąź v5). Gałąź v6 osiągnęła status end-of-life i nie otrzyma poprawki.
Gałąź v6 biblioteki @neo4j/graphql osiągnęła status end-of-life i nie otrzyma poprawki dla tej podatności — użytkownicy tej wersji powinni pilnie przeprowadzić migrację.
CVSS:4.0/AV:N/AC:L/AT:P/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