Skip to content

fix(deps): upgrade dependencies - #107

Merged
grandizzy merged 1 commit into
mainfrom
pyramid/c227908a-f71a-449d-be5a-20b83a1855ec
Nov 2, 2026
Merged

grandizzy merged 1 commit into
mainfrom
pyramid/c227908a-f71a-449d-be5a-20b83a1855ec

Conversation

@horsefacts

Copy link
Copy Markdown
Contributor

Fixes all 24 open Dependabot alerts on tip.bot (8 High, 14 Medium, 2 Low), plus the two Medium pnpm audit findings (glob, minimatch) that would otherwise fail CI's pnpm audit step.

Advisories fixed

Package Version change How Advisories
zod 4.4.3 / 4.6.5 → 4.6.6 package.json + zod: 4.6.6 override (mppx, MCP SDK, viem pulled 4.6.5) GHSA-mrhx-c7xc-m3w5 (High)
image-size 2.0.2 (locally patched) → 2.0.3 override; drops config/patches/image-size@2.0.2.patch, its patchedDependencies entry and the two auditConfig.ignoreGhsas exceptions GHSA-5p2g-fcmc-qvqq, GHSA-w3rx-r6r6-pgpr (High)
undici 7.29.1 → 7.30.1 override + packageExtensions GHSA-4w7w-5xrc-9h26, GHSA-2m5v-pch6-74hx, GHSA-qrxm-fqhp-jwvm, GHSA-xjj6-f33q-929c (High); GHSA-9fm3-97px-rjf6 (Medium)
toml 4.2.0 → 5.0.1 remark-mdx-frontmatter>toml override GHSA-4qx8-w7c3-pj3p, GHSA-9j65-hcg3-gc64, GHSA-9qmh-m7c6-f92p (High)
body-parser 2.3.0 → 2.4.0 override GHSA-27r3-jxmh-p828 (High)
follow-redirects 1.16.1 → 1.16.2 override GHSA-mrwp-f3q8-3g9p (High)
seroval 1.6.9 → 1.6.12 override GHSA-f86p-h4j2-7qgj, GHSA-9wx9-5pv9-3349 (Medium)
@hono/node-server 2.0.10 → 2.1.3 @hono/node-server@<2.1.3 override GHSA-rmxm-3fg6-px4f (Medium)
qs 6.16.0 → 6.16.2 override GHSA-6pq8-jhm2-2vcw (Medium)
fast-uri 3.1.8 → 3.1.9 override GHSA-w74x-v6f9-j3xg, GHSA-wjr9-j795-jxcr (Medium); GHSA-xhq7-xmqj-769h, GHSA-333x-w4r6-6crp (Low)
ip-address 10.7.1 → 10.7.4 override GHSA-rxp7-6hxx-x8q5 (Medium)
minimatch 5.1.9 / 9.0.9 → 11.0.3 readdir-glob>minimatch override GHSA-g3hv-75wg-m249 (Medium)
glob 10.5.0 → 14.0.2 archiver-utils>glob override GHSA-3g3m-2fjr-6pw4 (Medium, not a Dependabot alert yet; pnpm audit flags it)

All new versions are older than the repo's 1-day minimumReleaseAge, so no new minimumReleaseAgeExclude entries are needed. The stale excludes for the replaced versions (fast-uri@3.1.8, ip-address@10.7.1, undici@7.29.1) were removed. Comments in pnpm-workspace.yaml are kept.

glob and minimatch are major bumps, but they only affect dev and test code: testcontainers → archiver. archiver only calls glob.sync and new Minimatch(...), which glob 14 and minimatch 11 still export. I smoke-tested archiver('tar') with .glob() and .directory() on glob 14.0.2 and it worked.

src/lib/dependencyPatches.test.ts now loads image-size 2.0.3's dist/cjs and dist/esm builds (2.0.2 shipped .cjs/.mjs). It also has a regression check: a zero-length ICNS entry now throws, where 2.0.2 hung (checked against unpatched 2.0.2 with timeout 5).

Checks

  • pnpm install --frozen-lockfile (pnpm 11.0.7): pass
  • pnpm audit (the CI step): no vulnerabilities (before this PR it exited 1)
  • pnpm check: pass
  • pnpm check:types: pass
  • pnpm test: 15 files, 359 tests passed
  • pnpm build: pass
  • osv-scanner scan source -r .: no issues found
  • pnpm test:e2e: not run locally (needs Playwright browsers); left to CI

