Skip to content

fix: Patch all open advisories in the activity UI - #294

Merged
ecv merged 4 commits into
mainfrom
fix/ui-security-advisories
Oct 26, 2026
Merged

ecv merged 4 commits into
mainfrom
fix/ui-security-advisories

Conversation

@ecv

@ecv ecv commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor

Summary

The activity UI carried 112 open Dependabot alerts (3 critical, 37 high, 56 medium, 16 low). This PR clears all but 2 medium ones by moving the lockfile and example app to patched releases. The published component library keeps these packages as peers, so the exposure sits in the example app, which also ships as the activity UI container image, and in the dev toolchain. It supersedes Dependabot PRs #207 and #218; #218 bumped Go modules that have no open alert.

Packages

Package Before After Note
vite 5.4.21 6.4.5 major, example dev server; Remix 2.17.5 accepts vite 6
esbuild 0.17.6, 0.21.5 0.25.12 Remix pins 0.17.6 exactly, so a global override
estree-util-value-to-estree 1.3.0 3.3.x major, override under remark-mdx-frontmatter
react-router, react-router-dom 6.30.4 6.30.6
@babel/core 7.29.0 7.29.6+
morgan 1.10.1 1.12.1+
postcss-selector-parser 7.1.1 7.1.6+
qs 6.14.2 6.16.x
valibot 1.2.0 1.4.2+
yaml 2.8.2 2.8.3+

The earlier commit on this branch (dompurify, proxy-addr, tar, undici, js-yaml, lodash, ws, toml and the other critical and high fixes) is unchanged.

Remaining

2 medium alerts on react-router 6.30.6, an open redirect in <Link> and an SSR hydration flaw, are patched only in react-router 7.18. Remix 2 cannot run on react-router 7 (the example build fails with it), so these wait for the example to move to React Router 7.

Test plan

  • Lint, library type-check, library build and example build pass locally
  • CI end-to-end suite

The UI workspace lockfile resolved packages carrying 3 critical and 54
high pnpm audit advisories, among them DOMPurify XSS bypasses in the
datum-ui and monaco-editor copies the example app bundles, a proxy-addr
trust bypass in its Express server, and a tar path-traversal chain in
its Remix tooling. The published library keeps these as peers, so
consumers resolve their own copies.

Key changes:
- Example app Remix ranges raised to ^2.17.5 and js-yaml to ^4.3.2
- In-range lockfile refresh of dompurify 3.4.17, proxy-addr 2.0.8,
  body-parser 1.20.9, compression 1.8.2, path-to-regexp 0.1.13,
  brace-expansion 1.1.21 and 2.1.7, browserslist 4.29.4, flatted 3.4.4,
  js-yaml 4.3.2, lodash 4.18.1, picomatch 2.3.2 and 4.0.7, undici
  6.29.1 and 8.12.3, ws 7.5.13
- Scoped overrides for parents that pin a vulnerable version:
  monaco-editor>dompurify ^3.4.17, typescript-estree>minimatch ^9.0.9,
  cacache>tar ^7.5.21 (cacache ships tar without loading it), and
  remark-mdx-frontmatter>toml ^5.0.1 (same parse API)
- zod leaves the lockfile. It was only an optional datum-ui peer that
  neither the library nor the example imports.

Three highs remain, all in the example app, which also ships as the
activity UI container image:
- turbo-stream 2.4.1, pinned exactly by Remix 2 with the fix only in
  3.x. The advisory needs Single Fetch, which the example leaves off.
- vite 5.4.21 (two advisories), the example's dev server, with no
  patched 5.x. Remix 2.17.5 accepts vite 6, so ^6.4.4 is the follow-up.
  vite is a dev dependency and stays out of the image.
@ecv
ecv force-pushed the fix/ui-security-advisories branch from 6f0ab82 to c071331 Compare October 25, 2026 00:29
@ecv
ecv marked this pull request as ready for review October 25, 2026 03:38
@ecv
ecv enabled auto-merge October 25, 2026 03:38
The activity UI example app still resolved packages behind medium and
low Dependabot alerts, plus the vite 5 highs the previous commit left
open. The published library is unaffected; consumers resolve their own
copies of its peers.

Key changes:
- Example app vite raised to ^6.4.4, which Remix 2.17.5 accepts; the
  vite 5 line has no patched release
- Scoped overrides raise @babel/core, estree-util-value-to-estree,
  morgan, postcss-selector-parser, qs, react-router, react-router-dom,
  valibot, vite and yaml to their patched releases
- esbuild forced to ^0.25.0 because Remix pins 0.17.6 exactly

react-router 6.30.6 stays: two advisories are patched only in 7.18, and
Remix 2 cannot run on react-router 7.
@ecv ecv changed the title fix: Patch critical and high advisories in the activity UI fix: Patch all open advisories in the activity UI Oct 25, 2026
@ecv
ecv requested review from kevwilliams and scotwells October 25, 2026 05:54
ecv added a commit that referenced this pull request Oct 25, 2026
The UI container image fails to build on Dependabot's vite and postcss
bump (#207), so those security updates cannot merge. This PR lands the
same bump with a lockfile that matches the manifest. The UI install,
library build and example build all pass locally on vite 6.4.

Supersedes #207. Its lockfile did not match its manifest, so the frozen
install in the image build rejected it. Versions stay at the bot's
targets: vite ^6.4.2 and postcss ^8.5.10, both in the example app only.

#294 also edits the UI manifest and lockfile (different dependencies).
Whichever lands second needs a lockfile regeneration.
scotwells
scotwells previously approved these changes Oct 25, 2026
…ories

# Conflicts:
#	ui/example/package.json
#	ui/pnpm-lock.yaml

@kevwilliams kevwilliams left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Hold: the merge from main reverted the UI lockfile, so 2 of the 3 criticals stay open in the shipped image.

  • At a81314c, ui/pnpm-lock.yaml resolves proxy-addr 2.0.7 and keeps a dompurify 3.4.15 copy; undici 6.23.0, lodash 4.17.23 and ws 7.5.10 also went back. Commit 3526a32 had proxy-addr 2.0.8, undici 6.29.1, lodash 4.18.1 and ws 7.5.13.
  • Fix: regenerate the lockfile on the merged head so it honours the overrides block.

The merge from main reverted ui/pnpm-lock.yaml, so the shipped image went
back to proxy-addr 2.0.7, a second dompurify 3.4.15 copy, and older undici,
lodash and ws, reopening 2 of the 3 critical advisories this PR closes.

Key changes:
- Restore the lockfile from the advisory fix and reconcile it with the
  merged package files
- proxy-addr 2.0.8, undici 6.29.1, lodash 4.18.1, ws 7.5.13 and a single
  dompurify 3.4.17; pnpm audit reports no critical advisories
@ecv
ecv requested a review from kevwilliams October 26, 2026 02:51

@kevwilliams kevwilliams left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Verified the only change since the hold is ui/pnpm-lock.yaml, which now resolves proxy-addr 2.0.8, undici 6.29.1 and 8.12.3, lodash 4.18.1, ws 7.5.13 and a single dompurify 3.4.17.

@ecv
ecv merged commit 9fc581f into main Oct 26, 2026
9 checks passed
@ecv
ecv deleted the fix/ui-security-advisories branch October 26, 2026 03:03
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.

3 participants