Improper authorization control for web services In vm2
Description
vm2: Sandbox Breakout Using Dangerous Host Proto Mutators
Summary
VM2 suffers from a sandbox breakout vulnerability. This allows attackers to write code which can escape from the VM2 sandbox and execute arbitrary commands on the host system.
Details
The fix for https://github.com/patriksimek/vm2/security/advisories/GHSA-v6mx-mf47-r5wg is insufficient and can be bypassed by replacing indirectcall.call(dangerousmutator, ...) with indirectcall.call(indirectcall, dangerousmutator, ...) since indirect calls are not seen as dangerous.
PoC
const {VM} = require("."); const vm = new VM(); console.log(vm.run(` const getProto = Buffer.call.call(Buffer.call, {}.__lookupGetter__, Buffer, "__proto__"); const setProto = Buffer.call.call(Buffer.call, {}.__lookupSetter__, Buffer, "__proto__"); async function f() { try {...
Impact
Attackers can perform Remote Code Execution under the assumption that the attacker can run arbitrary code execution inside the context of a vm2 sandbox.
Mitigation
Update Impact
Minimal update. May introduce new vulnerabilities or breaking changes.
Ecosystem | Component | Affected version | Patched versions |
|---|---|---|---|
npm | 3.11.6 |
Aliases
References