Node.js Brotli Decoder RCE (CVE-2026-111497): Update to 26.12.1, 24.22.1 or 22.23.4

Expert cybersecurity insights for IT professionals

Last updated: October 25, 2026

By FixTheVuln Team Sources: Node.js project, GitHub Advisory Database (GHSA-9v8h-qqgm-4m35), google/brotli, Qualys, CISA KEV

What happened

On October 21, 2026, the Node.js project shipped security releases for the 26.x, 24.x and 22.x lines: 26.12.1, 24.22.1 and 22.23.4. The release fixes 10 CVEs. The Node.js post says the highest severity issue is HIGH.

One of them is CVE-2026-111497, titled "Node.js Brotli decoder out-of-bounds write permits remote code execution." Node.js describes it this way: "A flaw in the Brotli decoder bundled with Node.js allows malformed compressed input to write past the end of an internal decoder buffer."

The cause, in the project's words: "An invalid block switch was reported as a temporary need for more input instead of a permanent format error, so the streaming decoder kept appending input bytes to an eight-byte internal buffer." OpenAI Codex Security (Khai Tran and Sylvie Mayer) reported it.

Who is at risk

Node.js names one trigger: "An attacker who can supply Brotli data that an application decompresses with node:zlib can corrupt process memory, which can lead to a crash, disclosure of process memory, or remote code execution."

Node.js lists all of 26.x, 24.x and 22.x as affected and says End-of-Life versions are always affected when a security release occurs. Its post does not name other entry points such as HTTP content-encoding or fetch, so check whether your code or a dependency passes untrusted compressed data into Brotli decompression. Qualys, which published its own analysis on October 23, says HTTP clients and proxies that accept Content-Encoding: br, and services that handle uploaded compressed files, are particularly at risk. That is Qualys's reading, not Node.js's.

The flaw is also upstream. GitHub's advisory GHSA-9v8h-qqgm-4m35 describes a buffer overflow in the Brotli decoder (c/dec/decode.c) in Google Brotli 1.0.3 through 1.2.0 that allows "a remote unauthenticated attacker to corrupt adjacent decoder state memory, disclose sensitive memory contents, cause a denial of service, or potentially execute arbitrary code using a crafted Brotli-compressed stream." The advisory is titled "Node2Shell" and says the PyPI brotli package is also affected.

Is it being exploited?

We found no statement of exploitation in the wild. Neither the Node.js post nor the upstream advisory makes one, and CVE-2026-111497 is not in the CISA KEV catalog version released October 23, 2026. CISA's SSVC assessment attached to the CVE record (October 23, 2026) lists exploitation as "none." That is a point-in-time assessment, not a guarantee, so treat it as "not confirmed," not "safe." The upstream advisory describes the attacker as remote and unauthenticated.

What to do

  1. Update Node.js to 26.12.1, 24.22.1 or 22.23.4. Check with node -v on servers, build agents and containers. Node.js has no workaround listed.
  2. Update Brotli elsewhere. Python projects should check pip show brotli brotlicffi and move to 1.2.1 or 1.2.1.0. Anything that bundles or links Google Brotli 1.0.3 to 1.2.0 needs 1.0.10, 1.1.1 or 1.2.1.
  3. CI and tooling count. Build runners and container images can pin or cache an older Node build. Check the version they actually run with node -v in the job log.
  4. Plan the move off unpatched lines. Node.js updated only 26.x, 24.x and 22.x. Qualys lists 25.x, 23.x and 21.x as "No Fix" and 20.x and older as end of life, and says all unpatched lines remain vulnerable. Move to a supported release.
  5. If you cannot update today, Qualys's threat research team suggests avoiding Brotli decompression of untrusted input and limiting compressed payload size and decompression ratio at the reverse proxy or WAF. These are Qualys's suggestions, not Node.js's, and Qualys says they "do not make an unpatched runtime safe."

The rest of the release

Three more issues are rated high in the same Node.js release:

The release also updates c-ares, OpenSSL, SQLite and Undici, and the CA certificate store for the eMudhra intermediate CA compromise.

Not checked

We did not check other Brotli consumers (Chromium, Go, nginx, curl, Linux distributions) for advisories. Check your distribution's security tracker.

Sources

Explore More

Free Security Tools Practice Quizzes Cert Comparisons

FixTheVuln Store

Studying for Security+? Get the Study Planner

Structured study planners for CompTIA certifications. Domain trackers, time blocking, and exam strategies.

Shop Security+ Planner

Also available: CompTIA A+, Network+, CySA+, PenTest+

CyberFolio

Building cybersecurity skills? Track them in one place.

Build a shareable cybersecurity portfolio that highlights your certifications, projects, and skills, free.

Build Your Portfolio →
← Back to Home ← All Blog Posts