Skip to content

chore: clear npm audit findings (15 -> 3)#725

Merged
ochafik merged 1 commit into
mainfrom
chore/security-updates
Jul 22, 2026
Merged

chore: clear npm audit findings (15 -> 3)#725
ochafik merged 1 commit into
mainfrom
chore/security-updates

Conversation

@ochafik

@ochafik ochafik commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Dependency-only security pass. npm audit: 15 findings (2 critical, 7 high, 4 moderate, 2 low) -> 3 (0 critical, 0 high, 3 moderate).

No source changes — package.json moves sharp only; everything else is lockfile.

Fixed

Package Change Advisory
shell-quote 1.8.3 -> 1.9.0 GHSA-w7jw-789q-3m8p (critical), GHSA-395f-4hp3-45gv
@babel/core 7.28.6 -> 7.29.7 GHSA-4x5r-pxfx-6jf8 (critical)
sharp ^0.34.5 -> ^0.35.3 GHSA-f88m-g3jw-g9cj (high; libvips CVE-2026-33327 / 33328 / 35590 / 35591)
brace-expansion 1.1.13 -> 1.1.16, 2.0.3 -> 2.1.2 GHSA-3jxr-9vmj-r5cp (high)
fast-uri 3.1.2 -> 3.1.4 GHSA-v2hh-gcrm-f6hx, GHSA-4c8g-83qw-93j6 (high)
hono 4.12.23 -> 4.12.31 8 advisories, incl. GHSA-88fw-hqm2-52qc, GHSA-hvrm-45r6-mjfj (high)
linkify-it 5.0.0 -> 5.0.2 GHSA-22p9-wv53-3rq4, GHSA-v245-v573-v5vm (high)
markdown-it 14.1.1 -> 14.3.0 GHSA-6v5v-wf23-fmfq
body-parser 2.2.2 -> 2.3.0 GHSA-v422-hmwv-36x6
type-is, undici, vite, other transitives see lockfile

The one non-trivial bump: sharp

sharp is a devDependency, used only by tests/e2e/generate-grid-screenshots.spec.ts, which is testIgnored unless GENERATE_SCREENSHOTS=1. The only breaking change in 0.35 is the Node floor moving to >=20.9.0 (CI runs Node 22), and the API used (png / resize / toFile) is unchanged.

Remaining 3 moderate — upstream, and not reachable here

All three are the same advisory, GHSA-frvp-7c67-39w9 (path traversal in @hono/node-server's serve-static on Windows), reported once each for @hono/node-server, @modelcontextprotocol/sdk and @modelcontextprotocol/ext-apps.

  • Fixed in @hono/node-server 2.0.5, but @modelcontextprotocol/sdk@1.29.0 (latest) pins ^1.19.9, so the range cannot reach it. Needs an upstream SDK bump.
  • npm audit fix --force "resolves" it by installing @modelcontextprotocol/sdk@1.24.3 — a downgrade, not a fix.
  • Not reachable from this repo: the SDK imports only getRequestListener and serve from @hono/node-server (server/streamableHttp.js), never serve-static. An overrides entry forcing v2 would put the streamable-HTTP transport at risk to silence a finding that cannot be triggered.

Verification

  • npm test — 374 pass, 1 skip, 0 fail
  • npm run build — clean
  • npm run prettier — clean
  • package-lock.json contains only registry.npmjs.org URLs

Non-breaking transitive updates via `npm audit fix`, plus a `sharp` major
bump. Takes `npm audit` from 15 findings (2 critical, 7 high, 4 moderate,
2 low) to 3 moderate.

Critical / high:

- shell-quote 1.8.3 -> 1.9.0 (GHSA-w7jw-789q-3m8p, GHSA-395f-4hp3-45gv)
- @babel/core 7.28.6 -> 7.29.7 (GHSA-4x5r-pxfx-6jf8)
- sharp ^0.34.5 -> ^0.35.3 (GHSA-f88m-g3jw-g9cj; libvips CVE-2026-33327,
  CVE-2026-33328, CVE-2026-35590, CVE-2026-35591)
- brace-expansion 1.1.16 / 2.1.2 (GHSA-3jxr-9vmj-r5cp)
- fast-uri 3.1.4 (GHSA-v2hh-gcrm-f6hx, GHSA-4c8g-83qw-93j6)
- hono 4.12.31 (8 advisories, incl. GHSA-88fw-hqm2-52qc, GHSA-hvrm-45r6-mjfj)
- linkify-it 5.0.2 (GHSA-22p9-wv53-3rq4, GHSA-v245-v573-v5vm)

Plus markdown-it 14.3.0, body-parser 2.3.0, type-is 2.1.0, undici 7.28.0
and vite 6.4.3.

sharp is a devDependency used only by tests/e2e/generate-grid-screenshots,
which is testIgnore'd unless GENERATE_SCREENSHOTS=1. The only breaking
change in 0.35 is the Node floor moving to >=20.9.0, and CI runs Node 22;
the API used (png / resize / toFile) is unchanged.

The 3 remaining findings are all the same advisory (GHSA-frvp-7c67-39w9,
path traversal in @hono/node-server's serve-static on Windows), reported
once each for @hono/node-server, @modelcontextprotocol/sdk and
@modelcontextprotocol/ext-apps. The fix is in @hono/node-server 2.0.5 but
sdk 1.29.0 pins ^1.19.9, so the range cannot reach it; that needs an
upstream bump. It is not reachable here either way — the SDK imports only
getRequestListener and serve from that package, never serve-static.
@ochafik
ochafik merged commit 7d49807 into main Jul 22, 2026
19 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