Skip to main content
← All vulnerabilities
CVE-2026-85625

sift 17.1.3 Prototype Pollution Remote Code Execution via $where

Published
Last modified
published
Not listed in CISA KEV
1 proof of concept on GitHub
  • Exploitation: none
  • Automatable: no
  • Technical impact: total

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.

Timeline

  1. CVE published
  2. CISA SSVC assessment

    Exploitation: none · Automatable: no · Technical impact: total

  3. Record last updated

Affected versions

  • crcn sift.js

    through 17.1.3

References 5

GitHub · crcn/sift.js

vulncheck.com

GitHub · lgranadoi/sift-hardened