CyberSecBulletin
CVE-2026-92938NVD status: Deferred

vm2: Protection Mechanism Failure

CVE-2026-92938 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.62% chance of exploitation within 30 days, higher than 50% 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.11.3 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.11.3 through 3.11.6 expose Node.js's host node:sqlite module to code running in NodeVM when that builtin is permitted, either explicitly or through builtin: ['*']. The module is wrapped with vm.readonly(), which prevents property assignment but leaves host-authority callables reachable; in addition, the resolver treats any request starting with 'node:' as a core-module request and the runtime strips only one 'node:' prefix, so a sandbox request for 'node:node:sqlite' resolves to the configured node:sqlite entry. Sandboxed code can therefore create an in-memory DatabaseSync with extension loading enabled and call DatabaseSync.loadExtension() on a native library bundled in the untrusted plugin package (path derived from __dirname). SQLite loads the library into the Node.js host process and invokes its native entry point, giving the sandboxed plugin arbitrary native code execution outside the sandbox with the host process's privileges. The issue is 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.