Skip to content

chore(deps): raise fast-uri and qs override floors past open advisories - #900

Closed
MBombeck wants to merge 1 commit into
mainfrom
chore/dependency-audit-fixes
Closed

chore(deps): raise fast-uri and qs override floors past open advisories#900
MBombeck wants to merge 1 commit into
mainfrom
chore/dependency-audit-fixes

Conversation

@MBombeck

@MBombeck MBombeck commented Sep 2, 2026

Copy link
Copy Markdown
Owner

The Dependency Audit job has been failing on every open PR — #892, #893 and #899 all show it red while everything else is green. It is not their fault: pnpm audit --prod --audit-level=high is red on main too. Six advisories, two transitive packages.

fast-uri 3.1.5 → 3.1.6 (4× high)
Percent-encoded scheme normalization and skipped IDN handling let a crafted URL read as a different host than the one it actually resolves to — the exact confusion class isPublicUrl exists to catch. Both copies arrive under ajv, pulled in by @hookform/resolvers and the MCP SDK.
GHSA-jqff-g426-hqxp, GHSA-5jgf-p345-68v8, GHSA-f65p-4m7j-42xc, GHSA-fph4-wmhf-6fwf

qs 6.15.3 → 6.16.0 (2× moderate)
Bracket-key comma parsing walks around arrayLimit, and an attacker-controlled isBuffer turns a request body into a hang. This copy is express 5's, reached through the MCP SDK's HTTP transport, so it sits on a request path rather than a build path. body-parser asks for ^6.15.2 and express for ^6.14.0, so 6.16.0 satisfies both without a major.
GHSA-x5fp-wj9c-mxmx, GHSA-4mjr-xmp4-gh2g

Both bounds go into pnpm-workspace.yaml the same way as the ones already there, with a comment naming the advisory and the path it arrives on. Same minor line in both cases, and the lockfile moves exactly two packages.

Verification

  • pnpm audit --prod --audit-level=highNo known vulnerabilities found (was: 4 high, 2 moderate)
  • pnpm typecheck → clean
  • pnpm build → succeeds, 320 static pages
  • pnpm test → 22510 passing, 12 skipped. One timing flake in timezone-explicit-formatter-guard.test.ts (5s timeout on the grep guard, cold cache on this machine); passes on its own in 5.9s and is unrelated to either package.

Once this is on main, rebasing #892/#893/#899 should turn their Dependency Audit green.

`pnpm audit --prod --audit-level=high` has been red on every open PR,
which is why #892, #893 and #899 all show a failing Dependency Audit
while the rest of their checks are green. Six advisories, two packages,
both transitive:

- fast-uri 3.1.5 (4x high) — percent-encoded scheme normalization and
  skipped IDN handling let a crafted URL read as a different host than
  the one it resolves to. Arrives under ajv via @hookform/resolvers and
  the MCP SDK. Floor moved to 3.1.6.
- qs 6.15.3 (2x moderate) — bracket-key comma parsing walks around
  arrayLimit, and an attacker-controlled isBuffer turns a request body
  into a hang. This is express 5's copy under the MCP SDK's HTTP
  transport, so it sits on a request path. Floor moved to 6.16.0;
  body-parser asks for ^6.15.2 and express for ^6.14.0, so neither is
  dragged onto a new major.

Both bounds follow the existing pnpm-workspace.yaml pattern and stay on
the same minor line. Only two packages move in the lockfile.

Verified: pnpm audit --prod --audit-level=high reports no known
vulnerabilities, pnpm typecheck and pnpm build pass, and the unit suite
is 22510 passing.
@MBombeck

MBombeck commented Sep 3, 2026

Copy link
Copy Markdown
Owner Author

Same two floors, same versions, landed as part of #905 a couple of hours ago and merged with v1.38.5. Closing this one as already done rather than as wrong: it named exactly the right fixes. The lockstep guard that compares the workspace pins against the image's own install was widened in the same release, so a floor that is set in one place and not the other now fails loudly.

@MBombeck MBombeck closed this Sep 3, 2026
@MBombeck
MBombeck deleted the chore/dependency-audit-fixes branch September 3, 2026 02:02
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