minimatch is a minimal matching utility for converting glob expressions into JavaScript RegExp objects. Versions 10.2.0 and below are vulnerable to Regular Expression Denial of Service (ReDoS) when a glob pattern contains many consecutive * wildcards followed by a literal character that doesnt appear in the test string. Each * compiles to a separate [^/]*? regex group, and when the match fails, V8s regex engine backtracks exponentially across all possible splits. The time complexity is O(4^N) where N is the number of * characters. With N=15, a single minimatch() call takes ~2 seconds. With N=34, it hangs effectively forever. Any application that passes user-controlled strings to minimatch() as the pattern argument is vulnerable to DoS. This issue has been fixed in version 10.2.1.
The product uses a regular expression with an inefficient, possibly exponential worst-case computational complexity that consumes excessive CPU cycles.
| Name | Vendor | Start Version | End Version |
|---|---|---|---|
| Minimatch | Minimatch_project | 3.0.0 (including) | 3.1.3 (excluding) |
| Minimatch | Minimatch_project | 4.0.0 (including) | 4.2.4 (excluding) |
| Minimatch | Minimatch_project | 5.0.0 (including) | 5.1.7 (excluding) |
| Minimatch | Minimatch_project | 6.0.0 (including) | 6.2.1 (excluding) |
| Minimatch | Minimatch_project | 7.0.0 (including) | 7.4.7 (excluding) |
| Minimatch | Minimatch_project | 8.0.0 (including) | 8.0.5 (excluding) |
| Minimatch | Minimatch_project | 9.0.0 (including) | 9.0.6 (excluding) |
| Minimatch | Minimatch_project | 10.0.0 (including) | 10.2.1 (excluding) |
Attackers can create crafted inputs that
intentionally cause the regular expression to use
excessive backtracking in a way that causes the CPU
consumption to spike.