Skip to content

Override hono, and drop the audit floor to the one Dependabot alerts on - #31

Merged
illodev merged 1 commit into
mainfrom
fix/t-0222-hono-and-the-audit-floor
Aug 7, 2026
Merged

Override hono, and drop the audit floor to the one Dependabot alerts on#31
illodev merged 1 commit into
mainfrom
fix/t-0222-hono-and-the-audit-floor

Conversation

@illodev

@illodev illodev commented Aug 7, 2026

Copy link
Copy Markdown
Owner

Closes the Dependabot alert that had been open for days, and the reason it stayed open.

The advisory

GHSA-8j4g-w8fx-2239 — ReDoS in hono's CORS middleware via Access-Control-Request-Headers, moderate, patched in 4.12.34. One path: shadcn@modelcontextprotocol/sdk@hono/node-serverhono, and shadcn is a devDependency. Nothing published reaches it, so this is the honest kind of override — same class as fast-uri and js-yaml, opposite of the sharp/adm-zip entries T-0221 had to delete.

The better fix, checked and ruled out

Removing shadcn from devDependencies would have taken hono out of the graph entirely, plus one of two fast-uri paths and one js-yaml path — a much better outcome than another pin. docs/ui.md teaches pnpm dlx shadcn@latest add <component> and no script invokes a local shadcn binary, so it looked unused.

It is not. ui/src/styles.css has @import "shadcn/tailwind.css", which resolves to shadcn/dist/tailwind.css and carries the scroll-fade-* utilities that Boards, Memory and attachment.tsx use — the rules are in the built CSS, checked rather than assumed. The package is load-bearing at build time, not just tooling.

Why it sat there for days

This is the part worth reviewing. The gate ran at --audit-level=high; Dependabot alerts at moderate. So this advisory could never turn anything red — it went to the security tab, where nothing fails and nobody is obliged to look. A gate whose floor sits above the floor of something that already reports guarantees a backlog somewhere else.

Both audits now block at moderate: the workspace pnpm audit job and the consumer-tree gate.

It cost nothing today — both trees audit clean at low, so this is not papering over a current reading. What it will cost is stated in ADR-0021 and CHG-0150: an advisory published against a transitive devDependency will now turn unrelated pull requests red until an override lands. That is the same trade the no-allowlist posture already made, and it is the one that produced the real fix in T-0221.

One-line revert if you decide the noise is not worth it: put high back in ci.yml, check:release, and THRESHOLD in scripts/audit-consumer.ts.

Also

scripts/audit-consumer.ts had a stale header describing the sharp and adm-zip overrides as present, after T-0221 removed them. Corrected — a record that lies is worse than none.

Verification

  • pnpm audit --audit-level=moderate and --audit-level=low: no known vulnerabilities.
  • pnpm why hono: 4.13.1 through the single path above.
  • pnpm run audit:consumer: clean at moderate and above, nothing below.
  • pnpm run check: 465 + 10 tests pass, strict ratchet held at 488.

🤖 Generated with Claude Code

https://claude.ai/code/session_01D3LTdq3mzMAQ98rwBegGjU

GHSA-8j4g-w8fx-2239, ReDoS in hono's CORS middleware, moderate, patched in
4.12.34. Dependabot alert 4 on the default branch, and it had been sitting
there for days.

The path is one: `shadcn` → `@modelcontextprotocol/sdk` →
`@hono/node-server` → `hono`, and `shadcn` is a devDependency. Nothing
published reaches it, so this is the honest kind of override — the same class
as `fast-uri` and `js-yaml`, and the opposite of the `sharp` and `adm-zip`
entries T-0221 had to remove.

The better fix was checked first and does not exist. `docs/ui.md` teaches
`pnpm dlx shadcn@latest add`, no script invokes a local `shadcn` binary, and
removing the devDependency would have taken `hono` out of the graph along
with one of two `fast-uri` paths and one `js-yaml` path. But
`ui/src/styles.css` imports `shadcn/tailwind.css`, which resolves to
`shadcn/dist/tailwind.css` and carries the `scroll-fade-*` utilities Boards,
Memory and `attachment.tsx` use — the rules are in the built CSS. The package
is load-bearing at build time, not just tooling.

And the half that matters more than hono. The gate ran at
`--audit-level=high` while Dependabot alerts at `moderate`, so this advisory
could never turn anything red: it went to the security tab and stayed there.
That is why it went unaddressed for days, and it had nothing to do with hono.
A gate whose floor sits above the floor of something that already reports
guarantees a backlog somewhere nobody is obliged to look.

Both audits now block at `moderate`. It cost nothing today — both trees audit
clean at `low` — and the cost to expect is stated: an advisory against a
transitive devDependency will now turn unrelated pull requests red until an
override lands. Same trade the no-allowlist posture already made.

Also corrects `scripts/audit-consumer.ts`, whose header still described the
`sharp` and `adm-zip` overrides as present after T-0221 removed them.

Cards: T-0222
Decisions: ADR-0021
Changelog: CHG-0150

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D3LTdq3mzMAQ98rwBegGjU
@vercel

vercel Bot commented Aug 7, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
workfile Ready Ready Preview Aug 7, 2026 6:41pm
workfile-site Ready Ready Preview Aug 7, 2026 6:41pm

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