Exposure

  • zod (GHSA-mrhx-c7xc-m3w5): The OOM happens when a large array fails validation against an z.array schema. tip.bot uses array schemas only on Slack and X webhook bodies, and both are checked by HMAC signature before parsing: Slack at src/api.ts:1065, with its arrays at src/api.ts:1094 and src/lib/slack.ts:139 (used at src/chat.ts:285); X at src/api.ts:1041, which comes before Twitter.handleWebhook at src/api.ts:1047 and tweet_create_events: z.array at src/lib/twitter.ts:833. The public JSON validators in src/api.ts (hono.validator) have no array schemas. So an outside attacker cannot reach this path. Only Slack or X themselves, or someone holding the signing secrets, could send such a payload.
  • image-size (GHSA-5p2g-fcmc-qvqq, GHSA-w3rx-r6r6-pgpr): Not reachable in the live bot. It is a dependency of vocs, which tapimo uses for its docs app. tip.bot imports only tapimo/client (src/lib/tapimo.ts:2), and the pnpm build output does not contain image-size. The local patch already covered it, and this PR swaps the patch for the upstream fix.
  • toml, seroval, @hono/node-server, body-parser, qs, ip-address, fast-uri, follow-redirects, undici, glob, minimatch: These are pulled in by build or docs tooling (vocs, TanStack), test infrastructure (miniflare, testcontainers, prool, @slack/web-api dev tooling), or by Express/MCP-SDK paths in mppx and tapimo that the Worker does not serve. None of them handles attacker input on the bot's request path. seroval is in the TanStack Router SSR bundle, but it only serializes server-produced data.

Dependency scan (centaur-tempo dependency-scan)

  • osv-scanner on pnpm-lock.yaml: before this PR, 3 Medium (glob, 2× minimatch); after, none.
  • zizmor: no findings (17 ignored, 50 suppressed by the repo's config).
  • pinact: every action is pinned to a SHA. It suggests major upgrades (actions/checkout v7, cache v6, upload-artifact v7, setup-node v7). These are left out of this PR as a separate change.
  • No .github/dependabot.yml: alerts and security updates come from repo settings. Version updates and cooldown are not configured.
  • pnpm hardening: minimumReleaseAge: 1440, minimumReleaseAgeStrict, blockExoticSubdeps, strictDepBuilds and allowBuilds are set. trustPolicy: no-downgrade is not set.

@socket-security

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatedzod@​4.4.3 ⏵ 4.6.6100100 +1610095100

View full report

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I reviewed this PR and didn't find any bugs. A human should still take a look, because it changes runtime dependencies: zod moves from 4.4.3 to 4.6.6 and a global override puts viem, mppx and the MCP SDK on that same version. It also forces major-version bumps through overrides (toml 5, glob 14, minimatch 11).

What was reviewed:

  • pnpm-workspace.yaml: each new or bumped override has a matching lockfile entry. The image-size patch, its patchedDependencies entry and both ignoreGhsas exceptions are removed together, so no audit exception is left without its patch.
  • Lockfile: zod 4.4.3 and 4.6.5 collapse to 4.6.6 everywhere. glob 10's helper packages (jackspeak, foreground-child, path-scurry 1, minimatch 9) are dropped cleanly.
  • src/lib/dependencyPatches.test.ts: the image-size path now uses the dist/cjs and dist/esm folders, and a new check covers the zero-length ICNS hang (GHSA-w3rx-r6r6-pgpr).
Extended reasoning...

The change bumps dependency versions in package.json, pnpm-workspace.yaml and pnpm-lock.yaml, removes the local image-size patch in favor of upstream 2.0.3, and adjusts one regression test. It does not touch the bot's own code paths. However, zod is the runtime validator for webhook and API payloads, and the new global zod override also affects viem, mppx and the MCP SDK. Combined with three forced major-version bumps (toml under remark-mdx-frontmatter, glob and minimatch under archiver), that is enough to want a maintainer's look at compatibility. The bug hunt found nothing, and the overrides are documented in comments.

@github-actions

github-actions Bot commented Nov 1, 2026 •

Copy link
Copy Markdown

The latest Tipbot preview deployment for 5689943

Name Status Preview Updated (UTC)
pr107 Shut Down Shut Down pr107.tip.bot Nov 2, 2026, 4:02 PM

@grandizzy
grandizzy merged commit 017d200 into main Nov 2, 2026
9 checks passed
@grandizzy
grandizzy deleted the pyramid/c227908a-f71a-449d-be5a-20b83a1855ec branch November 2, 2026 16:01

This branch was previously deployed

1 inactive deployment
preview — 56899439 Deployed Nov 2, 2026 by grandizzy via Destroy #79
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.

2 participants