Deferred from the pre-2.0.0 dependency sweep (#1837). Dev-scope only — does not ship.
The alert
A brace-expansion DoS (unbounded expansion length) reachable via minimatch, inside eslint's own dependency tree. It appears 5 times in each of the 5 lockfiles (root + four clients) as:
@eslint/config-array
@eslint/eslintrc
brace-expansion
eslint
minimatch
npm audit reports a single fix for all of them: eslint@10.8.0.
Why it was deferred rather than fixed
- It does not ship. eslint is a dev dependency; the published
files allowlist is clients/*/build, clients/web/dist, and scripts/install-clients.mjs.
- The vulnerable path is not attacker-controlled. The glob patterns fed to
minimatch come from this repo's own eslint config. Worst case is a slow lint run on a machine that already has the source.
- The fix is a major bump across five packages, likely requiring flat-config and rule migrations — not work to attempt immediately before an irreversible npm publish.
The alerts were dismissed as tolerable_risk with that reasoning recorded. This issue exists so the dismissal is not the only record that real work remains — a dismissed alert reads too easily as a solved problem.
Scope
- Bump eslint to 10.x in the root and all four clients (each has its own
package.json / lockfile — v2 is not an npm workspace).
- Migrate config as required; the root
eslint.config.js also gates core/ and the shared surface (lint:core, lint:shared).
- Verify
npm run ci passes — lint runs in validate for every client.
- Confirm the 25 alerts clear, and un-dismiss rather than leave them dismissed-but-fixed.
Related
Deferred from the pre-2.0.0 dependency sweep (#1837). Dev-scope only — does not ship.
The alert
A
brace-expansionDoS (unbounded expansion length) reachable viaminimatch, inside eslint's own dependency tree. It appears 5 times in each of the 5 lockfiles (root + four clients) as:@eslint/config-array@eslint/eslintrcbrace-expansioneslintminimatchnpm auditreports a single fix for all of them:eslint@10.8.0.Why it was deferred rather than fixed
filesallowlist isclients/*/build,clients/web/dist, andscripts/install-clients.mjs.minimatchcome from this repo's own eslint config. Worst case is a slow lint run on a machine that already has the source.The alerts were dismissed as
tolerable_riskwith that reasoning recorded. This issue exists so the dismissal is not the only record that real work remains — a dismissed alert reads too easily as a solved problem.Scope
package.json/ lockfile — v2 is not an npm workspace).eslint.config.jsalso gatescore/and the shared surface (lint:core,lint:shared).npm run cipasses — lint runs invalidatefor every client.Related