UID2-6617: Fix CVE-2026-26996 minimatch ReDoS vulnerability#168
Merged
ssundahlTTD merged 3 commits intomainfrom Feb 20, 2026
Merged
UID2-6617: Fix CVE-2026-26996 minimatch ReDoS vulnerability#168ssundahlTTD merged 3 commits intomainfrom
ssundahlTTD merged 3 commits intomainfrom
Conversation
Add minimatch ^10.2.1 to overrides and resolutions in package.json to resolve CVE-2026-26996 (HIGH severity ReDoS via repeated wildcards with non-matching literal in pattern). Previously minimatch 3.1.2 was pulled in transitively by eslint, nodemon, jest, and other packages. All instances are now resolved to 10.2.2. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Scope the minimatch resolution so eslint-plugin-import keeps using v3.1.2, which requires minimatch to be callable as a function (default export). The global v10.2.1 override broke lint with 'TypeError: minimatch is not a function'. All other packages continue to use minimatch ^10.2.1 via the global resolution. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace the global Yarn resolution (minimatch -> 10.2.2) with a scoped resolution that only upgrades nodemon's minimatch to 10.2.2. All other packages (eslint-plugin-import, eslint, jest and other devDeps) revert to their natural 3.1.2 or 5.1.6, restoring lint compatibility. eslint-plugin-import 2.x calls minimatch() as a default-export function (pre-v6 API). Yarn v1's flat node_modules cannot install two separate minimatch versions without a nested installation that the flat model doesn't support when a global resolution is also present. Result: - nodemon (production dep): minimatch 10.2.2 (CVE fixed via scoped resolution) - eslint/jest devDeps: minimatch 3.1.2 / 5.1.6 (suppressed in .trivyignore) Add .trivyignore to suppress CVE-2026-26996 for dev-only minimatch instances. Expiry 2027-02-20 to revisit when ESLint is upgraded. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
ssundahlTTD
approved these changes
Feb 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes UID2-6617
CVE-2026-26996: ReDoS vulnerability in minimatch via repeated wildcards with a non-matching literal.
Approach
Yarn v1's flat
node_modulesmodel cannot install two versions of minimatch simultaneously. A globalresolutionsoverride forces 10.2.2 for all packages — buteslint-plugin-import2.x callsminimatch()as a callable default export (pre-v6 API), which breaks under minimatch v10:Instead, a scoped Yarn resolution is used to upgrade minimatch only for
nodemon(the only production dependency that uses minimatch):All other minimatch instances (
^3.1.2,^5.0.1) are in devDependencies only (eslint, jest, eslint-plugin-import, etc.) and revert to their natural 3.1.2 / 5.1.6 versions. These are suppressed in.trivyignorewith expiry 2027-02-20 and justification that:eslint-plugin-importto support minimatch v10 requires migrating to ESLint v9 (separate effort)For npm-based repos, nested
overrideswork correctly; for Yarn v1, the scoped resolution + trivyignore is the correct approach.Result
Test plan
yarn lintpasses without errorsyarn.lockshowsnodemon/minimatchresolves to 10.2.2🤖 Generated with Claude Code