CyberSecBulletin
CVE-2026-92948NVD status: Deferred

vm2: Protection Mechanism Failure

CVE-2026-92948 is a critical-severity protection mechanism failure vulnerability in vm2 from Patriksimek, with a CVSS 3.1 base score of 9.9 out of 10. It can be exploited remotely over the network by an attacker with a low-privileged account, without any action from a user. The record lists version 3.11.7 as the first without the flaw, so updating vm2 to that release or later removes the exposure. There is no confirmed exploitation so far. EPSS estimates a 0.65% chance of exploitation within 30 days, higher than 52% of scored CVEs.

Patch this week

Critical severity: a successful attack would have severe impact.

What to do

  1. Update vm2 to 3.11.7 or a later version.
  2. Read the advisory on github.com for workarounds and exact fixed builds.

Affected products and versions

VendorProductAffected versionsFixed in
Patriksimekvm23.9.6 up to, but not including, 3.11.73.11.7

Version data comes from the organisation that assigned the CVE. Confirm against the vendor advisory before deciding you are unaffected.

How the severity score breaks down

Attack vector
NetworkCan be exploited remotely over a network, including the internet.
Attack complexity
LowNo special conditions are needed; the attack works reliably.
Privileges required
LowA basic user account is enough.
User interaction
NoneNo action by a victim is required.
Scope
ChangedThe attack can reach beyond the vulnerable component into other systems.
Confidentiality
HighAll data handled by the component can be read.
Integrity
HighData or code can be modified at will.
Availability
HighThe component can be taken down completely.

Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H. Scored by CNA (vulncheck.com).

Scoring systemScoreSeverityScored by
CVSS 4.09.4CriticalCNA (vulncheck.com)
CVSS 3.19.9CriticalCNA (vulncheck.com)

Official description

vm2 versions >= 3.9.6 and <= 3.11.6 are affected by a NodeVM builtin allowlist bypass that permits a sandbox escape on Node.js 24 and newer when the embedder explicitly allows the node:test builtin (e.g. require: { builtin: ['node:test'] }). On Node.js 24+, module.builtinModules exposes the scheme-only key node:test, which is not covered by vm2's family-based DANGEROUS_BUILTINS protection, so it is stored in the generic host-passthrough loader. Because requireImpl() in lib/setup-node-sandbox.js strips a single 'node:' prefix before the builtin lookup, sandbox code calling require('node:node:test') resolves to the stored node:test key and receives a readonly proxy to the host module. Calls to node:test.run() are forwarded to the host implementation, which spawns a separate Node process for process-isolated test execution and passes through attacker-controlled execArgv values; supplying --eval=<JavaScript> therefore executes arbitrary JavaScript in an unrestricted host Node process outside the NodeVM sandbox. Fixed in vm2 3.11.7.

Source: the CVE record as published by its numbering authority, via NVD and CVE.org.

The underlying weakness: Protection Mechanism Failure

The product does not use or incorrectly uses a protection mechanism that provides sufficient defense against directed attacks against the product.

More Protection Mechanism Failure vulnerabilities (CWE-693)

Timeline

  1. CVE record published.
  2. CISA published its SSVC assessment (exploitation: poc, automatable: no, technical impact: total).
  3. Record last changed materially (score, affected products, status or references).

References

Other vulnerabilities in vm2

All vm2 vulnerabilities

Recent Protection Mechanism Failure vulnerabilities

Spotted an error? Tell us.