The Node.js security releases published October 21, 2026 correct ten Node.js CVEs plus bundled dependency issues. The fixed releases are 22.23.4, 24.22.1 e 26.12.1. The highest severity is High, but priority depends on which APIs an application uses and which attacker-controlled inputs reach them.
The official Node.js release advisory covers DNS truncation, TLS hostname validation, Brotli memory corruption, keep-alive response confusion, startup-snapshot entropy reuse, ZIP parsing and Permission Model bypasses. It also updates c-ares, eMudhra CA material, OpenSSL, SQLite and Undici on applicable release lines.
Fixed release matrix
| Release line | Fixed release | Important scope |
|---|---|---|
| Node.js 22.x | 22.23.4 | DNS, TLS, Brotli, HTTP agent, snapshot entropy and Permission Model; bundled dependencies |
| Node.js 24.x | 24.22.1 | Same major high/medium issues; bundled dependencies |
| Node.js 26.x | 26.12.1 | All release issues, including the 26.x-only ZIP and wildcard Permission Model findings |
End-of-life Node.js lines do not receive these fixes. Moving an application to a currently supported line is part of remediation; copying individual commits into an unsupported runtime creates a private maintenance burden and does not provide normal project security support.
Exposure matrix
| CVE | Trigger or feature | Decision question |
|---|---|---|
| CVE-2026-105482 | dns.resolve*() ou dns.reverse() with NUL-containing names | Can an untrusted hostname pass validation and reach c-ares resolution? |
| CVE-2026-105483 | Fullwidth digits in IP-like TLS hosts | Can an attacker influence a TLS destination or hostname used for identity checks? |
| CVE-2026-106069 | Leading-zero, non-canonical IPv4 notation | Can platform resolution and certificate normalization disagree? |
| CVE-2026-111497 | Untrusted Brotli data processed through node:zlib | Does the application decode attacker-controlled compressed content? |
| CVE-2026-105481 | HTTP Agent keep-alive reuse | Can an untrusted server send an unsolicited response before a reused request? |
| CVE-2026-106072 | Non-canonical numeric IPv4 spellings | Can a DNS SAN authenticate an IP endpoint because host classification is wrong? |
| CVE-2026-106074 | Startup snapshots or SEAs built after random APIs are called | Are entropy caches serialized and reused across processes? |
| CVE-2026-106070 | Node.js 26 zlib.ZipFile | Does a security scanner or importer trust content returned after header mismatch? |
| CVE-2026-106071 | Node.js 26 wildcard filesystem grants | Do root-level wildcard rules unintentionally grant a shorter path? |
| CVE-2026-106073 | fs.realpathSync() under the Permission Model | Can restricted code probe paths outside the read grant? |

Upgrade the artifact that actually runs
A developer workstation upgrade does not remediate a container image, serverless runtime, packaged desktop application or single executable application. Inventory Node.js by deployment artifact:
- base images and image digests;
- OS packages, tarball installations and version managers;
- CI runners and build images;
- serverless and edge runtime versions;
- Electron or desktop applications that bundle Node.js;
- startup snapshots and single executable applications that must be rebuilt.
Use read-only checks in the deployed environment:
node --version
node -p "process.versions"
node -p "process.execPath"
npm ls undici --all 2>/dev/null
# Container example: verify the immutable image and runtime together
docker inspect --format '{{.Image}} {{.Config.Image}}' CONTAINER
docker exec CONTAINER node -p "process.version + ' ' + process.execPath"
Test behavior without weaponizing the flaws
Prefer regression tests that reject unsafe input rather than reproducing memory corruption or certificate bypass. Add cases for embedded NUL characters, non-canonical IP spellings, excessive or malformed compressed responses, unexpected keep-alive data and Permission Model boundary paths. Run them in an isolated test environment against the upgraded runtime and record the expected rejection behavior.
For CVE-2026-106074, rebuild snapshots and SEAs with the fixed runtime. Updating the machine’s system Node.js does not alter an already produced executable. Confirm that parallel instances no longer repeat snapshot-seeded identifiers and that application uniqueness assumptions are valid independently of the runtime fix.

Bundled dependencies need their own inventory
The Node.js release updates bundled components, including Undici, but an application can also declare its own undici dependency. The runtime upgrade and the application dependency upgrade are separate checks. Record both process.versions and the resolved package tree, rebuild lockfiles only through the project’s controlled process, and verify the deployed artifact rather than the source branch.
Conclusão
Move supported deployments to Node.js 22.23.4, 24.22.1 or 26.12.1, then verify the active runtime in every artifact. Use API-level exposure questions to prioritize testing, rebuild snapshots and packaged applications, and inspect separately installed dependencies. The fixed version is the start of closure; the deployed executable and regression evidence complete it.

