{"items":[{"id":"NVI-00013104","kind":"vulnerability","title":"vm2: Sandbox Escape (NodeVM)","revision":3,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected.","NVD lastModified does not establish freshness of every associated CPE record."],"lifecycle":"active","identifiers":["GHSA-88hf-g992-jg85","CVE-2026-92955"],"plain_summary":"GitHub lists this reviewed advisory for vm2. Published version ranges and source prerequisites are shown below; this is not an inspection of a visitor’s application.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"Identify the exact component and deployed version, examine the linked publisher’s conditions, and retain evidence of any mitigation.","source_ids":["sr-07a5dba618956b3b3e0b6329f196faa6"],"action_type":"investigate","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null}],"schema_version":"1.1.0","source_metrics":[{"kind":"CVSS","as_of":"2026-10-05T22:47:10.000Z","value":"10 critical","meaning":"GitHub source severity; exploitability and local consequence require separate evidence.","source_id":"sr-613a67e74ecebe8529bf3736e1470fc5"},{"kind":"CVSS","as_of":"2026-09-17T15:17:01.040Z","value":"10 CRITICAL (3.1)","meaning":"disclosure@vulncheck.com severity; no combined Null risk score.","source_id":"sr-21a180667c95d51145a4c48f9104823e"},{"kind":"CVSS","as_of":"2026-09-17T15:17:01.040Z","value":"10 CRITICAL (4.0)","meaning":"disclosure@vulncheck.com severity; no combined Null risk score.","source_id":"sr-21a180667c95d51145a4c48f9104823e"},{"kind":"EPSS","as_of":"2026-11-03T12:00:27.000Z","value":"0.712%","meaning":"FIRST EPSS model v2026.06.15; exploitation probability over 30 days, percentile 0.53666. Missing scores are unknown.","source_id":"sr-07a5dba618956b3b3e0b6329f196faa6"}],"why_it_matters":"Published affected context helps an owner decide what evidence to gather. This report has not examined your application.","related_sources":[{"id":"sr-613a67e74ecebe8529bf3736e1470fc5","url":"https://github.com/advisories/GHSA-88hf-g992-jg85","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-88hf-g992-jg85","publisher":"GitHub Advisory Database","observed_at":"2026-11-01T01:39:10.636Z"},{"id":"sr-21a180667c95d51145a4c48f9104823e","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-92955","basis":"official_catalog","notes":"This product uses data from the NVD API but is not endorsed or certified by the NVD.","title":"CVE-2026-92955","publisher":"NIST National Vulnerability Database","observed_at":"2026-11-04T09:59:50.242Z"},{"id":"sr-07a5dba618956b3b3e0b6329f196faa6","url":"https://www.first.org/epss/data.html","basis":"official_catalog","notes":"FIRST EPSS; probability of exploitation in the next 30 days, not local compromise. Dataset date/model retained; FIRST services terms apply.","title":"CVE-2026-92955","publisher":"FIRST EPSS","observed_at":"2026-11-03T17:45:16.087Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-613a67e74ecebe8529bf3736e1470fc5"],"technology":"vm2","known_exclusions":[],"conditions_summary":"## Summary\n\nIt being possible to obtain the host `__proto__` getter/setter, has been used in many reports:\n\n- https://github.com/patriksimek/vm2/security/advisories/GHSA-vwrp-x96c-mhwq\n- https://github.com/patriksimek/vm2/security/advisories/GHSA-v6mx-mf47-r5wg\n- https://github.com/patriksimek/vm2/security/advisories/GHSA-grj5-jjm8-h35p\n- https://github.com/patriksimek/vm2/security/advisories/GHSA-47x8-96vw-5wg6\n\nYet it was never patched...\n\n---\n\nThis can, still, be used to escape the sandbox, one example (I'm sure there's other ways as well), is via `console._stdout`/`console._stderr` (`NodeVM` with `console: 'inherit'`, which is the default)\n\n## Details\n\nThe prototype chain for `console._stdout`/`console._stderr` is:\n\n```\n_stdout / _stderr\n-> WriteStream (TTY only)\n-> Socket\n-> Duplex\n-> Readable\n-> Stream\n-> EventEmitter\n```\n\n`process` is an `EventEmitter`, and nothing stops us from writing things to `EventEmmiter.prototype`\n\nBy overwriting `EventEmmiter.prototype.emit` with a function, and making `process` emit an event (e.g. `exit`, `unhandledRejection` etc.), we can execute code with `this` being `process`.\n\nThis also bypasses `--disallow-code-generation-from-strings`, which ","public_affected_ranges":["<= 3.11.7"]}],"null_published_at":"2026-11-04T10:04:41.557Z","source_updated_at":"2026-10-05T22:47:10.000Z","source_disclosed_at":"2026-10-05T22:47:09.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"Dated EPSS estimate updated; this is not a new disclosure or proof of exploitation.","null_first_observed_at":"2026-11-01T01:39:10.636Z"},{"id":"NVI-00013104","kind":"vulnerability","title":"vm2: Sandbox Escape (NodeVM)","revision":1,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-88hf-g992-jg85","CVE-2026-92955"],"plain_summary":"GitHub lists this reviewed advisory for vm2. Published version ranges and source prerequisites are shown below; this is not an inspection of a visitor’s application.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"Identify the exact component and deployed version, examine the linked publisher’s conditions, and retain evidence of any mitigation.","source_ids":["sr-613a67e74ecebe8529bf3736e1470fc5"],"action_type":"investigate","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null}],"schema_version":"1.1.0","source_metrics":[{"kind":"CVSS","as_of":"2026-10-05T22:47:10.000Z","value":"10 critical","meaning":"GitHub source severity; exploitability and local consequence require separate evidence.","source_id":"sr-613a67e74ecebe8529bf3736e1470fc5"}],"why_it_matters":"Published affected context helps an owner decide what evidence to gather. This report has not examined your application.","related_sources":[{"id":"sr-613a67e74ecebe8529bf3736e1470fc5","url":"https://github.com/advisories/GHSA-88hf-g992-jg85","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-88hf-g992-jg85","publisher":"GitHub Advisory Database","observed_at":"2026-11-01T01:39:10.636Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-613a67e74ecebe8529bf3736e1470fc5"],"technology":"vm2","known_exclusions":[],"conditions_summary":"## Summary\n\nIt being possible to obtain the host `__proto__` getter/setter, has been used in many reports:\n\n- https://github.com/patriksimek/vm2/security/advisories/GHSA-vwrp-x96c-mhwq\n- https://github.com/patriksimek/vm2/security/advisories/GHSA-v6mx-mf47-r5wg\n- https://github.com/patriksimek/vm2/security/advisories/GHSA-grj5-jjm8-h35p\n- https://github.com/patriksimek/vm2/security/advisories/GHSA-47x8-96vw-5wg6\n\nYet it was never patched...\n\n---\n\nThis can, still, be used to escape the sandbox, one example (I'm sure there's other ways as well), is via `console._stdout`/`console._stderr` (`NodeVM` with `console: 'inherit'`, which is the default)\n\n## Details\n\nThe prototype chain for `console._stdout`/`console._stderr` is:\n\n```\n_stdout / _stderr\n-> WriteStream (TTY only)\n-> Socket\n-> Duplex\n-> Readable\n-> Stream\n-> EventEmitter\n```\n\n`process` is an `EventEmitter`, and nothing stops us from writing things to `EventEmmiter.prototype`\n\nBy overwriting `EventEmmiter.prototype.emit` with a function, and making `process` emit an event (e.g. `exit`, `unhandledRejection` etc.), we can execute code with `this` being `process`.\n\nThis also bypasses `--disallow-code-generation-from-strings`, which ","public_affected_ranges":["<= 3.11.7"]}],"null_published_at":"2026-11-01T07:29:12.921Z","source_updated_at":"2026-10-05T22:47:10.000Z","source_disclosed_at":"2026-10-05T22:47:09.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"First indexed by Null; source disclosure date is shown separately.","null_first_observed_at":"2026-11-01T01:39:10.636Z"}],"next_cursor":null,"snapshot_revision":"42594"}