vm2 3.9.6 before 3.11.7 Sandbox Bypass via Accessor Descriptor
vm2 versions from 3.9.6 before 3.11.7 fail to properly restrict access to accessor properties on frozen objects, allowing sandboxed scripts to bypass vm.freeze() and vm.readonly() protections. Attackers can use Object.getOwnPropertyDescriptor() or __lookupSetter__() to extract and invoke host object setters directly, mutating properties the embedder explicitly marked read-only.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-92949
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 7 Nov 2026, 13:05 UTC · Revision 1
Source evidence
vm2 3.9.6 before 3.11.7 Sandbox Bypass via Accessor Descriptor
core-osv · Original sourcePublished 17 Sept 2026, 13:46 UTC
vm2 versions from 3.9.6 before 3.11.7 fail to properly restrict access to accessor properties on frozen objects, allowing sandboxed scripts to bypass vm.freeze() and vm.readonly() protections. Attackers can use Object.getOwnPropertyDescriptor() or __lookupSetter__() to extract and invoke host object setters directly, mutating properties the embedder explicitly marked read-only.
osv:CVE-2026-92949
Complete source record
{
"id": "6877170dc81f039d160b062c4ce3efd069cf397be5c213f3f6237e07bc0377eb",
"url": "https://osv.dev/vulnerability/CVE-2026-92949",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "vm2 3.9.6 before 3.11.7 Sandbox Bypass via Accessor Descriptor",
"summary": "vm2 versions from 3.9.6 before 3.11.7 fail to properly restrict access to accessor properties on frozen objects, allowing sandboxed scripts to bypass vm.freeze() and vm.readonly() protections. Attackers can use Object.getOwnPropertyDescriptor() or __lookupSetter__() to extract and invoke host object setters directly, mutating properties the embedder explicitly marked read-only.",
"evidence": "osv:CVE-2026-92949",
"products": [],
"severity": "medium",
"structured": {
"id": "CVE-2026-92949",
"aliases": [
"CVE-2026-92949",
"GHSA-633r-hq9m-c4ff"
],
"metrics": [
{
"type": "CVSS_V4",
"score": "CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:L/SA:N"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/patriksimek/vm2",
"type": "GIT",
"events": [
{
"introduced": "532120d5cdec7da8225fc6242e154ebabc63fe4d"
},
{
"fixed": "0c5b63a228c0af88d4a0d364ab0b90df278d710e"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"introduced": "3.9.6"
},
{
"fixed": "3.11.7"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StandardRange"
},
{
"range": [
{
"introduced": "3.9.6"
},
{
"fixed": "3.11.7"
}
],
"source": "DESCRIPTION"
}
]
}
}
],
"versions": [
"3.11.6",
"v3.11.5",
"v3.11.4",
"v3.11.3",
"v3.11.2",
"v3.11.1",
"v3.11.0",
"v3.10.5",
"v3.10.4",
"v3.10.3",
"v3.10.2",
"v3.10.1",
"v3.10.0",
"3.9.19",
"3.9.18",
"3.9.17",
"3.9.16",
"3.9.15",
"3.9.14",
"3.9.13",
"3.9.12",
"3.9.11",
"3.9.10",
"3.9.9",
"3.9.8",
"3.9.7",
"3.9.6"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-92949.json"
}
}
],
"modified": "2026-10-28T02:30:50.906800537Z",
"provider": "osv",
"references": [
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/92xxx/CVE-2026-92949.json",
"https://github.com/patriksimek/vm2/security/advisories/GHSA-633r-hq9m-c4ff",
"https://nvd.nist.gov/vuln/detail/CVE-2026-92949",
"https://www.vulncheck.com/advisories/vm2-3.9.6-before-3.11.7-sandbox-bypass-via-accessor-descriptor"
],
"provider_metadata": {
"cwe_ids": [
"CWE-471"
],
"cna_assigner": "VulnCheck",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/92xxx/CVE-2026-92949.json"
}
},
"related_cves": [
{
"value": "CVE-2026-92949",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 519383,
"published_at": "2026-09-17T13:46:09.471+00:00"
}