Skip to content

fix(deps): retarget four security overrides whose keys had gone inert - #869

Merged
choraria merged 1 commit into
mainfrom
chore/security-overrides-2026-08-05
Aug 5, 2026
Merged

fix(deps): retarget four security overrides whose keys had gone inert#869
choraria merged 1 commit into
mainfrom
chore/security-overrides-2026-08-05

Conversation

@choraria

@choraria choraria commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Clears all 8 open Dependabot alerts (2 high, 6 moderate). No Dependabot PR exists for these — every
one is a transitive dep governed by the overrides block, which Dependabot can't author a patch
for. The updater job ran and opened nothing.

Root cause: four pins had silently gone inert

Every one of these packages was already pinned. All four keys stopped matching when their
advisory moved the fix floor above the key's fixed — the exact failure mode the block's own CAUTION
comment describes:

key tree sat at new floor matched?
undici@<7.28.0 exactly 7.28.0 7.29.0 ✗ key can't match its own boundary
fast-uri@<3.1.3 3.1.4 3.1.5 ✗ drifted above the ceiling
hono@<4.12.27 4.12.32 4.12.34
postcss: 8.5.18 (bare) 8.5.18 8.5.23 ✗ bare pin is a floor and a ceiling

pnpm reports nothing when a key goes inert, and overrides-guard only proves a pin moved the
tree
— it explicitly disclaims advisory drift ("Dependabot's job, not this guard's"). So the tree
sat vulnerable behind a green guard. Retargeted, not widened; each key still touches only its
vulnerable band.

Reachability — re-measured, not carried forward

The bundle census in the comment block was 521 inputs; it's 648 now, so the old numbers couldn't
be assumed forward. Re-run via wrangler deploy -c apps/mcp/wrangler.jsonc --dry-run (3,295,870 bytes):

  • fast-uri — 3 of 648, genuinely ships. The new advisory is host confusion via a backslash
    authority introducer. Reached only as ajv's uriResolver for schema $id/$ref — re-verified:
    the sole call sites are dist/compile/resolve.js and the dist/core.js default, and ajv-formats
    3.0.1 still implements format: "uri" as a regex and never calls it. Request payloads never reach
    fast-uri's host parser, so the HIGH rating (which is about gating on a parsed host) doesn't carry
    over. ^3.1.5 is in-range for ajv's ^3.0.1.
  • hono — 0 of 648. Re-measured rather than inherited, because the CORS ReDoS is a different code
    path
    from the JSX advisories the earlier census covered. Resolves to 4.13.0, in-range for both the
    SDK's ^4.11.4 and @hono/node-server's ^4.12.8.
  • undici — 0 of 648. Two copies, only one vulnerable: miniflare's 7.28.0 (in-band) and jsdom's
    8.9.0, which is already at the 8.x fix floor — all five advisories list >= 8.0.0, < 8.9.0 → 8.9.0. The <7.29.0 key deliberately leaves the 8.x copy alone.
  • postcss — 0 of 648. Build-time only, first-party stylesheets.

The one pin that changes executed code

undici is the only one of the four that touches something we actually run, and it crosses an exact
declared version — miniflare pins undici: 7.28.0, not a range. A bad outcome there surfaces as a
test flake, not a build error, so it was verified rather than assumed: apps/engine (35 files / 460
tests) run 3x on each side — 460/460 passed all six times.

An EnvironmentTeardownError appears in the log nondeterministically. A single A/B sample made it
look like the bump caused it (2 occurrences with, 0 without) — it doesn't. Three runs per side:
7.28.0 emitted it in 2 of 3 runs, 7.29.0 in 0 of 3. Pre-existing race, unrelated to this change.

Test plan

Full gate, TURBO_FORCE=true throughout:

  • pnpm lint — 997/997 · format:check clean · typecheck 33/33 · test 29/29 · build 24/24
  • pnpm no-skipped-tests — clean
  • pnpm overrides-guard — all 14 pins documented and moved; no copy below its floor across 1290 packages
  • apps/engine 3x per side of the undici bump (see above)
  • pre-push hook — full gate incl. db:test

All four `name@<fixed` keys stopped matching when their advisories moved
the fix floor above `fixed` — the exact failure mode the block's own
CAUTION comment describes. pnpm reports nothing when this happens, and
overrides-guard only proves a pin MOVED the tree, not that its floor
still matches the current advisory, so the tree sat vulnerable behind a
green guard.

  postcss  8.5.18       -> 8.5.23   (GHSA-fxqj-rqcc-2cmp)
  undici   <7.28.0      -> <7.29.0  (5 advisories, 1 high)
  fast-uri <3.1.3       -> <3.1.5   (GHSA-7p8r-x3mc-p8w7, high)
  hono     <4.12.27     -> <4.12.34 (GHSA-8j4g-w8fx-2239)

Clears all 8 open Dependabot alerts. Reachability re-measured against
the real deployed MCP bundle rather than carried forward: 648 inputs now
(was 521), fast-uri 3, hono 0, undici 0, postcss 0.
@choraria
choraria merged commit de3aa4e into main Aug 5, 2026
39 checks passed
@choraria
choraria deleted the chore/security-overrides-2026-08-05 branch August 5, 2026 07:59
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