<?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>Vm2 — CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/vendors/vm2/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata — refreshed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Tue, 05 May 2026 16:44:16 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/vendors/vm2/feed.xml" rel="self" type="application/rss+xml"/><item><title>VM2 Sandbox Escape Vulnerability (CVE-2026-26956)</title><link>https://feed.craftedsignal.io/briefs/2024-01-03-vm2-sandbox-escape/</link><pubDate>Tue, 05 May 2026 16:44:16 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2024-01-03-vm2-sandbox-escape/</guid><description>A critical vulnerability, CVE-2026-26956, exists in vm2 version 3.10.4 when running on Node.js v25.6.1 (x64 Linux), allowing a full sandbox escape with arbitrary code execution through attacker-controlled code passed to `VM.run()`.</description><content:encoded><![CDATA[<p>A critical vulnerability, CVE-2026-26956, has been identified in vm2 version 3.10.4 when used with Node.js v25.6.1 (x64 Linux). This vulnerability allows for a complete sandbox escape, granting attackers the ability to execute arbitrary code on the host system. The attack is triggered by supplying malicious code to the <code>VM.run()</code> function. This vulnerability bypasses vm2&rsquo;s intended security mechanisms, exploiting weaknesses in WebAssembly exception handling and JSTag support within the Node.js environment. The root cause lies in the insufficient sanitization of TypeError exceptions originating from Symbol-to-string coercion during stack formatting within WebAssembly&rsquo;s <code>try_table</code> instruction. This flaw allows attacker code to gain access to the host process object and execute system commands without any cooperation from the host environment.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker crafts malicious JavaScript code containing a WebAssembly module.</li>
<li>The attacker&rsquo;s code is passed as an argument to the <code>VM.run()</code> function within the vm2 sandbox.</li>
<li>The WebAssembly module is instantiated, containing a function that triggers a TypeError by attempting Symbol-to-string coercion during stack formatting (e.g., <code>e.name = Symbol(); e.stack</code>).</li>
<li>The <code>try_table</code> instruction in WebAssembly catches the JavaScript exception at the V8 C++ level as an opaque <code>externref</code>.</li>
<li>This exception is improperly sanitized by vm2 and returned to the attacker&rsquo;s code as a function return value.</li>
<li>The attacker leverages the unsanitized TypeError object to access its constructor chain (<code>hostError.constructor.constructor</code>).</li>
<li>The constructor chain resolves to a Function object that, when called, returns the host process object.</li>
<li>The attacker uses the host process object to require modules like <code>child_process</code> and <code>console</code>, enabling arbitrary code execution on the host system.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of this vulnerability allows an attacker to completely bypass the vm2 sandbox and execute arbitrary code on the host system with the privileges of the Node.js process. This can lead to complete system compromise, data exfiltration, and other malicious activities. Given the criticality of many applications relying on sandboxed environments, this vulnerability poses a significant risk to affected systems. Observed successful exploitation allowed for privilege escalation to root.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade to a patched version of vm2 that addresses CVE-2026-26956 if available from the vendor.</li>
<li>As a temporary mitigation, consider disabling WebAssembly exception handling or JSTag support in Node.js v25.6.1.</li>
<li>Monitor process creation events for suspicious child processes spawned from Node.js processes, as detected by the rule &ldquo;Detect Suspicious Node.js Child Processes&rdquo;.</li>
<li>Deploy the Sigma rule &ldquo;Detect WebAssembly with JSTag&rdquo; to identify the use of WebAssembly with JSTag functionality, which is a prerequisite for exploiting this vulnerability.</li>
</ul>
]]></content:encoded><category domain="severity">critical</category><category domain="type">advisory</category><category>sandbox-escape</category><category>wasm</category><category>vm2</category><category>javascript</category></item></channel></rss>