Katalog CVE

CVE-2026-85625

WysokieCVSS 8.1
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.55%

Percentyl 44 - wyżej niż 44% wszystkich znanych CVE

Streszczenie

sift (sift.js) 17.1.3 wylicza klucze zapytań za pomocą pętli for...in, która przechodzi po łańcuchu prototypów, i obsługuje każdy pasujący klucz operatora, w tym $where. Operacja $where kompiluje wartość string do funkcji za pomocą new Function, chyba że ustawiono CSP_ENABLED (domyślnie nie). W rezultacie, jeśli prymityw zanieczyszczenia prototypu w innym miejscu procesu ustawi Object.prototype.$where na złośliwy string, nawet nieszkodliwe wywołania filtrów, takie jak sift({}), wykonają dowolny kod JavaScript. Dodatkowo, przekazanie niezaufanego obiektu zapytania zawierającego string $where bezpośrednio do sift skutkuje wykonaniem kodu w domyślnej konfiguracji.

Ocena ryzyka

Ryzyko obejmuje zdalne wykonanie kodu w kontekście aplikacji, co może prowadzić do pełnego przejęcia systemu lub kradzieży danych, szczególnie jeśli aplikacja przetwarza niezaufane dane wejściowe.

Rekomendacja

Zaleca się aktualizację sift.js do wersji, która zawiera poprawkę, oraz unikanie przekazywania niezaufanych obiektów zapytań do funkcji sift.

Powiązane podatności

Oryginalny opis (angielski, źródło NVD)

sift (sift.js) 17.1.3 enumerates query keys with for...in, which walks the object prototype chain, and dispatches any matched operator key including $where. The $where operation compiles a string value into a function using new Function unless CSP_ENABLED is set (not set by default). As a result, if a prototype-pollution primitive elsewhere in the process sets Object.prototype.$where to a malicious string, even benign filter calls such as sift({}) execute arbitrary JavaScript. Additionally, passing an untrusted query object containing a string $where directly to sift results in code execution under the default configuration.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS