<?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 (&lt;= 3.10.3) — CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/vm2--3.10.3/</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>Wed, 06 May 2026 12:00:00 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/vm2--3.10.3/feed.xml" rel="self" type="application/rss+xml"/><item><title>VM2 Sandbox Escape via Promise Species Manipulation</title><link>https://feed.craftedsignal.io/briefs/2026-05-vm2-sandbox-escape/</link><pubDate>Wed, 06 May 2026 12:00:00 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-05-vm2-sandbox-escape/</guid><description>A vulnerability in vm2 versions 3.10.3 and earlier allows attackers to bypass a previous sandbox escape fix by manipulating Promise species, leading to arbitrary code execution on the host system.</description><content:encoded><![CDATA[<p>A critical vulnerability exists within the vm2 npm package, specifically in versions 3.10.3 and earlier. This vulnerability stems from an insufficient fix for a prior sandbox escape issue (GHSA-cchq-frgv-rjh5). Attackers can bypass the intended security measures by manipulating the <code>species</code> property of Promise objects. The flaw lies in the ability to overwrite native JavaScript functions like <code>[].includes</code> and <code>Object.defineProperty</code>, which are used in the <code>resetPromiseSpecies</code> function. By preventing the proper resetting of the Promise species, attackers can achieve arbitrary code execution on the host system, effectively breaking out of the vm2 sandbox. This vulnerability was reported in GHSA-qvjj-29qf-hp7p, published May 5, 2026.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>The attacker provides JavaScript code to be executed within the vm2 sandbox.</li>
<li>The code redefines <code>Object.defineProperty</code> to prevent modification of the <code>species</code> property.</li>
<li>The code defines an asynchronous function that returns an Error object with a Symbol as its name.</li>
<li>The <code>constructor</code> of the Promise is overwritten with a custom class that defines a specific <code>Symbol.species</code>.</li>
<li>The custom <code>Symbol.species</code> utilizes an executor that calls the reject function.</li>
<li>The reject function executes arbitrary code on the host system via <code>child_process.execSync</code>.</li>
<li>The attacker triggers the Promise&rsquo;s <code>then()</code> method.</li>
<li>The host system executes arbitrary commands, such as creating a file named &ldquo;pwned&rdquo;.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of this vulnerability allows attackers to perform Remote Code Execution (RCE) on the host system. Given the nature of vm2 as a sandbox environment for running untrusted code, this vulnerability represents a significant security risk. If an attacker can run arbitrary code inside the context of a vm2 sandbox, they can leverage this vulnerability to compromise the underlying host system, potentially leading to data theft, system takeover, or other malicious activities.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade to a patched version of the <code>vm2</code> package that addresses CVE-2026-24120.</li>
<li>Deploy the provided Sigma rule detecting attempts to redefine <code>Object.defineProperty</code> within the vm2 environment to your SIEM.</li>
<li>Monitor for unexpected process creation events originating from the vm2 process using the provided Sigma rule.</li>
</ul>
]]></content:encoded><category domain="severity">critical</category><category domain="type">advisory</category><category>sandbox-escape</category><category>rce</category><category>javascript</category></item><item><title>VM2 Sandbox Breakout via Inspect Function Allows Remote Code Execution</title><link>https://feed.craftedsignal.io/briefs/2026-05-vm2-sandbox-breakout/</link><pubDate>Wed, 06 May 2026 12:00:00 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-05-vm2-sandbox-breakout/</guid><description>A sandbox breakout vulnerability exists in VM2 through the `inspect` function, allowing attackers to escape the sandbox and execute arbitrary commands on the host system.</description><content:encoded><![CDATA[<p>A critical sandbox escape vulnerability has been identified in VM2, a popular JavaScript sandbox environment for Node.js. This vulnerability, assigned CVE-2026-24781, stems from the improper handling of proxies within the <code>inspect</code> function. By exploiting this flaw, an attacker can bypass the VM2 sandbox and execute arbitrary code on the host system. The vulnerability affects VM2 versions 3.10.3 and earlier. This allows for remote code execution under the assumption that arbitrary code can be executed inside the context of a VM2 sandbox. Defenders should update to the latest version and implement the provided detections.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>The attacker executes code within the VM2 sandbox, leveraging the <code>inspect</code> function to log details of objects.</li>
<li>The <code>inspect</code> method unwraps proxies to access object details.</li>
<li>The attacker uses <code>this.seen</code> of the <code>stylize</code> function to extract unwrapped values, gaining access to the internal proxy handler of VM2.</li>
<li>The attacker accesses the sandbox object within the proxy handler. Accessing the handler is wrapped by a VM2 proxy.</li>
<li>The wrapped sandbox object is given into the sandbox.</li>
<li>The attacker writes a wrapped host object to the wrapped sandbox object.</li>
<li>The attacker reads the raw host object from the raw sandbox object, bypassing the proxy bridge.</li>
<li>The attacker utilizes the <code>child_process</code> module to execute arbitrary commands on the host system, such as creating a file named <code>pwned</code>.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of this vulnerability allows attackers to perform Remote Code Execution (RCE) on the host system where the VM2 sandbox is running. This can lead to complete system compromise, data exfiltration, or denial of service. Given VM2&rsquo;s usage in various applications for untrusted code execution, the impact could be widespread.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade to the latest version of <code>vm2</code> to patch CVE-2026-24781.</li>
<li>Deploy the Sigma rules provided below to detect potential exploitation attempts.</li>
<li>Monitor process creation events for suspicious commands executed by Node.js processes as highlighted in the attack chain.</li>
</ul>
]]></content:encoded><category domain="severity">critical</category><category domain="type">advisory</category><category>sandbox-escape</category><category>rce</category><category>vm2</category></item></channel></rss>