Skip to content

fix(apollo-react): bump katex to 0.18.10 to fix CVE-2026-103923 [PLT-97228] - #1379

Merged
ayushya merged 2 commits into
mainfrom
fix/apollo-react-katex-cve-PLT-97228
Oct 16, 2026
Merged

ayushya merged 2 commits into
mainfrom
fix/apollo-react-katex-cve-PLT-97228

Conversation

@CalinaCristian

Copy link
Copy Markdown
Collaborator

Description

Fixes CVE-2026-103923 / GHSA-238p-pmpm-9mq7 (katex <0.18.2: settings prototype pollution bypasses trust). The finding shows in MER for Experiences, which consumes @uipath/apollo-react.

  • apollo-react: katex ^0.16.27 → ^0.18.11
  • pnpm-workspace.yaml: adds a katex: "^0.18.11" override, because mermaid, rehype-katex and micromark-extension-math still pin ^0.16. Removes the advisory from auditConfig.ignoreGhsas.
  • pnpm-lock.yaml now contains only katex@0.18.11.

Why 0.18.11: it's the latest 0.18.x past the 14-day minimumReleaseAge (published 2026-10-01), so no exemption is needed. Releases 0.18.3–0.18.11 are fixes and features only.

Risks of rolling out

KaTeX 0.18.0 prefixes its generic CSS classes (accent, sizing, vbox, strut, … → katex-*). This is safe here because:

  • ap-chat markdown imports katex/dist/katex.min.css from the same resolved package as the renderer, so markup and styles stay in sync;
  • Apollo only targets the root .katex class (ap-chat '&, & .katex', apollo-wind [&>.katex]), which keeps its name.

Consumers that bundle apollo-react get the new katex through the dependency. Anyone with their own CSS on KaTeX's internal classes would need to update it.

Validation

  • turbo build for apollo-react and apollo-wind: 4/4 tasks pass.
  • tsc --noEmit: apollo-react and apollo-wind both clean.
  • apollo-wind markdown.test.tsx 19/19 (asserts .katex / .katex > math); ap-chat 19/19.
  • apollo-react full suite: 4052/4053. The one failure is JsonTree.import.test.ts, a 5s timeout under full-suite load that passes in isolation.

🤖 Generated with Claude Code

…97228]

katex <0.18.2 is vulnerable to prototype pollution in settings that
bypasses `trust` (GHSA-238p-pmpm-9mq7). The fix only exists on the 0.18
line, and mermaid, rehype-katex and micromark-extension-math still pin
^0.16, so bump apollo-react's direct dependency and add a workspace
override to force every copy onto 0.18.11. The advisory is removed from
auditConfig.ignoreGhsas now that a fix is installed.

0.18.0 prefixes KaTeX's generic CSS classes (accent, sizing, vbox, ...
-> katex-*). The ap-chat markdown imports katex/dist/katex.min.css from
the same resolved package as the renderer, so markup and styles stay in
sync, and Apollo only styles the unchanged root `.katex` class.

0.18.11 is past the 14-day minimumReleaseAge, so no exemption is needed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

Apollo Coded App preview deployments are ready.

Project Status Preview Updated (PT)
apollo-design Ready Preview · Logs Oct 15, 2026, 10:29:04 PM
apollo-docs Ready Preview · Logs Oct 15, 2026, 10:29:04 PM
apollo-landing Ready Preview · Logs Oct 15, 2026, 10:29:04 PM
apollo-vertex Ready Preview · Logs Oct 15, 2026, 10:29:04 PM

@github-actions github-actions Bot added pkg:apollo-react size:M 30-99 changed lines. labels Oct 16, 2026
@github-actions

github-actions Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

📊 Coverage + size by package

