Description
vm2 through 3.12.0 exposes Node.js's crypto.setFips() function to untrusted guest code when an embedder explicitly allowlists the crypto builtin for a NodeVM (require.builtin: ['crypto']). The builtin sanitizer (sanitizeCryptoModule in lib/builtin.js) replaces crypto.setEngine but leaves crypto.setFips callable, and the readonly wrapper used to expose the host module does not localize side effects of forwarded host functions. Guest code can therefore call crypto.setFips() to change the FIPS mode of the entire host process; the modified mode is subsequently observed by trusted host code (crypto.getFips() changed from 0 to 1 in the reported test), crossing the NodeVM isolation boundary. Fixed in vm2 3.12.1.
Published: 2026-09-18
Score: 6.9 Medium
EPSS: n/a
KEV: No
Impact: Sandbox escape via FIPS mode alteration
Action: Immediate Patch
AI Analysis

Impact

vm2 up to version 3.12.0 incorrectly exposes the Node.js crypto.setFips function to untrusted guest code when the embedder allows the crypto builtin. The sandbox sanitizer replaces crypto.setEngine but leaves crypto.setFips callable, and the readonly wrapper does not isolate side effects, so guest code can alter the host process’s FIPS mode. This cross‑boundary change of a global cryptographic setting constitutes a sandbox escape that can break isolation guarantees.

Affected Systems

Affected systems include the vm2 library from the VM2 project, specifically all releases prior to 3.12.1 such as 3.11.8 and earlier up to 3.12.0. The vulnerability exists when a NodeVM is configured with require.builtin:['crypto'] and is not mitigated by any in‑package guard. Deployments that use vm2 for untrusted code execution are at risk.

Risk and Exploitability

The CVSS score of 6.9 rates this as medium severity. No EPSS data is available, and the vulnerability is not listed in the CISA KEV catalog. Attackers who can inject code into the guest environment could exploit the exposed crypto.setFips to change the host's cryptography configuration; the exploit requires local or sandbox‑based code execution within the VM, but the impact crosses the isolation boundary, making it a significant risk for applications that rely on vm2 for secure isolation.

Generated by OpenCVE AI on September 18, 2026 at 22:12 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade vm2 to version 3.12.1 or later.
  • If upgrade is not possible, remove 'crypto' from the allowlist in the NodeVM configuration to prevent the guest from accessing the module.
  • Audit the host environment to detect unexpected changes to crypto.getFips or revoke the permission if detected.

Generated by OpenCVE AI on September 18, 2026 at 22:12 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sat, 19 Sep 2026 00:45:00 +0000

Type Values Removed Values Added
First Time appeared Patriksimek
Patriksimek vm2
Vendors & Products Patriksimek
Patriksimek vm2

Fri, 18 Sep 2026 16:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Fri, 18 Sep 2026 13:30:00 +0000

Type Values Removed Values Added
Description vm2 through 3.12.0 exposes Node.js's crypto.setFips() function to untrusted guest code when an embedder explicitly allowlists the crypto builtin for a NodeVM (require.builtin: ['crypto']). The builtin sanitizer (sanitizeCryptoModule in lib/builtin.js) replaces crypto.setEngine but leaves crypto.setFips callable, and the readonly wrapper used to expose the host module does not localize side effects of forwarded host functions. Guest code can therefore call crypto.setFips() to change the FIPS mode of the entire host process; the modified mode is subsequently observed by trusted host code (crypto.getFips() changed from 0 to 1 in the reported test), crossing the NodeVM isolation boundary. Fixed in vm2 3.12.1.
Title vm2 3.11.8 Sandbox Escape via crypto.setFips
First Time appeared Vm2 Project
Vm2 Project vm2
Weaknesses CWE-284
CPEs cpe:2.3:a:vm2_project:vm2:*:*:*:*:*:node.js:*:*
Vendors & Products Vm2 Project
Vm2 Project vm2
References
Metrics cvssV3_1

{'score': 7.2, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:L/A:L'}

cvssV4_0

{'score': 6.9, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:L/SC:N/SI:L/SA:L'}


cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-09-18T13:55:28.976Z

Reserved: 2026-09-18T11:00:32.756Z

Link: CVE-2026-93604

cve-icon Vulnrichment

Updated: 2026-09-18T13:55:13.575Z

cve-icon NVD

Status : Deferred

Published: 2026-09-18T14:19:12.167

Modified: 2026-09-18T14:19:12.287

Link: CVE-2026-93604

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-19T00:30:16Z

Weaknesses