CVE-2026-92953: vm2 prototype pollution in TypedArray and ArrayBuffer

CVE-2026-92953 · Severity: critical · CVSS 10 · Published 2026-09-17

vm2 is a popular sandbox library that isolates untrusted JavaScript code. An attacker running code inside a default vm2 sandbox can bypass isolation protections and pollute the host application's TypedArray and ArrayBuffer prototypes, causing the host's typed-array objects to execute malicious code or observe attacker-controlled properties after the sandboxed code exits. This violates the core security boundary between sandbox and host.

Technologies: vm2 (npm). Vendors: npm.

Quick answers

Is CVE-2026-92953 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-92953 being exploited in the wild.
How severe is CVE-2026-92953?
Critical severity, with a CVSS score of 10, published 17 September 2026.
Which products and versions are affected?
vm2 (npm) >= 3.11.0, <= 3.11.7, SEMVER:introduced=3.11.0,fixed=3.11.8.
Is there a fix for CVE-2026-92953?
Yes. vm2 (npm): upgrade to 3.11.8 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-92953 attacked?
It is attacked over the network, in a software library.
Am I affected by CVE-2026-92953?
Check whether you run vm2 (npm) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • vm2 (npm): upgrade to 3.11.8 or later
    npm install vm2@3.11.8

Technical details

vm2 protects host object prototypes from sandbox mutation via a bridge mechanism that maintains a list of protected host intrinsics. However, the inventory omits TypedArray.prototype, ArrayBuffer.prototype, and related typed-array family prototypes. An attacker can use prototype-walking primitives (via Buffer.__proto__ lookups) to reach and mutate these unprotected host prototypes, causing Reflect.defineProperty() calls to forward into the real host objects rather than sandbox-local copies. No special privileges, NodeVM mode, or host-provided typed arrays are required. The fix is to extend the protected inventory to include all typed-array and binary-data intrinsics and apply the same mutation guards (set, defineProperty, deleteProperty, preventExtensions). Patches are available in version 3.11.8 and later.

Affected products

  • Patriksimek vm2 3.11.0 before 3.11.8

Identifiers

  • CVE-2026-92953
  • GHSA-3vgf-8m4q-q4qr

Timeline

  • 2026-08-27: disclosed: Security advisory GHSA-3vgf-8m4q-q4qr published on GitHub
  • 2026-09-17: advisory: CVE-2026-92953 published and indexed in NVD
  • 2026: patched: Version 3.11.8 released with fix

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.