<?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>Vm2 (&lt; 3.12.2) - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/vm2--3.12.2/</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>Sun, 27 Sep 2026 05:03:42 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/vm2--3.12.2/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>Sandbox Escape in vm2 via NodeVM Module Resolver</title><link>https://feed.craftedsignal.io/briefs/2026-09-vm2-sandbox-escape/</link><pubDate>Sun, 27 Sep 2026 05:03:42 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-09-vm2-sandbox-escape/</guid><description>CVE-2026-100721 is a sandbox escape vulnerability in vm2 versions before 3.12.2, allowing untrusted guest code to execute arbitrary code in the host context via an authorization bypass in the external-module resolver.</description><content:encoded><![CDATA[<p>CVE-2026-100721 identifies a critical sandbox escape vulnerability in the vm2 library (versions prior to 3.12.2). The vulnerability resides in the <code>NodeVM</code> external-module resolver when configured with a custom resolver and <code>context: 'host'</code>. The <code>LegacyResolver.customResolve</code> function in <code>lib/resolver-compat.js</code> improperly validates module paths by creating a regular expression that lacks path separators or end-of-string boundaries.</p>
<p>This flaw allows an attacker to bypass security restrictions by providing a path that shares a prefix with an allowlisted module. For example, if 'foo' is allowlisted, an attacker can require a sibling module 'foo2' located in an absolute path that starts with the same prefix. The vulnerable resolver treats this as authorized, loading the non-allowlisted module into the host process. The top-level code of the malicious module executes before the guest exports are wrapped, enabling full host-context code execution. This is particularly dangerous for applications using vm2 to sandboxing untrusted scripts.</p>
<h2 id="impact">Impact</h2>
<p>Successful exploitation allows arbitrary code execution on the host machine hosting the Node.js application. This bypasses the intended security boundaries of the vm2 sandbox, potentially leading to full server compromise, data exfiltration, or lateral movement within the environment. Any application leveraging vm2 for processing user-supplied code is highly susceptible to this sandbox escape.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade the vm2 dependency to version 3.12.2 or higher to include the fix for the resolver path validation logic.</li>
<li>Audit applications currently utilizing the NodeVM 'context: host' configuration and a custom 'require.external' resolver to identify potential exposure.</li>
<li>Implement strict path sanitization or validation wrappers if immediate library updates are not feasible, though upgrading remains the primary defense.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>vm2</category><category>sandbox-escape</category><category>nodejs</category><category>code-execution</category><category>memory-corruption</category></item></channel></rss>