<?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/"><channel><title>CVE-2026-47137 — CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/tags/cve-2026-47137/</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, 29 May 2026 17:52:09 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/tags/cve-2026-47137/feed.xml" rel="self" type="application/rss+xml"/><item><title>vm2 CVE-2023-37903 Patch Bypass: Remote Code Execution</title><link>https://feed.craftedsignal.io/briefs/2026-05-vm2-rce-bypass/</link><pubDate>Fri, 29 May 2026 17:52:09 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-05-vm2-rce-bypass/</guid><description>The vm2 npm package has a remote code execution vulnerability due to a patch bypass for CVE-2023-37903; the vulnerability occurs because the check for `nesting: true` and `require: false` in `nodevm.js` uses strict equality, which can be bypassed by omitting the `require` option entirely, allowing an attacker to execute arbitrary OS commands.</description><content:encoded><![CDATA[<p>The vm2 npm package, a sandboxing solution for Node.js, is vulnerable to a remote code execution (RCE) bypass of the CVE-2023-37903 patch. This bypass occurs because the check implemented to prevent the combination of <code>nesting: true</code> and <code>require: false</code> uses strict equality (<code>===</code>). By simply omitting the <code>require</code> option when instantiating a <code>NodeVM</code>, the check is bypassed, as <code>options.require</code> becomes <code>undefined</code>, not <code>false</code>. This oversight allows an attacker to bypass the intended security restrictions and execute arbitrary code on the host system. This vulnerability affects vm2 versions 3.11.3 and earlier and poses a significant risk to applications relying on vm2 for sandboxing untrusted code.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An attacker injects malicious JavaScript code into a <code>NodeVM</code> instance configured with <code>nesting: true</code> but without explicitly setting the <code>require</code> option.</li>
<li>The initial security check in <code>nodevm.js</code> at line 263 fails because <code>options.require</code> is <code>undefined</code> instead of <code>false</code>, thus bypassing the intended restriction.</li>
<li>The code inside the <code>NodeVM</code> then uses <code>require('vm2')</code> to gain access to the vm2 library itself.</li>
<li>The injected code constructs a new, nested <code>NodeVM</code> instance, this time explicitly enabling the <code>child_process</code> module via <code>require: { builtin: ['child_process'] }</code>.</li>
<li>The nested <code>NodeVM</code> instance is then used to execute arbitrary operating system commands using <code>child_process.execSync()</code>.</li>
<li>The output of the command is converted to a string.</li>
<li>The string is returned as the result of the initial <code>nvm.run()</code> call, demonstrating successful command execution on the host.</li>
<li>The attacker achieves full remote code execution on the host system.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of this vulnerability allows an attacker to execute arbitrary commands on the host system. In a multi-tenant environment or any situation where vm2 is used to sandbox untrusted code, this can lead to complete system compromise. The attacker can gain access to sensitive data, install malware, or pivot to other systems on the network. The observed damage is full RCE.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade to a patched version of vm2 that addresses this vulnerability.</li>
<li>Apply the suggested fix to <code>nodevm.js</code> locally if an immediate upgrade is not possible: Change the check to <code>if (options.nesting === true &amp;&amp; !options.require)</code> as documented in the advisory.</li>
<li>Deploy the Sigma rules provided to detect attempts to exploit this vulnerability, focusing on <code>process_creation</code> events originating from within vm2 sandboxes.</li>
<li>Monitor for unusual <code>require()</code> calls within vm2 sandboxes, especially those attempting to load the <code>child_process</code> module.</li>
</ul>
]]></content:encoded><category domain="severity">critical</category><category domain="type">advisory</category><category>vm2</category><category>rce</category><category>sandbox-escape</category><category>CVE-2026-47137</category></item></channel></rss>