Skip to content

chore(deps): resolve 3 HIGH npm audit findings, apply quarantine-safe updates - #574

Merged
billchurch merged 2 commits into
mainfrom
chore/deps-2026-08-audit
Aug 18, 2026
Merged

billchurch merged 2 commits into
mainfrom
chore/deps-2026-08-audit

Conversation

@billchurch

Copy link
Copy Markdown
Owner

Audit — 3 HIGH findings resolved (CVE exception to 14-day quarantine)

Package From → To Advisory Path Fix published
socket.io-parser 4.2.6 → 4.2.7 GHSA-2m8v-j782-fhvr (zero-attachment memory exhaustion) production — socket.io; our overrides pin bumped 2026-07-15
nanoid 3.3.16 → 3.3.18 GHSA-2v37-7h3g-55p8 (zero-size generator infinite loop) dev — vitest→vite→postcss; new override (postcss floor ^3.3.16 doesn't force past it) 2026-08-07
brace-expansion 5.0.8 → 5.0.9 GHSA-rgw5-rvv9-x895 (CVE-2026-14257 mitigation bypass) dev — sonarjs→minimatch; lockfile refresh 2026-07-30

Each fix version's maintainer/publisher was verified. npm audit --audit-level=high → 0 vulnerabilities. Assessments added to SECURITY.md.

Applied updates (all published on/before 2026-08-04)

Package From → To Published
@playwright/test 1.61.1 → 1.62.1 2026-07-30
@typescript-eslint/eslint-plugin, parser 8.64.0 → 8.66.0 2026-08-03
eslint 10.7.0 → 10.8.0 2026-07-24
eslint-plugin-playwright 2.10.5 → 2.11.0 2026-07-27
vitest, @vitest/coverage-v8 4.1.9 → 4.1.10 2026-07-06
baseline-browser-mapping ^2.8.32 → 2.11.12 (exact) 2026-08-03
tsx ^4.22.4 → 4.23.5 (exact) 2026-08-02

baseline-browser-mapping and tsx switched to exact pins so a bare npm install can't jump to disqualified latest versions.

Deferred

Too new (< 14 days): @typescript-eslint 8.67.0, eslint 10.8.1, vitest 4.1.11, tsx 4.23.12, baseline-browser-mapping 2.11.15, eslint-plugin-n 18.3.0, @types/node 26.2.0, better-sqlite3 13.0.3.

Majors, not applied:

  • typescript 7.0.2 — native (Go) compiler rewrite; wait for @typescript-eslint compatibility.
  • @types/node 26 — project targets Node 22 (engines, CI, Dockerfile); stay on 24.x.
  • better-sqlite3 13 / @types/better-sqlite3 9 — N-API rebinding; qualifies by age 2026-08-19, pair them in a follow-up.
  • basic-auth 3.0.0 — ESM + drops default export; app/middleware/auth.middleware.ts:5 needs a one-line change. Good next-cycle candidate.
  • eslint-plugin-unicorn 73 — new recommended rules; adopt next cycle after a lint dry-run.

Overrides review

flatted, picomatch, path-to-regexp, qs appear vestigial (consumers already accept newer, no open advisories) — left as-is, candidates for cleanup. vite / lightningcss are deliberate quarantine pins.

Verification

lint 0 errors (36 warnings, same as main) · typecheck clean · 1731 tests pass · build clean · npm audit --audit-level=high clean.

… updates

Audit (CVE exception to 14-day quarantine, fix versions verified):
- socket.io-parser 4.2.6 -> 4.2.7 (GHSA-2m8v-j782-fhvr, production path;
  bumps our existing override)
- nanoid 3.3.16 -> 3.3.18 (GHSA-2v37-7h3g-55p8, dev-only via postcss;
  new override — postcss's floor does not force past the vulnerable version)
- brace-expansion 5.0.8 -> 5.0.9 (GHSA-rgw5-rvv9-x895, dev-only via
  minimatch; lockfile refresh)

Dev updates published on/before 2026-08-04:
- @playwright/test 1.61.1 -> 1.62.1
- @typescript-eslint/{eslint-plugin,parser} 8.64.0 -> 8.66.0
- eslint 10.7.0 -> 10.8.0
- eslint-plugin-playwright 2.10.5 -> 2.11.0
- vitest / @vitest/coverage-v8 4.1.9 -> 4.1.10
- baseline-browser-mapping ^2.8.32 -> 2.11.12 (exact pin)
- tsx ^4.22.4 -> 4.23.5 (exact pin)

Deferred: majors (typescript 7, @types/node 26, better-sqlite3 13,
basic-auth 3, eslint-plugin-unicorn 73) and anything newer than 14 days.

SECURITY.md documents the three advisories and their exposure.
npm audit --audit-level=high: 0 vulnerabilities.
…ssessments

Trivy began flagging CVE-2026-69152 (brace-expansion 5.0.7) and
CVE-2026-69192 (ip-address 10.2.0) on 2026-08-18. Both live in the global
npm@11.18.0 pinned by the Dockerfile runtime stage, not the app tree, and no
npm release vendors the fixed versions yet (checked through 11.19.0).

Add both to .trivyignore, following the existing CVE-2026-14257 pattern,
with matching SECURITY.md assessments and a re-evaluation trigger (bump the
npm pin once a release vendors brace-expansion >= 5.0.9 and
ip-address >= 10.3.1, then drop all three entries).
@billchurch

Copy link
Copy Markdown
Owner Author

CI docker-image-scan failure was unrelated to this PR: Trivy started flagging CVE-2026-69152 (brace-expansion 5.0.7) and CVE-2026-69192 (ip-address 10.2.0) inside the image's global npm@11.18.0 on 2026-08-18. No npm release vendors the fixes yet, so both are now suppressed in .trivyignore with SECURITY.md assessments (same pattern as CVE-2026-14257). Re-run should go green.

@sonarqubecloud

Copy link
Copy Markdown

@billchurch
billchurch merged commit adf1047 into main Aug 18, 2026
7 checks passed
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