ConicPlex

Start Your Project

A laptop glows with hexagonal green light on a dark desk beside a cracked red wax seal on an envelope, with a server rack blurred in the background, symbolizing a Node.js security patch and a broken certificate validation check.

On this Page

Node.js Patches a Critical RCE Flaw in Its Brotli Decoder, Plus Nine Other Bugs

Node.js shipped 10 security fixes on October 21, 2026, including a critical Brotli decoder RCE bug and three TLS certificate hostname bypass flaws. Here’s what’s patched and what to do.

Sajil Memon

October 23, 2026

Node.js shipped security releases on Wednesday, October 21, 2026, patching 10 vulnerabilities across its three supported lines, four of them rated high. The most serious is CVE-2026-111497, an out-of-bounds write in Node’s Brotli decoder that can lead to remote code execution. Fixes landed in Node.js 22.23.4, 24.22.1, and 26.12.1, according to the official Node.js security release page. If you’re running an older build on any of those lines, or you decompress Brotli data from anywhere outside your own control, this is worth updating for today rather than next sprint.

The Brotli Bug Is the One to Act On First

CVE-2026-111497 affects Node’s built-in Brotli decoder, the code path used whenever something decompresses br-encoded content, whether that’s an HTTP response pulled in through fetch or undici, a reverse proxy passing compressed payloads through to your app, or a file your service unpacks on upload. An out-of-bounds write during decompression means a crafted payload can corrupt memory the process wasn’t expecting to touch, and in the worst case that opens the door to running attacker-supplied code on the server. Any service that decompresses Brotli content it didn’t generate itself should treat this as the priority fix in the batch.

Three More High-Severity Bugs, All About Hostname Validation

The other three high-severity issues aren’t related to Brotli at all. They’re all variations on the same theme: a crafted hostname or IP-like string tricking Node’s TLS stack into matching a certificate it shouldn’t.

  • CVE-2026-105483: TLS certificate hostname validation can be bypassed when the IP address in the certificate is written using fullwidth digit characters instead of standard ASCII digits.
  • CVE-2026-106069: A similar bypass occurs when the connecting host loosely resolves to an IP address, letting Node match a certificate for a target it didn’t actually intend to trust.
  • CVE-2026-105482: dns.resolve() silently truncates hostnames that contain a NUL character, which can cause a lookup, and anything downstream relying on it, to resolve the wrong name.

None of these need a public-facing exploit chain to matter. Anywhere Node is doing its own hostname-to-certificate matching, service mesh clients, outbound API calls pinned to a specific host, mTLS between internal services, these three bugs undercut the assumption that the matching is strict.

The Rest: Medium and Low Severity, Still Worth Knowing About

Three medium-severity fixes round out the TLS and runtime picture. CVE-2026-106072 is another certificate validation gap, this time for non-canonical IPv4 hostnames that let a DNS-based Subject Alternative Name authenticate an IP endpoint it shouldn’t. CVE-2026-105481 covers a keep-alive socket that can process a response written before the matching request was even sent, a timing issue that gets stranger the more concurrent traffic a service handles. And CVE-2026-106074 is one worth flagging for anyone using Node’s startup snapshot feature or Single Executable Applications: the entropy caches behind crypto.randomUUID() and randomInt() get baked into the snapshot, so every process started from that snapshot repeats the same “random” values instead of generating fresh ones.

The three low-severity fixes mostly concern Node’s Permission Model: a wildcard radix lookup that over-grants filesystem access, a bypass via fs.realpathSync, and a ZIP-handling bug where a failed header check still leaks attacker-controlled prefix bytes back to the caller. Lower urgency, but they land in the same release, so they come along for the ride when you update.

What to Do

Update to 22.23.4, 24.22.1, or 26.12.1 depending on which line you’re on, and don’t stop at the host runtime. Docker base images, Lambda layers, and any CI pipeline that caches a Node binary need rebuilding too, or you’ll ship the old vulnerable version right back out. If you’re maintaining anything on an older major line that isn’t covered by this release, that’s a separate conversation worth having, since it means you’re not getting fixes for this batch or the next one either.

If your team runs production Node services and nobody’s entirely sure which patch versions are actually pinned across environments right now, that gap is common, and it’s exactly the kind of thing we check during backend reviews as part of our web application development work. It’s also worth a look if your Node services sit behind queues or webhook consumers, where a stale or crashing process causes its own kind of damage independent of any CVE.

Sources

Sajil Memon is a co-founder of ConicPlex and a Senior Full Stack Developer focused on backend work: Node.js, PHP, APIs, and the infrastructure decisions that determine whether a system holds up under real traffic. He’s spent years on the side of a project that doesn’t get demoed, the part that has to keep working after launch. He writes here about the technical tradeoffs in backend architecture, deployment, and data handling that only become obvious once something breaks in production.

Leave a Reply

Your email address will not be published. Required fields are marked *

Keep reading

Plugins

Illustration of a document with a checkmark badge representing per-product terms and conditions acceptance in WooCommerce

How to Add Terms and Conditions per Product in WooCommerce (3 Plugins Compared)

WooCommerce ships with one store-wide terms and conditions checkbox. Here is how to require product-specific terms instead, comparing 3 real…

Sajil Memon

October 23, 2026

News & Updates

A dimly lit developer workspace at night with a monitor glowing violet and indigo showing abstract swirling corrupted light patterns, next to a small elephant figurine on the desk, symbolizing a critical PHP runtime vulnerability

PHP Ships Emergency Patches for Two Critical RCE Flaws Dubbed PHP2Shell

PHP shipped emergency patches on October 21, 2026 for two critical unauthenticated RCE flaws dubbed PHP2Shell, affecting every PHP install…

Sajil Memon

October 22, 2026

Plugins

Three overlapping testimonial cards with a quotation mark and five-star rating icon, representing WordPress block editor testimonial plugins

3 Testimonial Block Plugins for the WordPress Block Editor

A practical comparison of WordPress block editor testimonial plugins, with real setup steps, pricing, and limitations for each….

Husen Memon

October 22, 2026

WhatsApp
Husen Memon
Husen Memon
Typically replies instant