Skip to content

v1: clear remaining npm audit advisories (ip-address reachable; hono, @hono/node-server, fast-uri, brace-expansion present but unreachable) #2074

Description

@cliffhall

Summary

npm audit against v1/main reports 7 advisories beyond the js-yaml one in #2072. This issue covers the five that are present in the production dependency tree, plus two dev-only stragglers needed to actually reach a clean audit.

Triage conclusion up front: only one of the five is meaningfully reachable. The other four are installed-but-unexercised. None of them individually forces a v1 release; the value here is a clean npm audit so that a future genuine advisory isn't lost in the noise.

Reachable

ip-address <=10.3.0 (high)

server/src/index.ts:43 builds sandboxRateLimiter from express-rate-limit, which calls new Address6(ip) and new Address6(\${ip}/${ipv6Subnet}`) for IPv6 subnet keying (express-rate-limit/dist/index.mjs:3,6,9`). Two of the three advisories are precisely about CIDR-suffix and IPv4-mapped/NAT64 misclassification.

Realistic impact in this codebase is a rate-limit key bypass on /sandbox, not the SSRF the advisory titles imply: req.ip derives from the socket under default trust-proxy settings and the proxy binds localhost. Worth fixing, modest severity in context.

Present in the production tree but not reachable

Package Advisory Why it doesn't bite here
hono <=4.12.33 (mod) ReDoS in CORS middleware; memo() SSR cross-user disclosure; proxy helper Connection headers; language middleware DoS All four are in middleware. The inspector has no direct hono usage — it arrives only beneath @hono/node-server, and none of that middleware is wired up.
@hono/node-server <1.19.15 (mod) Path traversal in serve-static on Windows via encoded backslash (%5C) The SDK's server/streamableHttp.js imports only getRequestListener. serve-static is never touched.
fast-uri 3.0.0 - 3.1.4 (high) Host confusion via backslash authority delimiter Reached via ajv under the SDK for format: "uri" schema checks. Exploitation needs a validated URI to then be trusted for a host decision; no such path exists here.
brace-expansion <=1.1.17 (high) DoS via unbounded expansion / intermediate arrays Reached via serve-handler -> minimatch@3.1.5 in client/bin/client.js:6. At serve-handler/src/index.js:59 the call is minimatch(resolvedPath, slashed): the attacker controls the path, but brace-expansion expands the pattern, which comes from config. Not attacker-controlled.

Dev-only

nanoid <3.3.18 and postcss <=8.5.22 both return empty from npm ls --omit=dev (vite/tailwind build chain). Included only so the audit actually reaches zero.

Fix

Every patched release exists within the current major line, so no major upgrades are required:

Package From To
ip-address 10.2.0 10.5.0
hono 4.12.30 4.13.3
@hono/node-server 1.19.14 1.19.17
fast-uri 3.1.3 3.1.5
brace-expansion 1.1.16 / 5.0.7 1.1.18 / 5.0.9
nanoid 3.3.16 3.3.18
postcss 8.5.19 8.5.26

@hono/node-server is deliberately held at 1.19.17, not the current 2.1.1 — a major bump has no place on a deprecated branch.

As with #2072, the lock entries are patched in place rather than re-resolved, keeping the diff to the affected packages only.

Verification

npm audit reports 0 vulnerabilities. Build, lint, and all suites pass (539 client + 37 server + 85 CLI). The app starts, serves the client through serve-handler (the brace-expansion path), gates proxy auth correctly, and completes a full MCP tools/list + tools/call round-trip through the CLI. The rate limiter — the ip-address consumer — was exercised directly and observed decrementing (X-RateLimit-Remaining: 89 of 100).

Activity

  1. self-assigned this
    on Aug 22, 2026
  2. added 6 commits that reference this issue on Aug 24, 2026
    a62c788
    9223b70
    d308524
    4d4b3d8
    e143bc4
    85abfd4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

dependenciesPull requests that update a dependency filev1

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions