Patching

Node.js Brotli decoder RCE: CVE-2026-111497

The October 2026 Node.js security release fixes ten issues. One is a Brotli decoder bug the project says permits remote code execution. Here is who is exposed, and the one install method where updating Node does not fix it.

The short answer

Update to Node.js 22.23.4, 24.22.1 or 26.12.1 and restart every Node process. The bug is an out-of-bounds write in Brotli decompression, so code that decompresses attacker-supplied Brotli data is exposed. Node.js 20 and older are end of life and get no fix. If your Node comes from Debian or Ubuntu packages, the fix has to come through the system libbrotli package instead.

The four high-severity fixes

CVEIssueLines affected
CVE-2026-111497Brotli decoder out-of-bounds write permits remote code execution26, 24, 22
CVE-2026-105483TLS hostname check bypass when the IP is written in fullwidth digits26, 24
CVE-2026-106069TLS hostname check bypass when the host loosely resolves to an IP26, 24, 22
CVE-2026-105482dns.resolve truncates names containing a NUL character26, 24, 22

The release also has three medium and three low issues, plus dependency updates for c-ares, Undici, OpenSSL on 22.x and 24.x, SQLite on 22.x, and the CA store after the eMudhra intermediate CA compromise. The release notes list the Brotli fix as a cherry-pick into Node's bundled copy of the Brotli library.

Who is exposed

The bug sits in decompression, so the question is whether your code decompresses Brotli data someone else controls:

An app that only compresses its own responses with Brotli is not decompressing untrusted input. Patch it anyway. The two TLS hostname bypasses weaken certificate checks on outbound connections where the host is an IP address or something that loosely resolves to one.

Check your version

node -v                           # fixed: v22.23.4, v24.22.1, v26.12.1 or later
which -a node                     # more than one node on the box?
# Debian and Ubuntu packages link the system Brotli library:
dpkg -l nodejs libbrotli1 | awk '/^ii/ {print $2, $3}'
ldd "$(command -v node)" | grep -i brotli

If ldd shows libbrotlidec, your Node uses the system library, which is how Debian builds its nodejs package. The official binaries, nvm, NodeSource and the Docker images bundle their own copy, and the Node update fixes them.

Update and restart

# nvm
nvm install 24 && nvm alias default 24

# Official Docker images were rebuilt on 21 October 2026
docker pull node:24 && docker compose build --pull && docker compose up -d

# NodeSource packages
sudo apt update && sudo apt install --only-upgrade nodejs

# Then restart every Node process: pm2, systemd units, containers
pm2 restart all

A running process keeps the old binary loaded. Restart pm2, systemd units and containers after the upgrade, and rebuild images instead of only restarting them.

If you cannot update today

For servers, refuse Brotli-encoded request bodies at the reverse proxy until you can patch. Browsers do not send compressed request bodies, so ordinary users will not notice:

# Stopgap: refuse Brotli-compressed request bodies at the proxy
if ($http_content_encoding ~* "br") {
    return 415;
}

That does not cover outbound requests. For clients that fetch from untrusted hosts, the only fix is the update.

Gotchas

How this was checked. On 21 October 2026 we read the Node.js security release post and the v24.22.1 release notes, confirmed the Docker Hub update times for the node:26 and node:24.22.1 tags through the Docker Hub API, and read the debian/rules file of Debian's nodejs 20.19.2+dfsg-1+deb13u2 package, which passes --shared-brotli. Not tested: the vulnerability itself.

Sources

  1. Wednesday, October 21, 2026 Security Releases, Node.js project
  2. Node.js 24.22.1 (LTS), Node.js project
  3. Node.js 22.23.4 and Node.js 26.12.1, Node.js project
  4. nodejs debian/rules, Debian sources
  5. brotli, Debian security tracker

Questions

What is CVE-2026-111497?

CVE-2026-111497 is a high-severity out-of-bounds write in the Brotli decoder used by Node.js. The Node.js project says it permits remote code execution. It affects the 22.x, 24.x and 26.x release lines and was fixed on 21 October 2026 by cherry-picking a fix into Node's bundled copy of the Brotli library.

Which Node.js versions fix the Brotli vulnerability?

Node.js 22.23.4, 24.22.1 and 26.12.1. End-of-life lines such as Node.js 20 get no fix, and the Node.js project says end-of-life versions are always affected when a security release ships.

Am I affected if I installed Node.js from Debian or Ubuntu packages?

Possibly, but the fix comes from a different package. Debian builds its nodejs package with --shared-brotli, so it uses the system libbrotli library instead of Node's bundled copy. Updating to a new upstream Node.js release does not apply there. Watch the brotli package in your distribution's security tracker.

Which Node.js applications are exposed to the Brotli bug?

Anything that decompresses Brotli data an attacker controls. That includes servers that inflate request bodies sent with Content-Encoding: br, and clients that fetch from untrusted servers and decode br responses. Code that never decompresses Brotli does not reach the bug, but patch anyway because the same release fixes three other high-severity issues.

Node services you have not touched in months?

The free review finds every runtime on your servers and how each one gets patched. Pricing.

Free server review