GHSA-3ppc-4f35-3m26

Suggest an improvement
Source
https://github.com/advisories/GHSA-3ppc-4f35-3m26
Import Source
https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/02/GHSA-3ppc-4f35-3m26/GHSA-3ppc-4f35-3m26.json
JSON Data
https://api.osv.dev/v1/vulns/GHSA-3ppc-4f35-3m26
Aliases
Downstream
Related
Published
2026-02-18T22:38:11Z
Modified
2026-02-24T21:23:59.545252Z
Severity
  • 8.7 (High) CVSS_V4 - CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N CVSS Calculator
Summary
minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern
Details

Summary

minimatch is 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.

Details

Give all details on the vulnerability. Pointing to the incriminated source code is very helpful for the maintainer.

PoC

When minimatch compiles a glob pattern, each * becomes [^/]*? in the generated regex. For a pattern like ***************X***:

/^(?!\.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?X[^/]*?[^/]*?[^/]*?$/

When the test string doesn't contain X, the regex engine must try every possible way to distribute the characters across all the [^/]*? groups before concluding no match exists. With N groups and M characters, this is O(C(N+M, N)) — exponential.

Impact

Any application that passes user-controlled strings to minimatch() as the pattern argument is vulnerable to DoS. This includes: - File search/filter UIs that accept glob patterns - .gitignore-style filtering with user-defined rules - Build tools that accept glob configuration - Any API that exposes glob matching to untrusted input


Thanks to @ljharb for back-porting the fix to legacy versions of minimatch.

Database specific
{
    "cwe_ids": [
        "CWE-1333"
    ],
    "severity": "HIGH",
    "nvd_published_at": "2026-02-20T03:16:01Z",
    "github_reviewed_at": "2026-02-18T22:38:11Z",
    "github_reviewed": true
}
References

Affected packages

npm
minimatch

Package

Name
minimatch
View open source insights on deps.dev
Purl
pkg:npm/minimatch

Affected ranges

Type
SEMVER
Events
Introduced
10.0.0
Fixed
10.2.1

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/02/GHSA-3ppc-4f35-3m26/GHSA-3ppc-4f35-3m26.json"
minimatch

Package

Name
minimatch
View open source insights on deps.dev
Purl
pkg:npm/minimatch

Affected ranges

Type
SEMVER
Events
Introduced
9.0.0
Fixed
9.0.6

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/02/GHSA-3ppc-4f35-3m26/GHSA-3ppc-4f35-3m26.json"
minimatch

Package

Name
minimatch
View open source insights on deps.dev
Purl
pkg:npm/minimatch

Affected ranges

Type
SEMVER
Events
Introduced
8.0.0
Fixed
8.0.5

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/02/GHSA-3ppc-4f35-3m26/GHSA-3ppc-4f35-3m26.json"
minimatch

Package

Name
minimatch
View open source insights on deps.dev
Purl
pkg:npm/minimatch

Affected ranges

Type
SEMVER
Events
Introduced
7.0.0
Fixed
7.4.7

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/02/GHSA-3ppc-4f35-3m26/GHSA-3ppc-4f35-3m26.json"
minimatch

Package

Name
minimatch
View open source insights on deps.dev
Purl
pkg:npm/minimatch

Affected ranges

Type
SEMVER
Events
Introduced
6.0.0
Fixed
6.2.1

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/02/GHSA-3ppc-4f35-3m26/GHSA-3ppc-4f35-3m26.json"
minimatch

Package

Name
minimatch
View open source insights on deps.dev
Purl
pkg:npm/minimatch

Affected ranges

Type
SEMVER
Events
Introduced
5.0.0
Fixed
5.1.7

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/02/GHSA-3ppc-4f35-3m26/GHSA-3ppc-4f35-3m26.json"
minimatch

Package

Name
minimatch
View open source insights on deps.dev
Purl
pkg:npm/minimatch

Affected ranges

Type
SEMVER
Events
Introduced
4.0.0
Fixed
4.2.4

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/02/GHSA-3ppc-4f35-3m26/GHSA-3ppc-4f35-3m26.json"
minimatch

Package

Name
minimatch
View open source insights on deps.dev
Purl
pkg:npm/minimatch

Affected ranges

Type
SEMVER
Events
Introduced
0Unknown introduced version / All previous versions are affected
Fixed
3.1.3

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/02/GHSA-3ppc-4f35-3m26/GHSA-3ppc-4f35-3m26.json"