<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:webfeeds="http://webfeeds.org/rss/1.0"><channel><title>Sift (17.1.3) - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/sift-17.1.3/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Fri, 04 Sep 2026 15:28:18 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/sift-17.1.3/feed.xml" rel="self" type="application/rss+xml"/><image><url>https://feed.craftedsignal.io/favicon-32x32.png</url><title>CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/</link><width>32</width><height>32</height></image><webfeeds:icon>https://feed.craftedsignal.io/favicon.svg</webfeeds:icon><item><title>Arbitrary Code Execution in sift.js via Prototype Pollution and $where Operator</title><link>https://feed.craftedsignal.io/briefs/2026-09-sift-js-prototype-pollution/</link><pubDate>Fri, 04 Sep 2026 15:28:18 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-09-sift-js-prototype-pollution/</guid><description>The sift.js library version 17.1.3 is vulnerable to arbitrary code execution when processing untrusted input that leverages prototype pollution or malicious $where operator strings to invoke the new Function constructor.</description><content:encoded><![CDATA[<p>The sift.js library, specifically version 17.1.3, contains a high-severity vulnerability (CVE-2026-85625) due to the use of for...in loops for query key enumeration. By iterating over the object prototype chain, the library inadvertently dispatches matched operator keys, including the sensitive $where operator. Under the default configuration, where CSP_ENABLED is not set, sift utilizes the new Function constructor to execute the string value associated with the $where operator. This allows an attacker who can either perform prototype pollution - injecting a $where property into Object.prototype - or pass a crafted query object containing a malicious $where string, to achieve arbitrary JavaScript execution within the host process. This vulnerability poses a significant risk to Node.js applications that utilize sift.js to filter untrusted user input, as the execution occurs within the context of the running application.</p>
<h2 id="impact">Impact</h2>
<p>Successful exploitation allows unauthenticated remote attackers to execute arbitrary JavaScript code on the server hosting the affected application. This can lead to full application compromise, unauthorized access to data, and further lateral movement within the environment. Given the widespread use of data filtering libraries in web frameworks, this vulnerability affects any sector utilizing sift.js for query processing without explicit security hardening.</p>
<h2 id="recommendation">Recommendation</h2>
<ol>
<li>Upgrade sift.js to a version where prototype chain walking is prevented or the $where operator is disabled by default.</li>
<li>Implement strict input validation for all query objects passed to the sift library to ensure they do not contain unexpected operator keys.</li>
<li>If version upgrading is not immediately possible, explicitly set the CSP_ENABLED configuration to true or define an environment-based mitigation to disable dangerous evaluation patterns in sift.js.</li>
</ol>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>vulnerability</category><category>code-execution</category><category>prototype-pollution</category><category>javascript</category><category>cve-2026-85625</category></item></channel></rss>