vm2 3.11.0 through 3.11.7 Prototype Pollution via TypedArray
Collected exploitation and prediction evidence
Risk source coverageCISA KEV is observed exploitation evidence. FIRST EPSS is a dated prediction of exploitation in the next 30 days. Missing scores are unknown. This collector requests predictions only for explicit CVE aliases in the public NuGet archive; Microsoft release views retain their existing prediction scope.
No collected risk observation for these identifiers. This does not establish absence of exploitation or a zero probability.
cve-program · CVE-2026-92953
Publishedvm2 versions from 3.11.0 before 3.11.8 fail to protect host TypedArray and ArrayBuffer prototypes from sandbox mutation. Attackers can use prototype-walking primitives to reach and modify host Uint8Array.prototype, %TypedArray%.prototype, and ArrayBuffer.prototype, causing host-created typed arrays to observe attacker-controlled properties after VM.run() returns.
- Source published
- 17 Sep 2026 13:46:12 UTC
- Source modified
- 18 Sep 2026 19:49:31 UTC
- Observed here
- 23 Oct 2026 15:48:27 UTC
- Source terms
- CVE Program Terms of Use
Original source record · Cite this exact observation · Complete original publisher JSON
This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: cve-program · CVE Program Terms of Use. Source text is retained; field grouping and change labels are provided by ChangeIntel.
CVSS 4.0 · 9.3 CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:H/SC:N/SI:H/SA:H
CVSS 3.1 · 10.0 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:H/A:H
euvd · EUVD-2026-81602
Publishedvm2 versions from 3.11.0 before 3.11.8 fail to protect host TypedArray and ArrayBuffer prototypes from sandbox mutation. Attackers can use prototype-walking primitives to reach and modify host Uint8Array.prototype, %TypedArray%.prototype, and ArrayBuffer.prototype, causing host-created typed arrays to observe attacker-controlled properties after VM.run() returns.
EUVD source date text has no stated timezone and is retained without inventing a UTC instant. Related bulletin membership is not an alias, common cause or applicability claim. A missing vector with a zero score is treated as unrated. Complete vendor/product and underlying source evidence remains in the original JSON.
Original publisher date fields
datePublished: Sep 17, 2026, 1:46:12 PM
dateUpdated: Sep 18, 2026, 7:49:31 PM
7 related source bulletins · separate from aliases
RHSA-2026:82151: Red Hat Security Advisory: Ansible automation portal Red Hat Enterprise Linux Images
CVE-2026-13697 · CVE-2026-19534 · CVE-2026-47683 · CVE-2026-47686 · CVE-2026-47698 · CVE-2026-54284 · CVE-2026-55553 · CVE-2026-59893 · CVE-2026-71491 · CVE-2026-75899 · CVE-2026-75931 · CVE-2026-75975 · CVE-2026-76172 · CVE-2026-77037 · CVE-2026-82333 · CVE-2026-82417 · CVE-2026-84292 · CVE-2026-84375 · CVE-2026-84394 · CVE-2026-84961 · CVE-2026-88932 · CVE-2026-92934 · CVE-2026-92935 · CVE-2026-92937 · CVE-2026-92938 · CVE-2026-92939 · CVE-2026-92940 · CVE-2026-92941 · CVE-2026-92942 · CVE-2026-92944 · CVE-2026-92946 · CVE-2026-92947 · CVE-2026-92948 · CVE-2026-92950 · CVE-2026-92951 · CVE-2026-92953 · CVE-2026-92954 · CVE-2026-92955 · CVE-2026-92956 · CVE-2026-92957 · CVE-2026-92958 · CVE-2026-92959 · CVE-2026-92960 · CVE-2026-92961 · CVE-2026-93603 · CVE-2026-93604 · CVE-2026-93605 · CVE-2026-93606
RHSA-2026:79088: Red Hat Security Advisory: Red Hat Developer Hub 1.10.5 release.
CVE-2026-13697 · CVE-2026-14456 · CVE-2026-18798 · CVE-2026-19534 · CVE-2026-47683 · CVE-2026-47686 · CVE-2026-47698 · CVE-2026-55553 · CVE-2026-63072 · CVE-2026-63076 · CVE-2026-67213 · CVE-2026-67214 · CVE-2026-67422 · CVE-2026-75899 · CVE-2026-75931 · CVE-2026-75975 · CVE-2026-76172 · CVE-2026-77037 · CVE-2026-77078 · CVE-2026-82333 · CVE-2026-82417 · CVE-2026-84292 · CVE-2026-84375 · CVE-2026-84394 · CVE-2026-84445 · CVE-2026-84961 · CVE-2026-87776 · CVE-2026-88932 · CVE-2026-89011 · CVE-2026-92934 · CVE-2026-92935 · CVE-2026-92937 · CVE-2026-92938 · CVE-2026-92939 · CVE-2026-92940 · CVE-2026-92941 · CVE-2026-92942 · CVE-2026-92944 · CVE-2026-92946 · CVE-2026-92947 · CVE-2026-92948 · CVE-2026-92950 · CVE-2026-92951 · CVE-2026-92953 · CVE-2026-92954 · CVE-2026-92955 · CVE-2026-92956 · CVE-2026-92957 · CVE-2026-92958 · CVE-2026-92959 · CVE-2026-92960 · CVE-2026-92961 · CVE-2026-93603 · CVE-2026-93604 · CVE-2026-93605 · CVE-2026-93606
WID-SEC-W-2026-3071: vm2: Mehrere Schwachstellen
CVE-2026-92933 · CVE-2026-92934 · CVE-2026-92953 · CVE-2026-92954 · CVE-2026-92955 · CVE-2026-92959 · CVE-2026-92936
RHSA-2026:80603: Red Hat Security Advisory: Ansible plug-ins for Red Hat Developer Hub Product Release Update
CVE-2026-47686 · CVE-2026-47698 · CVE-2026-84961 · CVE-2026-85152 · CVE-2026-92934 · CVE-2026-92935 · CVE-2026-92937 · CVE-2026-92938 · CVE-2026-92939 · CVE-2026-92940 · CVE-2026-92941 · CVE-2026-92944 · CVE-2026-92946 · CVE-2026-92947 · CVE-2026-92948 · CVE-2026-92950 · CVE-2026-92951 · CVE-2026-92953 · CVE-2026-92954 · CVE-2026-92956 · CVE-2026-92957 · CVE-2026-92960 · CVE-2026-93603 · CVE-2026-93604 · CVE-2026-93605 · CVE-2026-93606 · CVE-2026-101916
RHSA-2026:91651: Red Hat Security Advisory: Red Hat Developer Hub 1.9.10 release.
CVE-2026-47683 · CVE-2026-47686 · CVE-2026-47698 · CVE-2026-84445 · CVE-2026-92934 · CVE-2026-92935 · CVE-2026-92937 · CVE-2026-92938 · CVE-2026-92939 · CVE-2026-92940 · CVE-2026-92941 · CVE-2026-92942 · CVE-2026-92944 · CVE-2026-92946 · CVE-2026-92947 · CVE-2026-92948 · CVE-2026-92950 · CVE-2026-92951 · CVE-2026-92953 · CVE-2026-92954 · CVE-2026-92955 · CVE-2026-92956 · CVE-2026-92957 · CVE-2026-92958 · CVE-2026-92959 · CVE-2026-92960 · CVE-2026-92961 · CVE-2026-93603 · CVE-2026-93604 · CVE-2026-93605 · CVE-2026-93606 · CVE-2026-111943
RHSA-2026:80644: Red Hat Security Advisory: Ansible plug-ins for Red Hat Developer Hub Product Release Update
CVE-2026-47686 · CVE-2026-47698 · CVE-2026-84961 · CVE-2026-85152 · CVE-2026-92934 · CVE-2026-92935 · CVE-2026-92937 · CVE-2026-92938 · CVE-2026-92939 · CVE-2026-92940 · CVE-2026-92941 · CVE-2026-92944 · CVE-2026-92946 · CVE-2026-92947 · CVE-2026-92948 · CVE-2026-92950 · CVE-2026-92951 · CVE-2026-92953 · CVE-2026-92954 · CVE-2026-92956 · CVE-2026-92957 · CVE-2026-92960 · CVE-2026-93603 · CVE-2026-93604 · CVE-2026-93605 · CVE-2026-93606 · CVE-2026-101916
RHSA-2026:76788: Red Hat Security Advisory: Red Hat Developer Hub 1.10.5 Plugin Catalog GA plugins release.
CVE-2026-13697 · CVE-2026-19534 · CVE-2026-47683 · CVE-2026-47686 · CVE-2026-47698 · CVE-2026-55553 · CVE-2026-75899 · CVE-2026-75931 · CVE-2026-75975 · CVE-2026-76172 · CVE-2026-77037 · CVE-2026-77078 · CVE-2026-77413 · CVE-2026-77414 · CVE-2026-77415 · CVE-2026-82333 · CVE-2026-82417 · CVE-2026-84292 · CVE-2026-84375 · CVE-2026-84394 · CVE-2026-84961 · CVE-2026-87776 · CVE-2026-88932 · CVE-2026-89011 · CVE-2026-92934 · CVE-2026-92935 · CVE-2026-92937 · CVE-2026-92938 · CVE-2026-92939 · CVE-2026-92940 · CVE-2026-92941 · CVE-2026-92942 · CVE-2026-92944 · CVE-2026-92946 · CVE-2026-92947 · CVE-2026-92948 · CVE-2026-92950 · CVE-2026-92951 · CVE-2026-92953 · CVE-2026-92954 · CVE-2026-92955 · CVE-2026-92956 · CVE-2026-92957 · CVE-2026-92958 · CVE-2026-92959 · CVE-2026-92960 · CVE-2026-92961 · CVE-2026-93603 · CVE-2026-93604 · CVE-2026-93605 · CVE-2026-93606
- Source published
- Sep 17, 2026, 1:46:12 PM (timezone not stated)
- Source modified
- Sep 18, 2026, 7:49:31 PM (timezone not stated)
- Observed here
- 11 Nov 2026 17:05:18 UTC
- Source terms
- ENISA EUVD · source terms and attribution apply
Original source record · Cite this exact observation · Complete original publisher JSON
This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: euvd · ENISA EUVD · source terms and attribution apply. Source text is retained; field grouping and change labels are provided by ChangeIntel.
EUVD CVSS 4.0 · 9.3 CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:H/SC:N/SI:H/SA:H
nvd · CVE-2026-92953
Publishedvm2 versions from 3.11.0 before 3.11.8 fail to protect host TypedArray and ArrayBuffer prototypes from sandbox mutation. Attackers can use prototype-walking primitives to reach and modify host Uint8Array.prototype, %TypedArray%.prototype, and ArrayBuffer.prototype, causing host-created typed arrays to observe attacker-controlled properties after VM.run() returns.
NVD analysis and CPE criteria are source context, not proof that a package or your environment is affected. Complete affected data, logical configurations and SSVC are retained in the original JSON.
Source analysis status: Deferred
Weakness classifications: CWE-913
Original publisher date fields
published: 2026-09-17T14:18:01.160
lastModified: 2026-09-18T20:17:31.113
- Source published
- 17 Sep 2026 14:18:01 UTC
- Source modified
- 18 Sep 2026 20:17:31 UTC
- Observed here
- 25 Oct 2026 16:19:22 UTC
- Source terms
- NIST NVD usage terms; underlying source attribution retained
Original source record · Cite this exact observation · Complete original publisher JSON
This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: nvd · NIST NVD usage terms; underlying source attribution retained. Source text is retained; field grouping and change labels are provided by ChangeIntel.
CVSS 4.0 · [email protected] · Secondary · 9.3 CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:H/SC:N/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
CVSS 3.1 · [email protected] · Secondary · 10.0 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:H/A:H
osv · GHSA-3vgf-8m4q-q4qr
Published## Summary vm2's current host-intrinsic prototype protection is incomplete. The fix for `GHSA-vwrp-x96c-mhwq` blocks sandbox writes into classic host intrinsics such as `Object.prototype`, `Array.prototype`, and `Function.prototype`, but current head still lets sandbox code in a default `VM` reach and mutate host `Uint8Array.prototype`, `%TypedArray%.prototype`, and `ArrayBuffer.prototype`. After `VM.run()` returns, normal host typed-array and ArrayBuffer objects observe attacker-controlled properties and methods installed by the sandbox. ## Technical Details The existing mitigation relies on `protectedHostObjects` in `lib/bridge.js`. That set is populated from `otherGlobalPrototypes`, which is built from a fixed inventory of classic globals: ```js const globalsList = [ 'Number', 'String', 'Boolean', 'Date', 'RegExp', 'Map', 'WeakMap', 'Set', 'WeakSet', 'Promise', 'Function' ]; ``` The inventory omits typed-array and ArrayBuffer intrinsics. Sandbox code can still reuse the host-prototype walking primitive from the prior public advisory: ```js const lookupGetter = ({}).__lookupGetter__; const apply = Buffer.apply; const protoGetter = apply.apply(lookupGetter, [Buffer, ['__proto__']]); const hostBuffer = Buffer.from([1]); const hostBufferPrototype = protoGetter.call(hostBuffer); const hostUint8ArrayPrototype = protoGetter.call(hostBufferPrototype); const hostTypedArrayPrototype = protoGetter.call(hostUint8ArrayPrototype); const hostArrayBufferPrototype = protoGetter.call(hostBuffer.buffer); ``` Those objects are not sandbox-local. Inside the sandbox, `hostUint8ArrayPrototype === Uint8Array.prototype`, `hostTypedArrayPrototype === Object.getPrototypeOf(Uint8Array.prototype)`, and `hostArrayBufferPrototype === ArrayBuffer.prototype` are all false. Because the objects are not in `protectedHostObjects`, bridge `defineProperty` writes are forwarded into the real host objects. This is the same guard-coverage boundary as the previous host-intrinsic prototype pollution fix, but with a missing intrinsic family. The bridge already has the correct enforcement shape; the protected inventory is too narrow. ## PoC PoV: `poc/pov-host-typedarray-arraybuffer-prototype-pollution.js` Current-head output: ```json { "status": "completed", "vulnerable": true, "node": "v25.8.0", "v8": "14.1.146.11-node.20", "control": { "defineResult": true, "sandboxReadsBack": "sandbox-only", "hostControlAfter": null }, "exploit": { "hostUint8IsSandboxUint8": false, "hostTypedArrayIsSandboxTypedArray": false, "hostArrayBufferIsSandboxArrayBuffer": false, "defineUint8": true, "defineTypedArray": true, "defineArrayBuffer": true, "defineMethod": true }, "hostEffect": { "uint8Marker": "polluted-host-uint8array-prototype", "typedArrayMarker": "polluted-host-typedarray-prototype", "arrayBufferMarker": "polluted-host-arraybuffer-prototype", "methodReturn": "sandbox-method-reached-host-uint8array" } } ``` The control proves sandbox-local `Uint8Array.prototype` writes remain sandbox-local. The exploit path reaches host prototypes through the bridge and causes host-created objects to observe sandbox-installed properties after `VM.run()` returns. ## Impact This is a sandbox boundary violation and host intrinsic prototype pollution. An attacker who can run JavaScript in a default vm2 `VM` can mutate shared host typed-array and ArrayBuffer behavior without `NodeVM`, `require`, wildcard builtins, `nesting: true`, or any host-provided typed-array object. The supplied PoV demonstrates integrity and availability impact by installing markers and a method on host prototypes: - `Uint8Array.prototype` - `%TypedArray%.prototype`, which affects typed-array families through the shared typed-array prototype chain - `ArrayBuffer.prototype` The PoV does not claim direct host command execution or direct confidentiality impact. It is local-only and restores touched descriptors before exit. ## Suggested Fix Extend the protected host-object inventory and identity/prototype mappings to typed-array and binary-data intrinsics, including at least: - `%TypedArray%.prototype` - `ArrayBuffer.prototype` - `SharedArrayBuffer.prototype` when present - `DataView.prototype` - all concrete typed-array prototypes present in the runtime, including `Uint8Array.prototype`, `Uint8ClampedArray.prototype`, `Int8Array.prototype`, `Uint16Array.prototype`, `Int16Array.prototype`, `Uint32Array.prototype`, `Int32Array.prototype`, `Float16Array.prototype` when present, `Float32Array.prototype`, `Float64Array.prototype`, `BigInt64Array.prototype`, and `BigUint64Array.prototype` A temporary patched-control that added this intrinsic family to `thisGlobalPrototypes` caused the same PoV's `Reflect.defineProperty()` calls to throw `VMError: Operation not allowed on contextified object`, and no host markers were installed. The fix should cover the same host mutation traps used by the existing host-intrinsic protection: `set`, `defineProperty`, `deleteProperty`, and `preventExtensions`. It should not special-case `Buffer`; `Buffer` is only one way to reach the omitted host prototypes. ## Affected Package/Versions Confirmed on current head `7a1f5100b96f48d34e0fe104ab37c0acc5944f92` / `v3.11.5` with Node `v25.8.0` / V8 `14.1.146.11-node.20`. Confirmed affected after the prior patch: `npm:vm2 >= 3.11.0, <= 3.11.5`. Local sweep also reproduces on `v3.10.0` through `v3.10.5`, but that range overlaps the already-published `GHSA-vwrp-x96c-mhwq` range. `v3.9.0` through `v3.9.2` did not produce host-visible pollution in the same local test. ## Why This Is Not Intended Behavior vm2 documents `VM` as a sandbox for untrusted code without `require`, with only JavaScript built-ins and Node's `Buffer` available by default. The known escape hatches do not explain this issue: - `require.builtin: ['*']` is a `NodeVM` configuration; this PoV uses default `VM`. - `nesting: true` is not enabled or used. - The README timeout caveat covers host code operating on objects returned from the sandbox; this PoV mutates host intrinsics and later affects ordinary host-created typed arrays and ArrayBuffers. The project's own attack notes state that host-realm intrinsic prototypes should be protected from sandbox writes, while non-intrinsic host objects may remain mutable when intentionally exposed. Typed-array and ArrayBuffer prototypes are host intrinsics, not embedder-owned application objects. `Buffer` availability explains how the PoV reaches the host prototype chain, but it does not authorize mutation of unrelated host-realm intrinsics. The host effects are observed on new host-created typed arrays and ArrayBuffers after `VM.run()` returns; the host is not invoking an object returned from the sandbox.
- Source published
- 5 Oct 2026 22:45:22 UTC
- Source modified
- 5 Oct 2026 23:00:06 UTC
- Observed here
- 24 Oct 2026 13:17:17 UTC
- Source terms
- GitHub Advisory Database · CC-BY-4.0
Original source record · Cite this exact observation · Complete original publisher JSON
This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: osv · GitHub Advisory Database · CC-BY-4.0. Source text is retained; field grouping and change labels are provided by ChangeIntel.
CVSS_V3 · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:H/A:H
CVSS_V4 · CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:H/SC:N/SI:H/SA:H
Publisher rating · CRITICAL
osv · GHSA-5v7w-95g5-pj6q
Withdrawn## Duplicate Advisory This advisory has been withdrawn because it is a duplicate of GHSA-3vgf-8m4q-q4qr. This link is maintained to preserve external references. ## Original Description vm2 versions from 3.11.0 before 3.11.8 fail to protect host TypedArray and ArrayBuffer prototypes from sandbox mutation. Attackers can use prototype-walking primitives to reach and modify host Uint8Array.prototype, %TypedArray%.prototype, and ArrayBuffer.prototype, causing host-created typed arrays to observe attacker-controlled properties after VM.run() returns.
- Source published
- 17 Sep 2026 15:32:16 UTC
- Source modified
- 5 Oct 2026 23:00:04 UTC
- Observed here
- 24 Oct 2026 13:17:17 UTC
- Source terms
- GitHub Advisory Database · CC-BY-4.0
Original source record · Cite this exact observation · Complete original publisher JSON
This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: osv · GitHub Advisory Database · CC-BY-4.0. Source text is retained; field grouping and change labels are provided by ChangeIntel.
CVSS_V3 · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:H/A:H
CVSS_V4 · CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:H/SC:N/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Publisher rating · CRITICAL