ByteVancer
Security

PHP and Node.js Security, Part 2: The Node.js October 2026 Release

The Node.js October 2026 security release: 10 CVEs, including a high-severity Brotli bug, fixed in v22.23.4, v24.22.1 and v26.12.1, plus EOL lines still open.

By · Software Engineer · Published · 7 min read

Part 2 of our PHP and Node.js security series, as of 26 Oct 2026. October's Node.js release patches v22, v24 and v26 together, and some of its bugs are second attempts at earlier fixes. Facts come from the nodejs.org security posts and release schedule.

TL;DR

  • The October 2026 release fixes 10 CVEs: 4 high, 3 medium, 3 low.
  • Upgrade to v22.23.4, v24.22.1 or v26.12.1.
  • Headline: CVE-2026-111497, a Brotli decoder out-of-bounds write that can mean a crash, a memory leak or remote code execution.
  • Some October CVEs are incomplete fixes of earlier ones. Patching is continuous, not a one-off.
  • v18, v20 and v25 are end-of-life, and "End-of-Life versions are always affected when a security release occurs."

What's in the October 2026 release

CVESeverityWhat goes wrong
CVE-2026-111497HighBrotli decoder out-of-bounds write when node:zlib decompresses attacker data (v22, v24, v26)
CVE-2026-105482Highdns.resolve*/reverse truncate at a NUL byte, so an allowlist check and the real lookup disagree
CVE-2026-105483HighTLS hostname check bypass with fullwidth-digit IPs (v24, v26)
CVE-2026-106069HighTLS hostname check bypass with leading-zero or octal IPv4
CVE-2026-105481MediumA keep-alive socket accepts a response that arrived before the request
CVE-2026-106072MediumNon-canonical IPv4 lets a DNS SAN authenticate an IP endpoint
CVE-2026-106074Mediumcrypto.randomUUID()/randomInt() caches frozen into snapshots or SEA repeat predictable values
CVE-2026-106070LowZipFile prefix bytes (v26)
CVE-2026-106071LowPermission Model wildcard over-grant (v26)
CVE-2026-106073Lowfs.realpathSync skips the permission read check
From the Node.js October 2026 security releases post.

The release also updates dependencies: c-ares, the CA certificates (after an eMudhra intermediate CA compromise), OpenSSL, SQLite and undici.

Which Node.js version fixes it

Upgrade targets, October 2026
Node.js 22
v22.23.4Maintenance until 30 Apr 2027.
Node.js 24
v24.22.1Maintenance from 20 Oct 2026 to 30 Apr 2028.
Node.js 26
v26.12.1LTS from 28 Oct 2026 to 30 Apr 2029.

Fixed versions from the Node.js security post and nodejs.org/dist/index.json; dates from the nodejs/release schedule.

Read-only. Check every place Node runs: servers, containers, CI runners.
# Runtime version
node -v

# Bundled library versions (OpenSSL, zlib, and more)
node -p process.versions

# What a container image really ships (use your own tag)
docker run --rm node:22 node -v

Why the Brotli bug matters most

Per the Node.js post, CVE-2026-111497 can cause a crash, a process-memory leak or remote code execution when an app decompresses attacker-supplied Brotli data through node:zlib. Any service that inflates compressed input from the outside should treat this one as today's job.

What happens if you don't patch

  • Brotli (CVE-2026-111497): a crash, leaked process memory or remote code execution.
  • DNS and TLS (CVE-2026-105482, CVE-2026-105483 on v24/v26, CVE-2026-106069): an allowlist or hostname check can pass for a host it should reject.
  • Snapshots and SEA (CVE-2026-106074): "random" UUIDs and integers repeat and become predictable.
  • Keep-alive (CVE-2026-105481): a client can accept a response that arrived before its request.

Skipped July too? Then you're also open to HTTP/2 remote memory exhaustion (CVE-2026-56846, v22 and v24), an HTTP/2 heap use-after-free (CVE-2026-56848) and a Permission Model path escape (CVE-2026-58043), all rated high. A crashed Node process is a 5xx for every visitor and every crawler, which is where Part 3 on SEO picks up.

Why patching is continuous

Three 2026 releases, one chain
  1. 01

    June

    22.23.0, 24.17.0, 26.3.1: WebCrypto AES overflow abort (CVE-2026-48933), TLS wildcard depth bypass (CVE-2026-48618).

  2. 02

    July

    22.23.2, 24.18.1, 26.5.1: HTTP/2 memory exhaustion and use-after-free, Permission Model escape, header-truncation smuggling.

  3. 03

    October

    22.23.4, 24.22.1, 26.12.1: ten CVEs, including second attempts at CVE-2026-48930 and CVE-2026-48931.

  4. 04

    Next release

    Same drill: check versions, patch, verify.

CVE-2026-105482 is an incomplete fix of CVE-2026-48930, and CVE-2026-105481 of CVE-2026-48931. Patching once in June didn't finish the job; staying current did.

End-of-life lines: v18, v20, v25

LineStatusEnd of life
v18End of life30 Apr 2025
v20End of life (last release v20.20.2, 24 Mar 2026)30 Apr 2026
v25End of life1 Jun 2026
v22Maintenance30 Apr 2027
v24Maintenance since 20 Oct 202630 Apr 2028
v26LTS from 28 Oct 202630 Apr 2029
From the nodejs/release schedule, as of 26 Oct 2026.

Get the printable checklist

Both runtimes' version tables, EOL lines and a patch-day checklist in one PDF: PHP + Node.js security patch checklist (PDF, Oct 2026). On PHP too? Start with Part 1. Want someone else on release day? See our Node.js maintenance and security updates.

The whole series

  1. Part 1: The October 2026 PHP RCE fixes
  2. Part 2: The Node.js October 2026 security release (this post)
  3. Part 3: What unpatched servers do to SEO

Next up: Part 3 covers what an unpatched server does to your SEO, in Google's own words.

FAQ

Questions, answered

v22.23.4, v24.22.1 and v26.12.1. End-of-life lines such as v18, v20 and v25 get no fix.

Rather not track Node.js release lines yourself?

We keep Node.js apps on supported lines, apply security releases, and test before and after every upgrade. See our Node.js security updates and app maintenance.