Skip to content

chore(deps): migrate to eslint 10 to clear the brace-expansion DoS advisory #1838

Description

@cliffhall

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

  1. It does not ship. eslint is a dev dependency; the published files allowlist is clients/*/build, clients/web/dist, and scripts/install-clients.mjs.
  2. 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.
  3. 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

Metadata

Metadata

Assignees

Labels

v2Issues and PRs for v2

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions