Arbitrary Code Injection Affecting serialize-javascript package, versions <3.1.0
Threat Intelligence
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-SERIALIZEJAVASCRIPT-570062
- published 1 Jun 2020
- disclosed 19 May 2020
- credit Unknown
Introduced: 19 May 2020
CVE-2020-7660 Open this link in a new tabHow to fix?
Upgrade serialize-javascript
to version 3.1.0 or higher.
Overview
serialize-javascript is a package to serialize JavaScript to a superset of JSON that includes regular expressions and functions.
Affected versions of this package are vulnerable to Arbitrary Code Injection. An object like {"foo": /1"/, "bar": "a\"@__R-<UID>-0__@"}
would be serialized as {"foo": /1"/, "bar": "a\/1"/}
, meaning an attacker could escape out of bar
if they controlled both foo
and bar
and were able to guess the value of <UID>
. UID is generated once on startup, is chosen using Math.random()
and has a keyspace of roughly 4 billion, so within the realm of an online attack.
PoC
eval('('+ serialize({"foo": /1" + console.log(1)/i, "bar": '"@__R-<UID>-0__@'}) + ')');