fix(deps): patch vulnerable transitive dependencies - #70
Conversation
…frontend Lockfile-only updates via `npm audit fix`. No package.json changes — every bump stays inside the semver ranges already declared, so no API surface moves. frontend: 4 vulnerabilities (3 high, 1 low) -> 0. brace-expansion, protobufjs, @babel/core. functions: 65 -> 58. Patched protobufjs (7.6.5), fast-uri (3.1.6), and qs (6.15.3). Verified: frontend `npm run build` succeeds and 13/13 tests pass; functions typechecks and 60/60 tests pass. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
|
The three FOSSA checks are red, but this PR moves them substantially in the right direction. They are red because FOSSA's gate is binary — any remaining vulnerability fails it — and
That is the intended outcome of the change, not a regression. Going green would require eliminating all 45, which is blocked upstream — the remaining clusters are OpenTelemetry pinned by I looked for further safe remediation and did not find any:
One adjacent note: several of the remaining counts come from License Compliance is untouched and needs a policy call from you before any code change makes sense; the FOSSA inventory lists 33 licenses including GPL-2.0 variants, but does not say which 7 are flagged as violations. 🤖 Addressed by Claude Code |



Summary
Lockfile-only remediation of vulnerable transitive dependencies. No
package.jsonchanges — every bump stays inside the semver ranges already declared, so no declared API surface moves.frontend/functions/docs/Closes the following Dependabot alerts:
brace-expansion(×3),protobufjs(frontend + functions),@babel/core,fast-uri(×3),qs.Verification
frontend:npm run buildsucceeds, 13/13 tests passfunctions:npx tsc --noEmitclean, 60/60 tests passWhat is deliberately not fixed
Two clusters cannot be remediated by moving forward, and in both cases npm's suggested "fix" is a downgrade that would be worse than the vulnerability.
7 high alerts in
functions/— OpenTelemetry under genkitnpm audit fix --forceproposesgenkit@0.5.17. The project is ongenkit@1.41.0; that is a ~36-minor-version downgrade and would break the agents outright. Upgrading genkit does not help either — 1.41.0 is the latest and still pins@opentelemetry/auto-instrumentations-node@0.49.2→ OTel1.25.1/0.52.1, while the patches are on the OTel 2.x line.Forcing OTel 2.x through
overridesunder a genkit that expects the 1.x API risks breaking telemetry at runtime — and the unit tests would not catch it, since they exercise pure tool functions and never touch telemetry.The trade is not worth it, because none of these advisories are reachable in this application:
propagator-jaeger— DoS via malformed headersdk-node/auto-instrumentations-node— process crashcore— unbounded memory in W3C Baggagefunctions/src/ai.tsisgenkit({ plugins: [googleAI()] }). No Jaeger propagator, no Prometheus exporter, no google-cloud telemetry plugin. These sit in code paths the app never executes.Recommendation: leave them and revisit when genkit ships an OTel 2.x bump.
12 high alerts in
docs/— puppeteer, sharp, extract-zip under mintlifydocs/has exactly one devDependency,mintlify, and every alert is its transitive. This workspace is a local documentation-authoring tool (mintlify dev); it is adevDependencyand is never deployed.I tried upgrading to the newest release (4.2.800 → 4.2.819) and it changed nothing: the advisory range for mintlify is
>=4.2.146, so every current version is affected, andextract-ziphas no patched version published at all. npm's only proposal ismintlify@4.0.422, a downgrade of roughly 400 versions of the docs tooling.I reverted that experiment rather than leave pointless lockfile churn in the diff.
Recommendation: leave them; they are dev-only and blocked on mintlify upstream. The existing
upgrade-docs.ymlschedule will pick up a fix when one ships.Not addressed here
FOSSA's License Compliance check (7 issues) is untouched. The inventory shows GPL-2.0 variants among 33 licenses, but which of them are policy violations is a legal/business judgement, not a technical one — it needs a decision from you before any code change makes sense.
🤖 Generated with Claude Code