Skip to content

fix(deps): close the minimatch glob pattern DoS (GHSA-g3hv-75wg-m249) - #424

Merged
GeiserX merged 1 commit into
mainfrom
fix/minimatch-globparts-dos
Nov 1, 2026
Merged

GeiserX merged 1 commit into
mainfrom
fix/minimatch-globparts-dos

Conversation

@GeiserX

@GeiserX GeiserX commented Nov 1, 2026 •

Copy link
Copy Markdown
Owner

Problem

Dependabot alert #76 (GHSA-g3hv-75wg-m249, medium) flags every minimatch below 11.0.1. A crafted glob pattern with repeated **/../ segments makes minimatch keep cloning pattern parts during preprocessing and then compare them pairwise, so one pattern can burn CPU and memory. Our lockfile had two copies, both dev-only: 3.1.5 from eslint 9 (and its @eslint/eslintrc and @eslint/config-array), and 10.2.6 from @typescript-eslint/typescript-estree.

Fix

  • No parent release asks for minimatch 11 yet (eslint 10.14.0 wants ^10.2.6, typescript-estree 8.72.1 wants ^10.2.2), so overrides now sets minimatch to ^11.0.1. Everything dedupes to 11.0.3.
  • eslint goes from 9 to 10. eslint 9 and @eslint/eslintrc do import minimatch from "minimatch", and minimatch 11 has no default export, so overriding under eslint 9 would break lint. eslint 10 and @eslint/config-array 0.23 import Minimatch by name and work with 11. typescript-eslint 8.72 already allows eslint 10 as a peer.
  • The overrides comment says when to drop the pin.

Verification

On a clean clone, with the npm 10 that ships with Node 22 as CI uses:

  • npm ls minimatch --all shows one copy, 11.0.3.
  • npm ci --ignore-scripts, typecheck (src and tests), lint, test:coverage (145 files, 2623 tests), the Madrid-time wash-sale run (51 tests), npm run build and node dist/cli.js --version all pass.
  • Lint still catches errors under eslint 10: a throwaway file with an unsafe any access reported 3 errors.

Summary by CodeRabbit

  • Chores
    • Updated development tooling and package version constraints.

GHSA-g3hv-75wg-m249 covers every minimatch below 11.0.1. eslint 9 pulled
3.1.5 and typescript-estree pulled 10.2.6. Move eslint to 10, which imports
minimatch by named export, and override minimatch to ^11.0.1 since no
parent release asks for 11 yet.
@coderabbitai

coderabbitai Bot commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between 1c5db78 and 1f038ca.

Files ignored due to path filters: 1
  • package-lock.json is excluded by !**/package-lock.json, !**/package-lock.json
Files selected for processing: 1
  • package.json

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

Walkthrough

The package configuration upgrades the ESLint development dependency and adds a minimatch override. It retains the existing esbuild override and updates the comment that documents the overrides.

Changes: Package configuration

Layer / File(s) Summary
Dependency updates
package.json
The ESLint development dependency range changes to ^10.14.0. The overrides add minimatch: ^11.0.1 and retain esbuild: ^0.28.1. The comment documents the minimatch pin.

Estimated code review effort: 2 (Simple) | ~8 minutes

Change: Bug fix

Merge Risk: Minimal · up to 1f038

The dependency changes are mergeable with no identified user or workflow impact.

Pre-merge checks: Passed 5
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly identifies the main change: updating dependencies to address the minimatch glob pattern denial-of-service vulnerability.
Docstring Coverage Passed No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 0 files. (1 skipped: 1 unsupported.)

Finishing Touches
Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@GeiserX
GeiserX merged commit ba1146f into main Nov 1, 2026
8 checks passed
@GeiserX
GeiserX deleted the fix/minimatch-globparts-dos branch November 1, 2026 20:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant