Description
vm2 before 3.12.2 does not apply its Buffer backing-store ownership invariant (byteOffset === 0 and buffer.byteLength === length) to Buffers returned from host builtin modules. When an application explicitly exposes Node's zlib module through NodeVM's builtin allowlist (require: { builtin: ['zlib'] }), zlib.deflateSync can return a Buffer backed by Node's shared small-buffer pool whose .buffer is the entire pool. Untrusted guest code can construct a full-width view of that ArrayBuffer (Buffer.from(result.buffer, 0, result.buffer.byteLength)) to read and modify bytes belonging to unrelated host buffers, disclosing and corrupting host-realm memory across the sandbox boundary.
Published: 2026-09-27
Score: 6.9 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Memory Disclosure across Sandbox
Action: Patch Now
AI Analysis

Impact

The vulnerability arises in vm2 prior to version 3.12.2 when the Buffer backing‑store ownership invariant is not enforced for Buffers returned from host built‑in modules. When an application permits Node's zlib module through the NodeVM allowlist, zlib.deflateSync can return a Buffer that is a slice of Node's shared small‑buffer pool. Untrusted guest code can then create a full‑width view of that underlying ArrayBuffer, enabling it to read and modify bytes that belong to unrelated host buffers. This exposes host‑realm memory across the sandbox boundary and can lead to memory disclosure and corruption. The weakness is classified as CWE‑200 and CWE‑653.

Affected Systems

Affected systems are Node.js applications that use the patriksimek vm2 package earlier than 3.12.2. The vulnerability is present in any environment where the application configures the NodeVM allowlist to include zlib, allowing guest code to invoke zlib.deflateSync and generate the vulnerable Buffer. No specific OS or OS version is required; the issue is in the JavaScript library itself.

Risk and Exploitability

The CVSS score of 6.9 indicates a medium severity. The EPSS score is 0.316%, indicating a very low but non-zero exploitation probability, and the vulnerability is not listed in the CISA KEV catalog. The attack requires an application that deliberately exposes zlib to guest code and for the guest to invoke deflateSync. While the vector is limited to those specific scenarios, the ability to read and corrupt the host memory poses a substantial risk, especially if sensitive data or critical application state resides in the affected buffers.

Generated by OpenCVE AI on September 30, 2026 at 05:11 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade the vm2 package to version 3.12.2 or later, which applies the Buffer backing‑store invariant to all returned Buffers.
  • Remove the zlib module from the NodeVM's builtin allowlist unless it is absolutely necessary, or replace it with a sandboxed version that does not expose the vulnerable Buffer.
  • If upgrading is temporarily infeasible, consider switching to a more restrictive sandbox implementation or disabling guest access to zlib entirely.

Generated by OpenCVE AI on September 30, 2026 at 05:11 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-489w-w794-jq94 vm2: NodeVM zlib Buffers expose pooled host memory across the VM boundary
History

Thu, 01 Oct 2026 19:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

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


Tue, 29 Sep 2026 13:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-653
References
Metrics threat_severity

None

threat_severity

Important


Sun, 27 Sep 2026 05:15:00 +0000

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

Sun, 27 Sep 2026 02:00:00 +0000

Type Values Removed Values Added
Description vm2 before 3.12.2 does not apply its Buffer backing-store ownership invariant (byteOffset === 0 and buffer.byteLength === length) to Buffers returned from host builtin modules. When an application explicitly exposes Node's zlib module through NodeVM's builtin allowlist (require: { builtin: ['zlib'] }), zlib.deflateSync can return a Buffer backed by Node's shared small-buffer pool whose .buffer is the entire pool. Untrusted guest code can construct a full-width view of that ArrayBuffer (Buffer.from(result.buffer, 0, result.buffer.byteLength)) to read and modify bytes belonging to unrelated host buffers, disclosing and corrupting host-realm memory across the sandbox boundary.
Title vm2 before 3.12.2 Memory Disclosure via zlib Buffer Pool
Weaknesses CWE-200
References
Metrics cvssV3_1

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

cvssV4_0

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


cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-10-01T18:04:57.414Z

Reserved: 2026-09-26T02:40:56.226Z

Link: CVE-2026-100723

cve-icon Vulnrichment

Updated: 2026-10-01T18:04:12.914Z

cve-icon NVD

Status : Deferred

Published: 2026-09-27T02:17:19.373

Modified: 2026-10-01T19:17:16.563

Link: CVE-2026-100723

cve-icon Redhat

Severity : Important

Publid Date: 2026-09-27T01:28:30Z

Links: CVE-2026-100723 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-09-30T05:15:17Z

Weaknesses
  • CWE-200

    Exposure of Sensitive Information to an Unauthorized Actor

  • CWE-653

    Improper Isolation or Compartmentalization