CVE-2026-92941: vm2 NodeVM can replace the host process TLS trust store
Summary
vm2 3.11.6 exposes the host tls module to a NodeVM when that builtin is explicitly allowed. Although the module object is wrapped as read-only, its functions still execute against process-wide host state. On Node.js versions that provide tls.setDefaultCACertificates(), sandbox code can replace the certificate authorities trusted by subsequent host-realm TLS clients.
The exploit needs only the narrowly allowed tls and url builtins. It does not require fs, process, module, child_process, an external package, or a general '*' builtin grant. A host HTTPS request rejected an attacker certificate before sandbox execution, then accepted the same certificate and returned an application marker after the sandbox replaced the default CA list.
This crosses the intended sandbox boundary. An attacker can make host HTTPS clients trust an attacker-controlled CA, enabling credential theft and response tampering when the attacker can influence a subsequent destination or network path. Replacing the list also removes the normal trust roots, disrupting unrelated host TLS traffic.
References
- github.com/advisories/GHSA-98xx-8mx4-x7cm
- github.com/patriksimek/vm2/commit/aa146a77f859325e079f3bfbfe6d8309af483daa
- github.com/patriksimek/vm2/releases/tag/v3.11.7
- github.com/patriksimek/vm2/security/advisories/GHSA-98xx-8mx4-x7cm
- nvd.nist.gov/vuln/detail/CVE-2026-92941
- www.vulncheck.com/advisories/vm2-3.11.3-before-3.11.7-tls-trust-store-manipulation
Code Behaviors & Features
Detect and mitigate CVE-2026-92941 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →