CVE Catalog

CVE-2026-85625

HighCVSS 8.1
Published: Updated: Translated: NVD NIST

Exploitation Probability (EPSS)

Low risk
0.55%

44th percentile - higher than 44% of all known CVEs

Summary

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.

Risk Assessment

The risk includes remote code execution in the application context, potentially leading to full system compromise or data theft, especially if the application processes untrusted input.

Recommendation

It is recommended to upgrade sift.js to a version that includes the fix, and to avoid passing untrusted query objects to the sift function.

Related vulnerabilities

Original NVD description (English source)

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.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS