Skip to main content
Live Webinar with SANS (June 25)— Agentic CTI Automation for Fun & ProfitRegister Free
Mallory
CriticalPublic exploit

vm2 NodeVM builtin allowlist bypass via Module._load()

IdentifiersCVE-2026-43999CWE-863· Incorrect Authorization

CVE-2026-43999 is a sandbox escape vulnerability in vm2, the Node.js sandbox library. In vm2 versions prior to 3.11.0, NodeVM's builtin allowlist can be bypassed when the module builtin is permitted, including configurations that allow it implicitly via the '*' wildcard. The issue arises because the module builtin exposes Node's Module._load(), which can load arbitrary modules by name directly in the host context. As a result, sandboxed code can bypass vm2's builtin restriction mechanism and import otherwise excluded built-in modules such as child_process, leading to execution of attacker-controlled code outside the intended sandbox boundary.

Share:
For your environment

Are you exposed to this one?

Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.

ANALYST BRIEF

Impact, mitigation & remediation

What it means. What to do now. Patch path, mitigations, and the assume-compromise checklist.

Impact

What an attacker gets, and what they’ve been doing with it.

Successful exploitation breaks the intended isolation boundary of vm2's NodeVM and enables sandboxed, attacker-controlled JavaScript to access restricted built-in modules from the host environment. In practice, this can lead to remote code execution on the host, arbitrary operating system command execution through modules such as child_process, and full compromise of confidentiality, integrity, and availability for the affected host process and potentially the underlying system.

Mitigation

If you can’t patch tonight, do this now.

If immediate patching is not possible, avoid allowing the module builtin in NodeVM configurations and do not use the '*' wildcard for builtins. Restrict execution of untrusted code in vm2 instances that expose builtins capable of reaching host module-loading functionality. Because this issue undermines JavaScript-level sandbox isolation, consider stronger isolation boundaries for untrusted code execution, such as containers or microVM-based isolation, where feasible.

Remediation

Patch, then assume compromise.

Upgrade vm2 to version 3.11.0 or later, which fixes this builtin allowlist bypass. Review NodeVM configurations to ensure they do not rely on permitting the module builtin unless absolutely necessary, and validate that no insecure wildcard builtin policy remains in place after upgrade.
PUBLIC EXPLOITS

Exploits

No public exploits tracked yet. Mallory keeps watching.

VALID 0 / 0 TOTALView more in app

No public exploit code observed for this vulnerability.

EXPOSURE SURFACE

Affected products & vendors

Products and vendors Mallory has correlated with this vulnerability. Open in Mallory to drill down to specific CPE configurations and version ranges.

VendorProductType
Vm2 ProjectVm2application

Vendor-confirmed product mapping. Mallory continuously reconciles this list against your asset inventory.

What this page doesn’t show

The version that knows your environment.

This page is what’s public. Mallory adds the parts that aren’t: which of your assets are affected, which adversaries are exploiting it right now, which detections to deploy, and what to do tonight.
Exposure mapping

Query your assets running an affected version, and investigate the blast radius.

Threat actor evidence

Every observed campaign linking this CVE to a named adversary.

Associated malware

Malware families riding this exploit, with evidence and IOCs.

Detection signatures

YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.

Vendor-by-vendor mapping

Cross-references every affected SKU, including bundled OEM variants.

Social activity2

Community discussion across Reddit, Mastodon, and other social sources.