Skip to main content
CVE-2026-111497 · Brotli RCE

Node.js security patch (October 2026)

On 21 October 2026 Node.js shipped a security release with 10 CVEs for the 26.x, 24.x and 22.x lines. The most serious, CVE-2026-111497, is an out-of-bounds write in the Brotli decompressor that allows remote code execution. The fixed versions are v26.12.1, v24.22.1 and v22.23.4; 20.x and 25.x are end of life and get no patch.

Do you have this vulnerability? We update Node.js on your servers, Docker images and pipelines, check that the application still responds the same way, and plan the line change if you are still on 20.x or 25.x.

What happened

Ten CVEs in one release, four rated high

The release fixes four high, three medium and three low severity vulnerabilities. As of 21 October, no exploitation of any of them had been reported.

CVE-2026-111497 is an out-of-bounds write in the Brotli decompressor that allows remote code execution. You do not need to call zlib yourself to be exposed: according to Cyberkendra, Express 5 and fetch() decompress Brotli automatically.

The other three high-severity issues affect networking. CVE-2026-106069 and CVE-2026-105483 bypass the hostname check on TLS certificates, the check that makes sure your application is talking to the server it thinks it is when it makes an HTTPS request. CVE-2026-105482 makes dns.resolve truncate names that contain a NUL character.

The same release rejects certificate chains that use the compromised eMudhra keys, from the Indian certificate authority whose eight intermediate certificates were generated with weak keys. The end-of-life 20.x and 25.x lines get none of this.

Sources: nodejs.org: October 2026 Security Releases

Are you affected?

Fixed Node.js versions

If a service runs a version older than the one listed for its line, it is affected. There is no fixed version for 20.x and 25.x: the way out is changing lines.

Line Fixed in Note
26.x v26.12.1
24.x v24.22.1
22.x v22.23.4
25.x No patch End of life: move to 26.x
20.x No patch End of life: move to 22.x or 24.x

Check this

  • You run APIs, backends or server-side rendering (Next.js, Nuxt, Astro, NestJS, Express) on Node.js.
  • node -v on the server, or inside the Docker image, reports a version older than your line’s fix.
  • Your Dockerfile uses a tag like node:22 and the image has not been rebuilt: it still has whatever version was current at build time.
  • Some service is still on 20.x or 25.x: those lines will not be patched.
  • Your application decompresses Brotli (through fetch(), Express 5 or its own proxy) or makes HTTPS requests to third parties.
In the meantime

If you are still on 20.x or 25.x

Node.js has not published temporary mitigations for this release. On an unsupported line, the only fix is to leave it.

  1. 01 End-of-life lines do not get this fix or any future ones.
  2. 02 Moving from 20.x to 22.x or 24.x usually means reviewing dependencies with native modules and testing the full build.
  3. 03 While the migration runs, it helps to know which endpoints accept compressed bodies and which services download outside content: those move first.
How we do it

Seven steps, in this order

We follow the same procedure on every server: first find out which version runs where, then fix it, and finally check that nobody got in before the patch.

Inventory
version per server
Mitigation
temporary
Update
v26.12.1 · v24.22.1 · v22.23.4
Verification
in production
Indicators
logs · files
Secrets
if needed
Monitoring
new advisories
01

Version inventory

We find where Node.js runs: servers, Docker images, serverless functions, CI runners and the .nvmrc or engines field of each repository. Each one can carry a different version.

02

Immediate mitigation

With no official mitigation, we start with the most exposed services: the ones that accept Brotli bodies or download third-party content go first in the queue.

03

Update

We move to v26.12.1, v24.22.1 or v22.23.4, rebuild the images and pin the version in the Dockerfile, .nvmrc and CI. If you are on 20.x or 25.x, we plan the line change.

04

Verification

We check the version inside the container running in production, run the tests and confirm that HTTPS calls to third parties still validate certificates.

05

Review for indicators of compromise

We go through application and system logs looking for process crashes, unexplained restarts and processes or files that should not be there.

06

Secret rotation, if needed

If there are signs of access, we rotate sensitive environment variables: API keys, database credentials and tokens.

07

Monitoring new advisories

We record each service’s version and the end-of-life date of its line, so the next security release starts from that inventory.

Before and after

Where Node.js stays unpatched

Updating by eye With the procedure
Node gets updated on the server, but the Docker image was built two months ago
Images rebuilt and the version checked inside the container
CI tests on one version and production runs another
The same version pinned in the Dockerfile, .nvmrc and pipeline
A microservice on 20.x is left out because nobody remembered it
A migration plan for each service on an unsupported line
The .env secrets stay the same even though the process crashed for no clear reason
Secrets rotated when there are indicators

Running services on Node 20 and not sure what moving them takes?

Free consultation →
FAQ

Node.js security release FAQ

Which Node.js versions fix CVE-2026-111497?
v26.12.1, v24.22.1 and v22.23.4, released on 21 October 2026. The 20.x and 25.x lines are end of life and have no fixed version.
I use Node 20. Am I affected?
Node.js does not publish patches for 20.x, so no version on that line fixes these flaws. The way out is moving to 22.x or 24.x, reviewing dependencies with native modules first and testing the full build.
Does it affect me if I do not use Brotli?
You may be using it without knowing: according to Cyberkendra, fetch() and Express 5 decompress Brotli automatically. The release also fixes other flaws, such as the two TLS hostname check bypasses, which affect any application that makes HTTPS requests.
Is changing the Docker base image enough?
You have to rebuild the image and redeploy it. A running container keeps the version it was built with, even if the node:22 tag already points to a newer one.
Let’s start

Tell us where your Node.js runs

We start with the inventory: which version each service runs, which one moves first and which line needs a migration.

Node.js Security Patch (October 2026)

Tell us your challenge. We'll propose a solution.

No commitment. Within 24 hours, you'll receive a proposal with scope, timeline and budget. No fine print.

Book a free call →