Parse Server jest podatny na atak typu denial of service polegający na blokowaniu pętli zdarzeń Node.js poprzez spreparowane zapytania REST API lub LiveQuery zawierające głęboko zagnieżdżone operatory $or, $and i $nor. Podatność nie wymaga uwierzytelnienia, co czyni ją szczególnie niebezpieczną dla publicznie dostępnych instancji.
▸ 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.9.1-alpha.12 and 8.6.82, deeply nested $or, $and, and $nor query condition operators in the REST API or LiveQuery query handling could trigger exponential-time processing in the internal query-traversal helper and block the Node.js event loop. This issue is fixed in versions 9.9.1-alpha.12 and 8.6.82.
Atakujący wysyła zapytanie zawierające wielokrotnie zagnieżdżone operatory logiczne ($or, $and, $nor) do interfejsu REST API lub mechanizmu LiveQuery serwera. Wewnętrzna funkcja pomocnicza odpowiedzialna za przetwarzanie zapytań (query-traversal helper) przetwarza takie struktury w czasie wykładniczym (CWE-407 — algorytmiczna złożoność nieefektywna). Powoduje to zajęcie pojedynczego wątku Node.js na długi czas, co blokuje pętlę zdarzeń i uniemożliwia obsługę innych żądań.
Atakujący bez żadnego uwierzytelnienia może spowodować całkowite zablokowanie instancji Parse Server, prowadząc do niedostępności usługi (Denial of Service) dla wszystkich użytkowników. Wpływ dotyczy wyłącznie dostępności — poufność i integralność danych nie są zagrożone.
Należy zaktualizować Parse Server do wersji 9.9.1-alpha.12 lub nowszej (gałąź 9.x) albo do wersji 8.6.82 lub nowszej (gałąź 8.x). Patche dostępne są w referencjach producenta na GitHub: PR #10511 i PR #10512.
Parse Server w wersjach wcześniejszych niż 9.9.1-alpha.12 (gałąź 9.x) oraz wcześniejszych niż 8.6.82 (gałąź 8.x)
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/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