Skip to content

[HOTFIX] Update remaining Node.js toolchains to 22.23.4 - #5588

Merged
voidmatcha merged 4 commits into
apache:masterfrom
tbonelee:fix/brotli-security-after-5587
Oct 24, 2026
Merged

voidmatcha merged 4 commits into
apache:masterfrom
tbonelee:fix/brotli-security-after-5587

Conversation

@tbonelee

@tbonelee tbonelee commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor

What is this PR for?

Follow up on #5587 by updating the remaining Node.js toolchains to patched releases. The October 2026 Node.js security release addresses the Brotli decoder vulnerability CVE-2026-111497.

  • Upgrade Classic UI builds from Node.js 16.20.2 to 22.23.4, aligning Maven, nvm, and package engine metadata.
  • Upgrade Helium bundle generation from Node.js 16.16.0 to 22.23.4.
  • Restrict the Angular/React frontend engine range to patched release lines: ^22.23.4 || ^24.22.1 || >=26.12.1.

The existing Classic npm 8.19.4 and Helium npm 8.11.0/Yarn 1.22.0 versions are retained. Application code and dependency resolutions are unchanged apart from the Node.js version selection and engine metadata.

Classic uses Node.js during development and builds; Helium also invokes Node.js on the server to install packages and generate bundles. This updates those toolchains without claiming a confirmed remotely exploitable Zeppelin attack path.

What type of PR is it?

Bug Fix

Todos

What is the Jira issue?

N/A

How should this be tested?

Frontend:

  • Clean installation with Node.js 22.23.4 and npm 11.21.1.
  • React tests: 262 passed.
  • React typecheck and React/Angular production builds passed.
  • Existing braces security patch applied successfully.

Classic UI:

  • Production build and 194 browser unit tests passed.
  • Browser checks covered notebook editing, execution, table/chart rendering, search/replace, and interpreter permission settings.
  • The development server connected to the backend successfully.

Helium:

  • Five Helium tests passed, and the server reactor build passed with JDK 11.
  • Installed and enabled the horizontalbar example, generated its bundle with Node.js 22.23.4, and verified the SVG chart and values in a notebook.
  • On Linux x86-64, verified automatic replacement of an existing Node.js 16.16.0 installation, bundle loading, forced rebuild, and reuse after server restart.
  • The Markdown Spell example installed, bundled, and rendered, but result persistence encountered an existing Java ClassCastException. Equivalent bundles built with Node.js 16.20.2 and 22.23.4 were byte-identical.

The browser checks also identified an existing Monaco icon font loading error, reproduced with a Node.js 22.21.1 comparison build. These existing issues are outside this change.

The retained Node.js changes are identical to the previously validated versions. After integration with #5587, installation, React tests, typecheck, and frontend builds were repeated. The source tree was unchanged by rebasing onto the merged #5587 commit. The full E2E suite, Storybook build, and final WAR/container packaging were not rerun.

Screenshots (if appropriate)

N/A

Questions:

  • Does the license files need to update? No.
  • Is there breaking changes for older versions? Builds require a patched Node.js release. Maven downloads Node.js 22.23.4 for Classic UI builds, and Helium installs that version for bundle generation.
  • Does this needs documentation? Yes; the Classic UI Local Development instructions now point to the Node.js version pinned in .nvmrc.

Replace the end-of-life Node.js 16 pin to address CVE-2026-111497. Keep npm 8.19.4 and all resolved package versions unchanged to isolate the runtime migration.

Validation: Maven Node/npm installation; npm ci; npm run build:dist (including lint); npm run karma-test with FirefoxHeadless, 194 tests passed. No OpenSSL legacy provider or webpack changes required.
Replace the end-of-life Node.js 16.16.0 installed by the runtime Helium bundler to address CVE-2026-111497. Retain the current npm, Yarn and webpack versions.

Validation: JDK 11 Maven package reactor for zeppelin-server --am with HeliumBundleFactoryTest: 5 tests passed, covering tool installation, npm package download, local and registry bundles, cache reuse and package version switching.
@tbonelee tbonelee changed the title [MINOR] Update remaining Brotli consumers after the frontend Node.js upgrade [HOTFIX] Update remaining Brotli consumers after the frontend Node.js upgrade Oct 24, 2026
@tbonelee
tbonelee marked this pull request as ready for review October 24, 2026 13:38
@tbonelee
tbonelee marked this pull request as draft October 24, 2026 13:46
@tbonelee
tbonelee force-pushed the fix/brotli-security-after-5587 branch from 4b202e8 to 7ccdf09 Compare October 24, 2026 13:50
@tbonelee tbonelee changed the title [HOTFIX] Update remaining Brotli consumers after the frontend Node.js upgrade [HOTFIX] Update remaining Node.js toolchains to 22.23.4 Oct 24, 2026

@voidmatcha voidmatcha left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

The Classic UI’s .nvmrc and Maven configuration have been updated to Node.js 22.23.4, but the Local Development section in zeppelin-web/README.md still recommends Node.js v16. Could you update the documentation to match the new version or direct developers to use .nvmrc?

I found no other merge-blocking issues. I also verified that the Classic build and tests, along with the Helium tests on JDK 11 and 17, passed.

@tbonelee

Copy link
Copy Markdown
Contributor Author

Thanks! I've updated it.

@tbonelee
tbonelee marked this pull request as ready for review October 24, 2026 14:34
@voidmatcha
voidmatcha merged commit 65c12bf into apache:master Oct 24, 2026
24 checks passed
@voidmatcha

Copy link
Copy Markdown
Member

Merged into master (65c12bf).

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