Parse Server zawiera podatność typu race condition (CWE-362) w wbudowanym adapterze OAuth2, która przy równoczesnych żądaniach uwierzytelnienia może spowodować walidację tokena jednego dostawcy OAuth2 przy użyciu konfiguracji innego dostawcy. Może to umożliwić atakującemu obejście mechanizmu uwierzytelnienia i uzyskanie nieautoryzowanego dostępu.
▸ Pokaż oryginał (EN)
Parse Server is an open source backend that can be deployed to any infrastructure that can run Node.js. Prior to 9.6.0-alpha.11 and 8.6.37, Parse Server's built-in OAuth2 auth adapter exports a singleton instance that is reused directly across all OAuth2 provider configurations. Under concurrent authentication requests for different OAuth2 providers, one provider's token validation may execute using another provider's configuration, potentially allowing a token that should be rejected by one provider to be accepted because it is validated against a different provider's policy. Deployments that configure multiple OAuth2 providers via the oauth2: true flag are affected. This vulnerability is fixed in 9.6.0-alpha.11 and 8.6.37.
Wbudowany adapter OAuth2 w Parse Server eksportuje pojedynczą instancję (singleton), która jest współdzielona przez wszystkie konfiguracje dostawców OAuth2. Gdy do serwera trafiają równocześnie żądania uwierzytelnienia dla różnych dostawców OAuth2, może dojść do sytuacji, w której walidacja tokena jednego dostawcy zostaje wykonana z użyciem konfiguracji (polityki) innego dostawcy. W efekcie token, który powinien zostać odrzucony przez właściwego dostawcę, może zostać błędnie zaakceptowany — ponieważ jest weryfikowany względem polityki innego dostawcy. Podatność dotyczy wyłącznie wdrożeń korzystających z wielu dostawców OAuth2 skonfigurowanych za pomocą flagi oauth2: true.
Atakujący może uzyskać nieautoryzowany dostęp do konta użytkownika lub zasobów chronionych przez Parse Server, posługując się tokenem OAuth2, który w normalnych warunkach zostałby odrzucony. Skutkuje to naruszeniem poufności i integralności danych.
Należy zaktualizować Parse Server do wersji 8.6.37 (gałąź stabilna) lub 9.6.0-alpha.11 (gałąź alpha). Patche dostępne są w referencjach producenta na GitHub. W przypadku braku możliwości natychmiastowej aktualizacji warto rozważyć ograniczenie liczby równoczesnych żądań uwierzytelnienia lub tymczasowe wyłączenie obsługi wielu dostawców OAuth2.
Parse Server (Parseplatform parse-server) w wersjach przed 8.6.37 oraz przed 9.6.0-alpha.11, przy czym podatność jest aktywna wyłącznie w konfiguracji z wieloma dostawcami OAuth2 (flaga oauth2: true).
Podatność dotyczy tylko instancji Parse Server skonfigurowanych z więcej niż jednym dostawcą OAuth2 za pomocą flagi oauth2: true. Wdrożenia z jednym dostawcą OAuth2 lub nieużywające OAuth2 nie są narażone.
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/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:XParseplatform Parse Server
APPParseplatform9.6.0< 8.6.379.0.0 – 9.6.0 (bez)
Powiązane podatności
Parse Server: obejście walidatorów Cloud Functions przez prototype chain
Parse Server — przejęcie konta przez manipulację zapytaniem (Auth Bypass)
SQL Injection w Parse Server (PostgreSQL) — operacje Increment na zagnieżdżonych polach
SQL Injection w Parse Server (PostgreSQL) — operacje Increment na polach zagnieżdżonych
SQL Injection w Parse Server poprzez dot-notation i parametr sort (PostgreSQL)