Repository navigation
fix(deps): bump brace-expansion to 5.0.12 and 2.1.7 in the lockfile - #152
Conversation
Both resolutions sat in the vulnerable range of GHSA-q2hr-2g5m-vwhr (CVE-2026-102277): expand() rescans the input each time it rewrites a brace group, so a pattern reaching minimatch or glob costs quadratic time. 5.0.12 and 2.1.7 bound the rescan count. minimatch requests ^5.0.8 and ^2.0.2, both of which already admit the fixed versions, so only the lockfile changes. Both resolutions are reachable only through eslint and ts-jest; the runtime tree carries no copy of brace-expansion. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Aw6HKYzX21czRB8siJuYpN
|
| User | Commit | Date |
|---|---|---|
| maxi@currents.dev | fix(deps): bump brace-... | October 23, 2026 |
| dj@currents.dev | chore: update dependen... | August 07, 2026 |
Triage verdict — Tier A, ready to merge, nothing outstandingThis is a Phase 5 auto-merge candidate. The check that makes it one: every entry the fix moves is development-scope, confirmed with Both paths enter through Why this one and not the others in today's queue
By contrast, today's other security PRs each fail at least one: #468 in CI on
|
| workflow | conclusion |
|---|---|
| Check Transpiled JavaScript | success |
| Test Action | success |
| Unit tests action | success |
| CodeQL | success |
| Lint Codebase | success |
Not found by Vanta
npm audit found this; Vanta has no finding for currents-dev/playwright-last-failed at all, so it carried no SLA deadline and Dependabot opened nothing. That gap is the reason this sat unfixed, and it is reported in today's digest alongside the same gap in currents-dev/ide-extension.
Generated by Claude Code
Owner: @maxigimenez
Clears GHSA-q2hr-2g5m-vwhr (CVE-2026-102277) in both
brace-expansionresolutions. Found bynpm audit— Vanta files no record for this repository, so this advisory carried no SLA clock and no Dependabot PR.What changed
brace-expansioneslint→minimatchbrace-expansionts-jest→ … →test-exclude→glob→minimatchminimatchrequests^5.0.8and^2.0.2; both already admit the fixed versions, so this is a lockfile refresh with no manifest edit. Diff ispackage-lock.jsonalone, 6 insertions / 6 deletions across exactly 2 stanzas.The
version/resolved/integrityfields were edited in place rather than lettingnpm installrewrite the file, because the npm in this sandbox (10.9.4) strips thelibcdiscriminators this lockfile carries on 8 optional binaries — 48 unrelated deletions.npm ciaccepts the result and leaves it byte-identical, and the dependency and engine fields of both packages are unchanged between the old and new versions.Exposure
Development only.
npm ls brace-expansion --omit=devreturns an empty tree — no copy reaches the runtime dependencies (@actions/core,@actions/exec,lodash), anddist/is byte-identical afternpm run package, so the published action bundle is unaffected. The advisory bites code that passes an untrusted pattern toexpand()viaminimatch/glob; here the only callers are ESLint's ignore matching and Jest's coverage path matching, both over patterns committed in this repo.Breaking-change check
v5.0.11...v5.0.12 is two commits. The fix bounds how many times the scan may restart (
maxRewrites, default 1000); past the bound the remaining string is returned literally instead of expanding. The author reports the quadratic case dropping from 27.7s to ~50ms at n=128,000 and output equivalence below the bound by differential testing. No removals and no breaking-change section. That bound is a real behaviour change, but only for patterns needing more than 1000 rewrites — far past anything in this repo's lint and coverage globs.GitHub rates the advisory moderate, CVSS 5.3 (
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L);npm auditsurfaces it as high.Verification
Run on this branch at
d0ca8e6:npm cigit diff --name-onlypackage-lock.jsononlynpm run format:checknpm run lintnpm testnpm run packagedist/byte-identical, socheck-distpassesnpm audit@humanfs/node, unrelated)UNMET OPTIONAL DEPENDENCYlines before and after — 0 newCI coverage
All five workflows trigger on
pull_requesttomainwith nopathsfilter, so none is skipped by a lockfile-only diff:check-dist,codeql-analysis,linter,test,unit-tests.What a human should still check
Nothing. Tier A: patch bumps inside one major each, transitive and development-only, no manifest edit, no patch files in this repo, 2 lockfile stanzas, no majors collapsed, no new peer warnings.
Generated by Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need.