Per-package bundle size on this PR (no JS/TS source changes detected under packages/* or web-packages/*).

Package Coverage New-line coverage Packed (gzip) Unpacked vs main
@uipath/apollo-core 75.0% — 42.02 MB 50.17 MB ±0
@uipath/apollo-react 51.3% — 7.99 MB 31.45 MB +2 B
@uipath/apollo-ui-icons — — 2.86 MB 6.97 MB ±0
@uipath/apollo-vertex 84.0% — 325.5 KB 1.84 MB ±0
@uipath/apollo-wind 79.0% — 785.2 KB 4.55 MB −32 B
@uipath/ap-chat 85.8% — 40.37 MB 45.58 MB +855 B

"Coverage" is each package's own coverage.include scope (e.g. apollo-core instruments only scripts/). "Packed"/"Unpacked" come from npm pack --dry-run and only cover built packages — "—" means not measured this run (package not affected / not built). "vs main" is the packed (gzipped) delta against the last successful main build (the package-sizes artifact from the Release workflow); "—" there means no main baseline was available this run. The baseline is main's latest build, not this PR's exact merge-base, so it includes any drift since the branch diverged. Packages with no vitest config are omitted.

@github-actions

github-actions Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

Storybook visual diff

✅ No stories are affected by this PR's changes; nothing to compare. Logs

Updated (PT): Oct 15, 2026, 10:29:58 PM

… urls [PLT-97228]

katex 0.18.11 is deprecated upstream ("accidentally published with
breaking changes", re-released as 0.19.0), so pin the last good 0.18.x
exactly; a caret range would still resolve to 0.18.11. 0.18.10 carries
the GHSA-238p-pmpm-9mq7 fix (>=0.18.2) and is past minimumReleaseAge.

The previous lockfile was generated with a user-level npmrc mapping
@UiPath to GitHub Packages, which wrote npm.pkg.github.com tarball urls
for @uipath/core-telemetry and @uipath/uipath-typescript. CI installs
@UiPath packages from npmjs.org without a token, so every job failed
with ERR_PNPM_FETCH_401. Those entries are restored to plain npm
resolutions.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@CalinaCristian CalinaCristian changed the title fix(apollo-react): bump katex to 0.18.11 to fix CVE-2026-103923 [PLT-97228] fix(apollo-react): bump katex to 0.18.10 to fix CVE-2026-103923 [PLT-97228] Oct 16, 2026
@CalinaCristian

Copy link
Copy Markdown
Collaborator Author

Update: pinned katex to exactly 0.18.10. 0.18.11 is deprecated upstream: it was accidentally published with 0.19.0's breaking change. Also fixed the lockfile: two @uipath/* entries had picked up npm.pkg.github.com tarball URLs from a local npmrc. That's what caused the ERR_PNPM_FETCH_401 in every CI job.

@github-actions

Copy link
Copy Markdown
Contributor

Dependency License Review

  • ✅ 1942 package(s) scanned
  • ✅ No license issues found
  • ⚠️ 2 package(s) excluded (see details below)
License distribution
License Packages
MIT 1708
ISC 91
Apache-2.0 56
BSD-3-Clause 28
BSD-2-Clause 23
BlueOak-1.0.0 8
MPL-2.0 4
MIT-0 3
CC0-1.0 3
MIT OR Apache-2.0 2
(MIT OR Apache-2.0) 2
Unlicense 2
LGPL-3.0-or-later 1
Python-2.0 1
CC-BY-4.0 1
(MPL-2.0 OR Apache-2.0) 1
Unknown 1
Artistic-2.0 1
(WTFPL OR MIT) 1
(BSD-2-Clause OR MIT OR Apache-2.0) 1
CC-BY-3.0 1
0BSD 1
(MIT OR CC0-1.0) 1
MIT AND ISC 1
Excluded packages
Package Version License Reason
@img/sharp-libvips-linux-x64 1.3.4 LGPL-3.0-or-later LGPL pre-built binary, not linked
khroma 2.1.0 Unknown MIT per GitHub repo, missing license field in package.json

@ayushya
ayushya merged commit 4f47d6c into main Oct 16, 2026
46 of 47 checks passed
@ayushya
ayushya deleted the fix/apollo-react-katex-cve-PLT-97228 branch October 16, 2026 06:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pkg:apollo-react size:M 30-99 changed lines.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants