minimatch has potential denial of service via globparts amplification
🔗 CVE IDs covered (1)
📋 Description
minimatch 10.2.6 contains an attacker-controlled pattern amplification in firstPhasePreProcess() when optimizationLevel >= 2.
researcher: Reid Downing (b1nv0id) files:
- src/index.ts: 690-770
- src/index.ts: 780-796
issue: input-controlled growth of globParts during first-phase preprocessing, followed by quadratic second-phase processing.
the **/../ transformation clones a globparts entry and appends the clone to the same globparts array:
parts.splice(gs, 1)
const other = parts.slice(0)
other[gs] = '**'
globParts.push(other)
this occurs inside a do...while (didSomething) fixpoint loop, allowing generated entries to be processed again.
the expanded globparts array is subsequently processed by secondPhasePreProcess(), which performs pairwise comparisons:
for (let i = 0; i < globParts.length - 1; i++) {
for (let j = i + 1; j < globParts.length; j++) {
this.partsMatch(...)
}
}
an attacker who can supply a glob pattern can therefore cause additional pattern entries to be generated during preprocessing, followed by quadratic pairwise processing, resulting in excessive cpu and memory consumption.
🎯 Affected products1
- npm/minimatch:< 11.0.1
🔗 References (5)
- https://github.com/isaacs/minimatch/security/advisories/GHSA-g3hv-75wg-m249
- https://nvd.nist.gov/vuln/detail/CVE-2026-118764
- https://github.com/isaacs/minimatch/commit/77a0f5c4b80bdc641c3c930a1d9edf5ad2db57f8
- https://github.com/isaacs/minimatch/releases/tag/v11.0.1
- https://github.com/advisories/GHSA-g3hv-75wg-m249