Override hono, and drop the audit floor to the one Dependabot alerts on - #31
Merged
Merged
Conversation
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
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This was referenced Aug 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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-server→hono, andshadcnis a devDependency. Nothing published reaches it, so this is the honest kind of override — same class asfast-uriandjs-yaml, opposite of thesharp/adm-zipentries T-0221 had to delete.The better fix, checked and ruled out
Removing
shadcnfrom devDependencies would have takenhonoout of the graph entirely, plus one of twofast-uripaths and onejs-yamlpath — a much better outcome than another pin.docs/ui.mdteachespnpm dlx shadcn@latest add <component>and no script invokes a localshadcnbinary, so it looked unused.It is not.
ui/src/styles.csshas@import "shadcn/tailwind.css", which resolves toshadcn/dist/tailwind.cssand carries thescroll-fade-*utilities that Boards, Memory andattachment.tsxuse — 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 atmoderate. 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 workspacepnpm auditjob 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
highback inci.yml,check:release, andTHRESHOLDinscripts/audit-consumer.ts.Also
scripts/audit-consumer.tshad a stale header describing thesharpandadm-zipoverrides as present, after T-0221 removed them. Corrected — a record that lies is worse than none.Verification
pnpm audit --audit-level=moderateand--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