All the vulnerabilities related to the version 1.4.1 of the package
Malicious code in new-command (npm)
The package new-command was found to contain malicious code.
Malicious code in show-help (npm)
The package show-help was found to contain malicious code.
Malicious code in first-val (npm)
The package first-val was found to contain malicious code.
Malicious code in show-version (npm)
The package show-version was found to contain malicious code.
Prototype Pollution in minimist
Affected versions of minimist
are vulnerable to prototype pollution. Arguments are not properly sanitized, allowing an attacker to modify the prototype of Object
, causing the addition or modification of an existing property that will exist on all objects.
Parsing the argument --__proto__.y=Polluted
adds a y
property with value Polluted
to all objects. The argument --__proto__=Polluted
raises and uncaught error and crashes the application.
This is exploitable if attackers have control over the arguments being passed to minimist
.
Upgrade to versions 0.2.1, 1.2.3 or later.
Prototype Pollution in minimist
Minimist prior to 1.2.6 and 0.2.4 is vulnerable to Prototype Pollution via file index.js
, function setKey()
(lines 69-95).
Malicious code in failing-code (npm)
The package failing-code was found to contain malicious code.
Malicious code in failing-line (npm)
The package failing-line was found to contain malicious code.
Malicious code in format-text (npm)
The package format-text was found to contain malicious code.
Malicious code in style-format (npm)
The package style-format was found to contain malicious code.
Malicious code in ansi-codes (npm)
The package ansi-codes was found to contain malicious code.
Malicious code in filter-stack (npm)
The package filter-stack was found to contain malicious code.
Regular Expression Denial of Service in uglify-js
Versions of uglify-js
prior to 2.6.0 are affected by a regular expression denial of service vulnerability when malicious inputs are passed into the parse()
method.
var u = require('uglify-js');
var genstr = function (len, chr) {
var result = "";
for (i=0; i<=len; i++) {
result = result + chr;
}
return result;
}
u.parse("var a = " + genstr(process.argv[2], "1") + ".1ee7;");
$ time node test.js 10000
real 0m1.091s
user 0m1.047s
sys 0m0.039s
$ time node test.js 80000
real 0m6.486s
user 0m6.229s
sys 0m0.094s
Update to version 2.6.0 or later.
Potential Command Injection in shell-quote
Affected versions of shell-quote
do not properly escape command line arguments, which may result in command injection if the library is used to escape user input destined for use as command line arguments.
The following characters are not escaped properly: >
,;
,{
,}
Bash has a neat but not well known feature known as "Bash Brace Expansion", wherein a sub-command can be executed without spaces by running it between a set of {}
and using the ,
instead of
to seperate arguments. Because of this, full command injection is possible even though it was initially thought to be impossible.
const quote = require('shell-quote').quote;
console.log(quote(['a;{echo,test,123,234}']));
// Actual "a;{echo,test,123,234}"
// Expected "a\;\{echo,test,123,234\}"
// Functional Equivalent "a; echo 'test' '123' '1234'"
Update to version 1.6.1 or later.
Potential for Script Injection in syntax-error
Versions of syntax-error
prior to 1.1.1 are affected by a cross-site scripting vulnerability which may allow a malicious file to execute code when browserified.
Update to version 1.1.1 or later.
Malicious code in local-debug (npm)
The package local-debug was found to contain malicious code.
path-to-regexp outputs backtracking regular expressions
A bad regular expression is generated any time you have two parameters within a single segment, separated by something that is not a period (.
). For example, /:a-:b
.
For users of 0.1, upgrade to 0.1.10
. All other users should upgrade to 8.0.0
.
These versions add backtrack protection when a custom regex pattern is not provided:
They do not protect against vulnerable user supplied capture groups. Protecting against explicit user patterns is out of scope for old versions and not considered a vulnerability.
Version 7.1.0 can enable strict: true
and get an error when the regular expression might be bad.
Version 8.0.0 removes the features that can cause a ReDoS.
All versions can be patched by providing a custom regular expression for parameters after the first in a single segment. As long as the custom regular expression does not match the text before the parameter, you will be safe. For example, change /:a-:b
to /:a-:b([^-/]+)
.
If paths cannot be rewritten and versions cannot be upgraded, another alternative is to limit the URL length. For example, halving the attack string improves performance by 4x faster.
Using /:a-:b
will produce the regular expression /^\/([^\/]+?)-([^\/]+?)\/?$/
. This can be exploited by a path such as /a${'-a'.repeat(8_000)}/a
. OWASP has a good example of why this occurs, but the TL;DR is the /a
at the end ensures this route would never match but due to naive backtracking it will still attempt every combination of the :a-:b
on the repeated 8,000 -a
.
Because JavaScript is single threaded and regex matching runs on the main thread, poor performance will block the event loop and can lead to a DoS. In local benchmarks, exploiting the unsafe regex will result in performance that is over 1000x worse than the safe regex. In a more realistic environment using Express v4 and 10 concurrent connections, this translated to average latency of ~600ms vs 1ms.
path-to-regexp contains a ReDoS
The regular expression that is vulnerable to backtracking can be generated in versions before 0.1.12 of path-to-regexp
, originally reported in CVE-2024-45296
Upgrade to 0.1.12.
Avoid using two parameters within a single path segment, when the separator is not .
(e.g. no /:a-:b
). Alternatively, you can define the regex used for both parameters and ensure they do not overlap to allow backtracking.
Malicious code in default-debug (npm)
The package default-debug was found to contain malicious code.
Malicious code in stream-format (npm)
The package stream-format was found to contain malicious code.
Malicious code in new-format (npm)
The package new-format was found to contain malicious code.
Malicious code in pause-function (npm)
The package pause-function was found to contain malicious code.
Regular Expression Denial of Service in minimatch
Affected versions of minimatch
are vulnerable to regular expression denial of service attacks when user input is passed into the pattern
argument of minimatch(path, pattern)
.
var minimatch = require(“minimatch”);
// utility function for generating long strings
var genstr = function (len, chr) {
var result = “”;
for (i=0; i<=len; i++) {
result = result + chr;
}
return result;
}
var exploit = “[!” + genstr(1000000, “\\”) + “A”;
// minimatch exploit.
console.log(“starting minimatch”);
minimatch(“foo”, exploit);
console.log(“finishing minimatch”);
Update to version 3.0.2 or later.
minimatch ReDoS vulnerability
A vulnerability was found in the minimatch package. This flaw allows a Regular Expression Denial of Service (ReDoS) when calling the braceExpand function with specific arguments, resulting in a Denial of Service.
Malicious code in style-dom (npm)
The package style-dom was found to contain malicious code.
Malicious code in prettify-error (npm)
The package prettify-error was found to contain malicious code.
Malicious code in bind-key (npm)
The package bind-key was found to contain malicious code.
Malicious code in run-serially (npm)
The package run-serially was found to contain malicious code.
Malicious code in just-next-tick (npm)
The package just-next-tick was found to contain malicious code.
Malicious code in flat-glob (npm)
The package flat-glob was found to contain malicious code.
Malicious code in uniques (npm)
The package uniques was found to contain malicious code.
Prototype Pollution in merge
Versions of merge
before 1.2.1 are vulnerable to prototype pollution. The merge.recursive
function can be tricked into adding or modifying properties of the Object prototype.
Update to version 1.2.1 or later.
Prototype Pollution in merge
All versions of package merge <2.1.1 are vulnerable to Prototype Pollution via _recursiveMerge .
Prototype pollution in Plist before 3.0.5 can cause denial of service
Prototype pollution vulnerability via .parse()
in Plist allows attackers to cause a Denial of Service (DoS) and may lead to remote code execution.