minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 10.2.1, 9.0.6, 8.0.5, 7.4.7, 6.2.1, and 3 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
- Exploitation: none
- Automatable: yes
- Technical impact: partial
Summary
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 doesn't appear in the test string. Each * compiles to a separate [^/]*? regex group, and when the match fails, V8's 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.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: yes · Technical impact: partial
- Record last updated
Affected versions
- isaacs minimatch
fixed in 10.2.1
- minimatchnpm
From 10.0.0 · fixed in 10.2.1
- minimatchnpm
From 9.0.0 · fixed in 9.0.6
- minimatchnpm
From 8.0.0 · fixed in 8.0.5
- minimatchnpm
From 7.0.0 · fixed in 7.4.7
- minimatchnpm
From 6.0.0 · fixed in 6.2.1
- minimatchnpm
From 5.0.0 · fixed in 5.1.7
- minimatchnpm
From 4.0.0 · fixed in 4.2.4
- minimatchnpm
fixed in 3.1.3