All vulnerability reports

Vaadin and the October 2026 Node.js security releases

Overview

A deployed Vaadin application does not run Node.js, so it is not exposed to the vulnerabilities fixed in the Node.js security releases of 21 October 2026. Vaadin uses Node.js only to build the frontend and to run development mode, which means the exposure, where there is any, is in build and development environments rather than in production.

Vaadin has updated the Node.js version it installs by default on every maintained branch, and those updates reach users as each line releases. Anyone who wants the fix today can install a patched Node.js themselves: Vaadin uses a suitable Node.js that is already present in preference to downloading its own.

Description

On 21 October 2026 the Node.js project released fixes for ten vulnerabilities, in versions 22.23.4, 24.22.1 and 26.12.1. The ones that drew attention:

CVE Issue Severity
CVE-2026-111497 Brotli decoder out of bounds write, permitting remote code execution High
CVE-2026-105482 dns.resolve truncates names containing a NUL character High
CVE-2026-105483 TLS certificate hostname check bypassed when an IP is written with fullwidth digits High
CVE-2026-106069 TLS certificate hostname check bypassed when the host loosely resolves to an IP address High

Six further issues are rated Medium or Low, among them a non canonical IPv4 hostname matching a DNS SAN, repeated values from crypto.randomUUID() in startup snapshots, and two Permission Model bypasses. The same releases update the bundled root certificates for the eMudhra intermediate certificate compromise disclosed on 19 October 2026.

Where Vaadin uses Node.js

Vaadin uses Node.js in two places, both of them on a developer machine or a build server:

  • At build time, to compile the frontend bundle. The Maven goals that do this bind to the process-resources and prepare-package phases, so this happens while the application is packaged, not while it runs.
  • In development mode, to run the development server.

Vaadin does not require Node.js to be installed. When it is not, or when the installed version is outside the range Vaadin supports, Vaadin downloads a known version into ~/.vaadin and uses that. When a suitable Node.js is already on the PATH, Vaadin uses it and downloads nothing.

Why a deployed Vaadin application is not affected

The code that locates, downloads and runs Node.js lives in a separate build time module. The Vaadin runtime artifact does not depend on it, so an application in production contains nothing that can start a Node.js process. Development mode startup exits early when production mode is configured, before any Node.js setting is read. A production Vaadin application serves a frontend bundle that was built in advance and is read from the classpath.

There is no Node.js process in a production deployment, so none of the issues above applies to it.

Exposure in build and development environments

The remaining question is what these vulnerabilities mean for the machine that builds the application.

The Brotli issue, CVE-2026-111497, requires the vulnerable Node.js process to decompress attacker controlled Brotli data. A Vaadin frontend build compresses the application's own assets and does not decompress untrusted input. Vaadin does not even install Node.js for compression: it uses one only if it is already there.

The TLS hostname issues matter to anything that makes HTTPS requests, which during a build means the package manager fetching frontend dependencies. Exploiting them requires an attacker already positioned to intercept that traffic and holding a certificate for a name that the flawed check accepts.

So the realistic exposure is the general one that applies to any Node.js installation on a build machine, not something specific to Vaadin. It is still worth fixing, which is what the guidance below is for.

Affected products

Product Status
A Vaadin application in production Not affected. No Node.js process exists
Vaadin build tooling and development mode Uses Node.js. Exposure is that of the Node.js installed on the build or development machine
Vaadin Hilla Same as above. Node.js is used at build time only

Which Vaadin versions download a patched Node.js

Vaadin line Status How to get the release
Vaadin 25.x Vaadin 25.2.12 carries an updated default. The other 25 lines follow as they release Free maintenance
Vaadin 24.x In upcoming releases Releases from 24.10.8 onwards: Vaadin extended maintenance
Vaadin 23.x In upcoming releases Releases from 23.5.0 onwards: Vaadin extended maintenance
Vaadin 14.x In upcoming releases Releases from 14.12.0 onwards: Vaadin extended maintenance

Free maintenance has ended for Vaadin 24, 23 and 14, so on those lines the release carrying the updated default is only available to extended-support customers.

Customer guidance

Install a patched Node.js on your build and development machines. This is the action that helps immediately and it does not depend on a Vaadin release, because Vaadin prefers a suitable Node.js that is already installed over the one it downloads. The version to install depends on the Vaadin line:

Vaadin line Node.js versions accepted Install
Vaadin 25.0 to 25.3 24.0 and newer, major version 24 24.22.1
Vaadin 24.x, 23.6 and 14.14 20.0 and newer 22.23.4

Development prereleases of the next line use Node.js 26, where the patched version is 26.12.1.

Two settings are worth knowing. vaadin.nodeFolder points Vaadin at a specific Node.js installation and takes precedence over everything else, so Vaadin never downloads when it is set. require.home.node does the opposite: it forces Vaadin to use the copy in ~/.vaadin and ignore the one on the PATH. If you have set it, the Node.js on your PATH is not the one being used.

Then upgrade Vaadin when your line releases. The Node.js version Vaadin downloads by default has been updated on every maintained branch, on 21 and 22 October 2026. Those updates reach users line by line as each one releases. Vaadin 25.2.12 is the first platform release carrying an updated default; the other lines follow.

Older versions

Two different things get called old here, and the answer differs.

A maintained line on an old patch version, for example Vaadin 14.5.1 when the 14 line is at 14.14.x, is not stuck. The line is still receiving releases, and the updated Node.js default arrives on it like any other change. What is needed is to move to the current patch version of that line, which on Vaadin 24, 23 and 14 is available to extended-support customers.

A line that no longer receives releases at all will never get an updated default, because the Node.js version a release downloads is fixed in that release and is never changed retroactively. Vaadin 23.1 pins Node.js 16.16.0, Vaadin 14.5 pins 14.15.4, and Vaadin 13 predates this mechanism entirely and used Node.js 8.11.1 through a third party Maven plugin. All three of those Node.js versions reached end of life years ago.

On both, installing a supported, patched Node.js on the build machine works, and so does pointing Vaadin at one with vaadin.nodeFolder. Neither requires a Vaadin upgrade.

Integrity of the Node.js download and the eMudhra certificate compromise

Because Vaadin can download Node.js over HTTPS, the eMudhra intermediate certificate compromise is worth addressing directly.

Vaadin 24.7 and newer verify the downloaded archive against the SHASUMS256.txt published alongside it. A further layer is being added, in which the expected checksums are shipped inside the Vaadin artifact itself and are trusted over anything served by the download location, so that a mirror cannot substitute a different archive. It is merged on the newest lines and arrives with upcoming Vaadin releases.

Vaadin versions older than 24.7 do not verify the downloaded archive at all and rely on HTTPS alone. On those versions, and in any environment where the certificate trust store has not been updated, installing Node.js yourself rather than letting Vaadin download it removes the concern entirely.

Vaadin ships no certificate authority store of its own. Build time HTTPS connections use the trust store of the JDK running the build, so updating the JDK is what updates the trusted certificates.

References

History

  • 2026-10-23: Vaadin 14 added to the customer guidance table
  • 2026-10-23: Initial vulnerability report published