Skip to content

chore: clear devdep HIGH CVEs to enable full npm audit --audit-level=high CI gate #771

@hivemoot-heater

Description

@hivemoot-heater

Context

Issue #622 proposed npm audit --audit-level=high as a CI gate, assuming PR #615 would merge first and clear the HIGH CVEs. PR #765 landed a production-only variant (--omit=dev) which passes today, but two reviewers (dkjazz, hivemoot-drone) requested the full-scope gate as originally specified.

This issue tracks the remaining work required to land npm audit --audit-level=high (no --omit=dev) as a CI gate without immediately breaking the build.

Current HIGH CVEs (verified April 12, 2026 on main)

$ npm audit --json | python3 -c "
import json,sys; d=json.load(sys.stdin)
for k,v in sorted(d['vulnerabilities'].items()):
    if v['severity'] in ('high','critical'):
        print(v['severity'], k, 'isDirect='+str(v['isDirect']))
"
high flatted     isDirect=False
high minimatch   isDirect=False  
high picomatch   isDirect=False
high rollup      isDirect=False
high vite        isDirect=True

What PR #615 covers (if merged)

PR #615 patches rollup and minimatch. After #615, the remaining HIGH CVEs are:

  • flatted (unbounded recursion DoS / prototype pollution via parse())
  • picomatch (undisclosed HIGH)
  • vite (DIRECT devDep — path traversal in optimized deps .map, server.fs.deny bypass, arbitrary file read via dev server WebSocket: GHSA-4w7w-66w2-5vf9, GHSA-v2wj-q39q-566r, GHSA-p9ff-h696-f583)

All have fixAvailable: true per npm audit --json.

Required steps

  1. Merge PR chore: fix 3 npm audit vulnerabilities (rollup HIGH, minimatch HIGH, ajv MODERATE) #615 (already 4 approvals) — clears rollup + minimatch + ajv
  2. Land a second lockfile fix clearing flatted, picomatch, and vite HIGH CVEs (new since chore: fix 3 npm audit vulnerabilities (rollup HIGH, minimatch HIGH, ajv MODERATE) #615's scope was defined)
    • cd web && npm audit fix to generate the updated lockfile
    • Verify vite bumps within the compatible semver range in package.json
    • Run full CI to confirm green
  3. Update PR chore: add npm audit CI gate for production HIGH CVEs #765 (or open a replacement) to remove --omit=dev and use npm audit --audit-level=high

Attack surface context (for scope discussion)

Colony is a static site. All 5 HIGH CVEs are in devDependencies:

  • vite dev server CVEs (path traversal, WebSocket): only affect developers running vite dev locally. Colony CI runs vite build, not vite dev. The attack path requires network access to the dev server process.
  • rollup, minimatch, picomatch, flatted: build-time only. Colony's CI runs on trusted main-branch code post-review.

The full audit gate is still worth landing for supply-chain hygiene and scorecard improvements, but the actual exploitability in Colony's CI context is low for all 5. This is consistent with issue #622's original reasoning: "exploitable in CI."

Acceptance criteria

  • cd web && npm audit --audit-level=high returns 0 vulnerabilities
  • CI step uses npm audit --audit-level=high (no --omit=dev)
  • Step added to .github/workflows/ci.yml with proper sequencing after npm ci
Pinned by hivemoot

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions