Skip to content

fix(deps): patch critical/high CVEs - #37

Merged
RubenGlez merged 2 commits into
mainfrom
security/cve-fixes-2026-11-06
Nov 7, 2026
Merged

RubenGlez merged 2 commits into
mainfrom
security/cve-fixes-2026-11-06

Conversation

@RubenGlez

@RubenGlez RubenGlez commented Nov 6, 2026 •

Copy link
Copy Markdown
Owner

Summary

Patches critical and high severity vulnerabilities reported by pnpm audit, using the smallest upgrade within the same major version (no breaking major bumps).

  • Direct dependencies: version range bumped in package.json.
  • Transitive dependencies: scoped overrides (only the vulnerable range is redirected).
Advisory Package Severity Version
GHSA-2464-fhr4-w9xw next critical 16.2.11 → ≥16.4.1
GHSA-2xp9-vwfh-vxw4 next critical 16.2.11 → ≥16.4.1
GHSA-673q-mjm6-r5xr next critical 16.2.11 → ≥16.4.1
GHSA-jqcg-44mw-7w3h proxy-addr critical 2.0.7 → ≥2.0.8
GHSA-p293-qw3h-jr36 next critical 16.2.11 → ≥16.4.1
GHSA-v5rq-49vh-5v5c promptfoo (apps/evals) critical 0.121.19 → ≥0.125.1
GHSA-vcvr-r3jv-pc5j next critical 16.2.11 → ≥16.4.1
GHSA-x6jw-m9v5-85vh promptfoo (apps/evals) critical 0.121.19 → ≥0.125.1
GHSA-22jm-h49p-29qw @modelcontextprotocol/sdk high 1.29.0 → ≥1.32.0
GHSA-27p8-2357-5qqv @xmldom/xmldom high 0.9.10 → ≥0.9.12
GHSA-27r3-jxmh-p828 body-parser high 2.2.2 → ≥2.4.0
GHSA-2883-xcg3-v3hh js-yaml high 4.3.1 → ≥4.3.2
GHSA-2gc4-cqfq-p2gv engine.io high 6.6.8 → ≥6.6.10
GHSA-2m5v-pch6-74hx undici high 7.28.0 → ≥7.30.1
GHSA-2m8v-j782-fhvr socket.io-parser high 4.2.6 → ≥4.2.7
GHSA-3pq3-5fj3-cg6v axios high 1.18.1 → ≥1.20.0
GHSA-3px3-54cx-rmw9 @xmldom/xmldom high 0.9.10 → ≥0.9.12
GHSA-46jr-4wx8-v453 @modelcontextprotocol/sdk high 1.29.0 → ≥1.32.0
GHSA-4cwx-7wf7-3272 undici high 7.28.0 → ≥7.30.1
GHSA-4w3w-2rp5-g8jm @xmldom/xmldom high 0.9.10 → ≥0.9.12
GHSA-4w7w-5xrc-9h26 undici high 7.28.0 → ≥7.30.1
GHSA-542g-h47m-68v8 axios high 1.18.1 → ≥1.20.0
GHSA-587h-7wmj-h5pm vite high 8.1.0 → ≥8.1.6
GHSA-5jgf-p345-68v8 fast-uri high 3.1.4 → ≥3.1.9
GHSA-5x38-2vff-x55p node-forge high 1.4.0 → ≥1.4.1
GHSA-667r-xxjv-c9mm fastify high 5.8.5 → ≥5.12.5
GHSA-68fv-2mgg-jv7q source-map-js high 1.2.1 → ≥1.2.2
GHSA-6j4f-fj2g-mc7p brace-expansion high 5.0.8 → ≥5.0.12
GHSA-6mj3-qw4j-hgrw @xmldom/xmldom high 0.9.10 → ≥0.9.12
GHSA-6qxp-vccf-f47h @modelcontextprotocol/sdk high 1.29.0 → ≥1.32.0
GHSA-73wf-gq98-2v4g browserslist high 4.28.2 → ≥4.28.7
GHSA-7p8r-x3mc-p8w7 fast-uri high 3.1.4 → ≥3.1.9
GHSA-7q85-xj36-vmfc adm-zip high 0.6.0 → ≥0.6.1
GHSA-7wch-p9px-956x node-forge high 1.4.0 → ≥1.4.1
GHSA-8238-w5pm-2374 adm-zip high 0.6.0 → ≥0.6.1
GHSA-8344-3jmq-59r6 @xmldom/xmldom high 0.9.10 → ≥0.9.12
GHSA-858h-whjf-mvg5 promptfoo (apps/evals) high 0.121.19 → ≥0.125.1
GHSA-86w9-cpqp-85rv node-forge high 1.4.0 → ≥1.4.1
GHSA-8hrf-8g6f-7xwp node-forge high 1.4.0 → ≥1.4.1
GHSA-8r9p-f939-6h3c follow-redirects high 1.16.0 → ≥1.16.2
GHSA-93r5-fhx6-vmg9 @xmldom/xmldom high 0.9.10 → ≥0.9.12
GHSA-9643-4qgh-g8mx elysia high 1.4.28 → ≥1.4.29
GHSA-965w-775f-mr7g @xmldom/xmldom high 0.9.10 → ≥0.9.12
GHSA-9q9j-q6p8-xq58 fastify high 5.8.5 → ≥5.12.5
GHSA-c29m-xwm3-cm6r axios high 1.18.1 → ≥1.20.0
GHSA-c7q8-3ch8-vqpv @xmldom/xmldom high 0.9.10 → ≥0.9.12
GHSA-c83g-rgw3-j3cx browserslist high 4.28.2 → ≥4.28.7
GHSA-cjq9-62q9-8jv4 next high 16.2.11 → ≥16.4.1
GHSA-f65p-4m7j-42xc fast-uri high 3.1.4 → ≥3.1.9
GHSA-f897-62hf-6gxq @modelcontextprotocol/sdk high 1.29.0 → ≥1.32.0
GHSA-fph4-wmhf-6fwf fast-uri high 3.1.4 → ≥3.1.9
GHSA-g4wm-2vf7-vfgr promptfoo (apps/evals) high 0.121.19 → ≥0.125.1
GHSA-g53g-w8rj-fmg7 @xmldom/xmldom high 0.9.10 → ≥0.9.12
GHSA-hqq3-7jhf-c5jx node-forge high 1.4.0 → ≥1.4.1
GHSA-hwr6-493r-vm6h fastify high 5.8.5 → ≥5.12.5
GHSA-j5f4-cc29-5x44 adm-zip high 0.6.0 → ≥0.6.1
GHSA-jc66-7q78-782g node-forge high 1.4.0 → ≥1.4.1
GHSA-jqff-g426-hqxp fast-uri high 3.1.4 → ≥3.1.9
GHSA-m8m8-qj5v-23w3 axios high 1.18.1 → ≥1.20.0
GHSA-mghh-pgcx-3jjj axios high 1.18.1 → ≥1.20.0
GHSA-mrhx-c7xc-m3w5 zod high 4.4.3 → ≥4.6.6
GHSA-mrwp-f3q8-3g9p follow-redirects high 1.16.0 → ≥1.16.2
GHSA-mwp4-54f8-5fhr ip-address high 10.2.0 → ≥10.7.4
GHSA-p3m5-59mp-jv5r next high 16.2.11 → ≥16.4.1
GHSA-p68q-wchp-6fh7 fastify high 5.8.5 → ≥5.12.5
GHSA-q3jh-wrc6-jgq8 follow-redirects high 1.16.0 → ≥1.16.2
GHSA-qhr7-859c-m2p7 brace-expansion high 5.0.8 → ≥5.0.12
GHSA-qrxm-fqhp-jwvm undici high 7.28.0 → ≥7.30.1
GHSA-qw65-cvwx-89v3 fast-uri high 3.1.4 → ≥3.1.9
GHSA-r4gj-5m52-g5wh axios high 1.18.1 → ≥1.20.0
GHSA-rcw4-f5rp-g42v adm-zip high 0.6.0 → ≥0.6.1
GHSA-rfgv-xxqx-mfg5 undici high 7.28.0 → ≥7.30.1
GHSA-rgj7-g3m4-5g8c sharp high 0.35.3 → ≥0.35.5
GHSA-rgw5-rvv9-x895 brace-expansion high 5.0.8 → ≥5.0.12
GHSA-vc2v-76pw-4v95 compression high 1.8.1 → ≥1.8.2
GHSA-vr34-hp96-76pp @xmldom/xmldom high 0.9.10 → ≥0.9.12
GHSA-w293-vg96-wgc3 undici high 7.28.0 → ≥7.30.1
GHSA-w2rr-34g9-rvrj @xmldom/xmldom high 0.9.10 → ≥0.9.12
GHSA-wq5f-xc86-pv6w sharp high 0.35.3 → ≥0.35.5
GHSA-x97p-jq2g-jp4f axios high 1.18.1 → ≥1.20.0
GHSA-xjj6-f33q-929c undici high 7.28.0 → ≥7.30.1

Not fixed (requires a major upgrade)

Package Installed Advisories Patched in
basic-ftp 5.3.1 HIGH GHSA-c475-qrg2-pj4r >=6.2.1
zod 3.25.76 HIGH GHSA-mrhx-c7xc-m3w5 >=4.6.6
@azure/msal-node 5.2.2 HIGH GHSA-xcx6-jx8p-x3h5 >=7.1.0

Verification

  • pnpm audit: 8 critical + 75 high → 0 critical, 3 high remaining (all need major upgrades, see above)
  • promptfoo (apps/evals only, not shipped) bumped 0.121 → 0.125 to pull simple-git 4.x — the only fix for 2 critical advisories. Eval runs need API keys and were not executed.
  • Local (Node 24, pnpm 11): build ✅ lint ✅ typecheck ✅ test ✅ — same as on main.
  • CI step pnpm audit --audit-level=high --prod may still fail because of the remaining zod 3 advisory in apps/dashboard.

Generated by Claude Code

Summary

Clears critical and high advisories on main without disabling CI gates. pnpm audit on this head reports 0 critical and 0 high (5 low, 23 moderate left untouched).

Two commits:

  1. 4818fdc — same-major upgrades and scoped overrides for the criticals and the highs that had a fix inside the current major.
  2. 329256a — the three highs that remained, all of which need a newer major somewhere in the chain, plus the Zod 4 call-site fixes required for that bump to typecheck.

CI on 4818fdc (diagnosed, not re-labeled)

Check Result Cause
CI — typecheck, build, test fail Build, lint, typecheck, and unit tests passed. The job failed on the last step, pnpm audit --audit-level=high --prod, solely on zod@3.25.76 / GHSA-mrhx-c7xc-m3w5 (high, patched >=4.6.6).
AI spec accuracy gate fail deepseek/deepseek-chat mean 0.571 (threshold 0.85). Six fixtures scored 0 with unparseable model output: invalid JSON after 3 attempts. openai/gpt-4o and anthropic/claude-haiku-4-5-20251001 scored 1.000. @ai-sdk/deepseek stayed 2.0.35 (same resolution as main); the generator was not edited in 4818fdc. Treated as a provider-output failure, not a dependency break. The gate threshold was not changed and the check was not skipped. This follow-up touches packages/core/**, so the gate runs again.
dependency-review pass unchanged

Audit sources

pnpm audit (npm advisory database, pnpm 11.15.1), not GitHub alert counts.

Tree critical high moderate low
main 972d256 8 75 74 16
4818fdc 0 3 25 5
329256a (this head) 0 0 23 5
329256a --prod (the CI gate) 0 0 4 2

GitHub alert APIs were queried and are not evidence of “zero vulnerabilities”:

  • REST dependabot/alerts → HTTP 403, body Dependabot alerts are disabled for this repository. Header X-Accepted-Github-Permissions: vulnerability_alerts=read.
  • GraphQL vulnerabilityAlerts returned totalCount: 0. With alerts disabled, that empty result is not a clean bill of health.
  • A Dependabot security-update job on main (run 42248480944) did list the same vulnerable packages and failed in the updater. Severities below come from the public GitHub Advisory API and from pnpm audit.

Highs fixed in 329256a

Advisory Severity Package From To Notes
GHSA-mrhx-c7xc-m3w5 (CVE-2023-54404) high zod 3.25.76 4.6.7 (^4.6.6, published 2026-10-12) Direct dep of @easydocs/core and @easydocs/dashboard, and the peer resolved by ai / @ai-sdk/*. No 3.x release is patched (<4.6.6). Override zod@<4.6.6 covers any older copy.
GHSA-c475-qrg2-pj4r (CVE-2026-102990) high basic-ftp 5.3.1 6.2.6 (published 2026-11-04) Dev-only: apps/evals > promptfoo > proxy-agent > pac-proxy-agent > get-uri. get-uri still declares ^5.3.1; 6.2.6 keeps Client.access / list / lastMod / downloadTo / close.
GHSA-xcx6-jx8p-x3h5 (CVE-2026-109461) high @azure/msal-node 5.2.2 7.2.0 Optional dev path: promptfoo > @azure/ai-projects > @azure/identity. Identity 4.14.1 (published 2026-10-29) is the 4.x release that depends on @azure/msal-node ^7.1.0. @azure/ai-projects@2.2.0 allows ^4.13.0. Identity loads; msal-node@7.2.1 was skipped by minimumReleaseAge: 1440 (published 2026-11-06 23:51Z).

Zod 4 call sites, no behavior change intended:

  • z.record(value) → z.record(z.string(), value) in OperationSchema (Zod 4 requires the key schema).
  • Dashboard SpecEditor reads ZodError.issues (errors was removed). Message shape: responses.200.description: Invalid input: expected string, received undefined.
  • .strict() on config objects still rejects unknown keys.

Already fixed on 4818fdc (still in this branch)

Critical: next (GHSA-2464-fhr4-w9xw, GHSA-2xp9-vwfh-vxw4, GHSA-673q-mjm6-r5xr, GHSA-p293-qw3h-jr36, GHSA-vcvr-r3jv-pc5j) via >=16.4.1 (resolved 16.4.5); proxy-addr GHSA-jqcg-44mw-7w3h >=2.0.8; simple-git / @simple-git/argv-parser (GHSA-x6jw-m9v5-85vh, GHSA-v5rq-49vh-5v5c) via promptfoo 0.121.19 → 0.125.1 in private apps/evals only.

Highs cleared there include @modelcontextprotocol/sdk, @xmldom/xmldom, adm-zip, axios, body-parser, brace-expansion, browserslist, compression, elysia, engine.io, fast-uri, fastify, follow-redirects, ip-address, js-yaml, node-forge, sharp, socket.io-parser, source-map-js, undici, vite, and the simple-git highs. Versions are the scoped overrides in pnpm-workspace.yaml.

Verification on this head (Node 24.22.2, pnpm 11.15.1)

  • pnpm install --frozen-lockfile — pass
  • pnpm --filter './packages/*' build — pass
  • pnpm lint — pass (including dashboard)
  • pnpm typecheck — pass (dashboard failed once on ZodError.errors, then passed after the .issues fix)
  • pnpm test — pass (core 18 files, express/fastify/elysia/hono/h3/nestjs 1 each, nextjs 2, trpc 3, cli 2)
  • pnpm audit --audit-level=high and --prod — exit 0
  • basic-ftp Client methods used by get-uri are present on 6.2.6
  • @azure/identity@4.14.1 imports and declares @azure/msal-node ^7.1.0 (installed 7.2.0)

The accuracy gate was not re-run locally: DEEPSEEK_API_KEY, OPENAI_API_KEY, and ANTHROPIC_API_KEY are unset in this environment. It is still required in CI. Not merged.

Moderate and low advisories were not patched on purpose. The moderate count dropped 25 → 23 only because the identity/msal override replaced that subtree.

Open in Web Open in Cursor 

Minimal same-major upgrades for vulnerable dependencies reported by pnpm audit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014XqKqjvyaMENCpGUFQqRHd

Copy link
Copy Markdown
Owner Author

Automated review — not merged. Diff reviewed (scoped same-major overrides + promptfoo 0.121→0.125 in apps/evals for the simple-git critical). 8 critical + 75 high → 0 critical, 3 high. Local build/lint/typecheck/test pass (Node 24, pnpm 11), same as main.

CI failures:

  1. pnpm audit --audit-level=high --prod: remaining zod 3 advisory in apps/dashboard (direct dep; fix needs a zod 4 migration).
  2. AI spec accuracy gate: LLM returned unparseable output ("Failed to generate a valid OpenAPI Operation after 3 attempts"). The gate (matrix.ts) does not use promptfoo; it could not be reproduced locally (needs API keys). It last ran green on main on 2026-08-14. Worth a re-run before merging.

Generated by Claude Code

Zod 3.25.76, basic-ftp 5.3.1, and @azure/msal-node 5.2.2 were still high
after the first remediation and the prod audit gate failed on zod.
Move direct zod ranges to ^4.6.6, override the vulnerable transitive
copies, and adapt OperationSchema plus the dashboard editor to Zod 4.

Co-authored-by: Ruben Glez. <RubenGlez@users.noreply.github.com>
@RubenGlez
RubenGlez merged commit 8ddd921 into main Nov 7, 2026
2 of 3 checks passed
@RubenGlez
RubenGlez deleted the security/cve-fixes-2026-11-06 branch November 7, 2026 16:44
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.

3 participants