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: n/a
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.

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 not available, and the vulnerability has not been listed in the CISA KEV catalog, suggesting that widespread exploitation may not yet be observed. 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 27, 2026 at 03:27 UTC.

Remediation

No vendor fix or workaround currently provided.

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 27, 2026 at 03:27 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

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-09-27T01:28:30.027Z

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

Link: CVE-2026-100723

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Deferred

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

Modified: 2026-09-27T02:17:20.553

Link: CVE-2026-100723

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-27T05:00:07Z

Weaknesses
  • CWE-200

    Exposure of Sensitive Information to an Unauthorized Actor