CVE-2026-111497: Brotli decoder out-of-bounds write in Node.js enables RCE (Node2Shell)

Exploited in the wild Critical 9.2 EPSS 82.6% Brotli

An unchecked return value in the Google Brotli decoder (versions 1.0.3 to 1.2.0) turns a malformed block switch into an out-of-bounds write, so attacker-supplied Brotli data reaching Node.js through request bodies with Content-Encoding: br (Express 5 / body-parser 2), Brotli responses decoded by fetch(), or node:zlib Brotli calls can crash the process, leak memory or run code. Public exploits give a shell on official Node.js 24.22.0 builds and CISA added it to the KEV catalog on 2026-10-27 (due 2026-11-10). Fixed in Node.js 22.23.4, 24.22.1 and 26.12.1 and in Brotli 1.0.10/1.1.1/1.2.1; distro Node.js builds that link the system libbrotli are fixed by the brotli package update.

Also known as “Node2Shell”.

What do these terms mean? CVE · CVSS score · exploited (KEV) · EPSS · backported fix · all terms

What to do now

  1. Check whether you run Brotli and which version (commands below).
  2. Install the fixed version for your system: see “Patch it” below.
  3. Restart every Node.js process after updating, including processes that only loaded the system libbrotli (a library update does not affect running processes): systemd: sudo systemctl restart <app>.service; PM2: pm2 update, then pm2 save; containers: rebuild and recreate. Other services that decode Brotli with the system library (for example curl/git clients, nginx brotli modules, Python brotli) also need a restart; find them with: sudo lsof -n | grep -E 'libbrotli.*\(deleted\)'.
  4. If you cannot patch today, apply the temporary mitigation below and patch as soon as possible.
  5. Because this flaw is being exploited, also check the server for signs of compromise.

Affected and fixed versions

Affected:

Fixed in:

Node.js lines affected: 22.x || 24.x || 26.x; fixed in ^22.23.4 || ^24.22.1 || ^26.12.1.

Am I affected?

node -v   # official/NodeSource/nvm/Docker builds bundle Brotli: need 22.23.4, 24.22.1, 26.12.1 or later
ldd "$(command -v node)" | grep -i brotli   # output = node uses the system libbrotli, so the brotli package must be updated
# process.versions.brotli is not a reliable indicator: it still reports 1.2.0 on patched Node.js builds
dpkg -l libbrotli1 | grep ^ii                  # Debian/Ubuntu
rpm -q brotli libbrotli; dnf module list --enabled nodejs   # RHEL
apk info -v brotli-libs nodejs nodejs-current   # Alpine
pkg audit -F                                    # FreeBSD
sudo lsof -n 2>/dev/null | grep -E 'libbrotli.*\(deleted\)'   # processes still using the old library after an update

Patch it

Use the commands for your system. Distribution packages often keep an older version number with the fix backported, so compare with the fixed package versions in the table below, not only with the upstream version.

Debian
sudo apt update
sudo apt install --only-upgrade libbrotli1 nodejs
# Debian's nodejs links the system libbrotli; NodeSource builds bundle their own and need nodejs >= 22.23.4 / 24.22.1 / 26.12.1
node -v
Ubuntu
sudo apt update
sudo apt install --only-upgrade libbrotli1 nodejs
# Ubuntu nodejs on 22.04+ uses the system brotli (USN-8956-1); 20.04 nodejs uses a vendored copy and is still marked 'needed'
node -v
RHEL, AlmaLinux, Rocky, Oracle
# System brotli (used by nodejs:22 on RHEL 8/9 and nodejs22/nodejs24 on RHEL 10)
sudo dnf upgrade --refresh brotli      # RHEL 8
sudo dnf upgrade --refresh libbrotli   # RHEL 9 / 10 (and brotli if installed)
# nodejs:24 module streams bundle brotli (RHEL 8/9)
sudo dnf upgrade --refresh 'nodejs*'
node -v
Fedora
sudo dnf upgrade --refresh libbrotli brotli
SUSE / openSUSE
sudo zypper refresh
sudo zypper update libbrotlicommon1 libbrotlidec1 brotli
Amazon Linux
sudo dnf upgrade --releasever=latest libbrotli brotli
Arch Linux
sudo pacman -Syu
Alpine
apk update
apk upgrade brotli-libs          # main-repo nodejs uses the system library
apk upgrade nodejs-current       # 3.24 community, if installed (26.12.1-r0)
node -v
FreeBSD
pkg update
pkg upgrade brotli node24   # node ports link the system brotli; or node22 / node26 / node
pkg audit -F
Docker images
# Official node images ship the upstream binary with bundled Brotli: rebuild on a fixed tag
#   FROM node:24.22.2-trixie-slim   (also: node:22.23.4-alpine, node:26.13.0-slim)
docker pull node:24.22.2-trixie-slim
docker build --pull -t myapp:patched .
docker run --rm myapp:patched node -v   # must be 22.23.4 / 24.22.1 / 26.12.1 or later
docker compose up -d --force-recreate
Built from source
# nvm: install the newest patch release of your line and make it the default
nvm install 24 --reinstall-packages-from=current   # or 22 / 26
nvm alias default 24
node -v   # must be at least 22.23.4 / 24.22.1 / 26.12.1
# Official binaries (Linux x64); verify the checksum before installing
VER=v24.22.2   # current fixed releases: v22.23.4, v24.22.2, v26.13.0
curl -fsSLO https://nodejs.org/dist/$VER/node-$VER-linux-x64.tar.xz
curl -fsSLO https://nodejs.org/dist/$VER/SHASUMS256.txt
grep " node-$VER-linux-x64.tar.xz\$" SHASUMS256.txt | sha256sum -c -
sudo tar -xJf node-$VER-linux-x64.tar.xz -C /usr/local --strip-components=1
/usr/local/bin/node -v

General update steps for every system are on the Linux and Unix & BSD pages; after updating, see which services to restart.

Fix status in Linux distributions

ReleasePackageStatusFixed version / advisory
Debian 12brotlifixed1.0.9-2+deb12u1
Debian 13brotlifixed1.1.0-2+deb13u1
Debian testingbrotlinot fixed yet
Debian 12nodejsnot fixed yet
Debian 13nodejsnot fixed yet
Debian testingnodejsnot fixed yet
Debian 13python-brotlicffinot fixed yet
Debian testingpython-brotlicffifixed1.2.1.0+ds-1
Ubuntu 22.04brotlifixed1.0.9-2ubuntu0.1
Ubuntu 24.04brotlifixed1.1.0-2ubuntu0.1
Ubuntu 18.04 (ESM)brotlifixed1.0.3-1ubuntu1.3+esm1
Ubuntu 20.04 (ESM)brotlifixed1.0.7-6ubuntu0.1+esm1
Ubuntu 26.04brotlifixed1.2.0-3ubuntu0.1
Ubuntu 26.10brotlifixed1.2.0-4ubuntu0.1
Ubuntu 18.04 (ESM)nodejsnot affected
Ubuntu 22.04nodejsnot affected
Ubuntu 24.04nodejsnot affected
Ubuntu 26.04nodejsnot affected
Ubuntu 26.10nodejsnot affected
Ubuntu 20.04 (ESM)nodejsnot fixed yet
Ubuntu 22.04dotnet6deferred
Ubuntu 22.04dotnet7not planned
Ubuntu 22.04dotnet8fixed8.0.133-8.0.33-0ubuntu1~22.04.1
Ubuntu 24.04dotnet8fixed8.0.133-8.0.33-0ubuntu1~24.04.1
Ubuntu 24.04dotnet10fixed10.0.114-10.0.14-0ubuntu1~24.04.1
Ubuntu 26.04dotnet10fixed10.0.114-10.0.14-0ubuntu1~26.04.1
Ubuntu 26.10dotnet10fixed10.0.114-10.0.14-0ubuntu1~26.10.1
Ubuntu 26.10dotnet11fixed11.0.100-11.0.0~rc3-0ubuntu1~26.10.1
Red Hat Enterprise Linux 9firefox-0:140.10.0-1.el9_7fixedRHSA-2026:10757
Red Hat Enterprise Linux 9thunderbird-0:140.10.0-1.el9_7fixedRHSA-2026:15892
Red Hat Enterprise Linux 9brotli-0:1.0.9-10.el9_8.1fixedRHSA-2026:90495
Red Hat Enterprise Linux 9nodejs:24-9080020261027142403.rhel9fixedRHSA-2026:92378
Red Hat Enterprise Linux 9dotnet8.0-0:8.0.133-1.el9_8fixedRHSA-2026:92492
Red Hat Enterprise Linux 9nodejs:26/nodejsaffected
Red Hat Enterprise Linux 8firefox-0:140.10.0-1.el8_10fixedRHSA-2026:10766
Red Hat Enterprise Linux 8thunderbird-0:140.10.0-1.el8_10fixedRHSA-2026:13537
Red Hat Enterprise Linux 8brotli-0:1.0.6-5.el8_10fixedRHSA-2026:90501
Red Hat Enterprise Linux 8nodejs:24-8100020261027151919.6d880403fixedRHSA-2026:92376
Red Hat Enterprise Linux 8dotnet8.0-0:8.0.133-1.el8_10fixedRHSA-2026:92420
Red Hat Enterprise Linux 10firefox-0:140.10.0-1.el10_1fixedRHSA-2026:10767
Red Hat Enterprise Linux 10thunderbird-0:140.10.0-1.el10_2fixedRHSA-2026:19131
Red Hat Enterprise Linux 10brotli-0:1.1.0-8.el10_2.1fixedRHSA-2026:90449
Red Hat Enterprise Linux 10dotnet8.0-0:8.0.133-1.el10_2fixedRHSA-2026:92428
Debian 12 (bookworm)brotli (libbrotli1)fixed1.0.9-2+deb12u1 (DLA-4855-1)
Debian 13 (trixie)brotli (libbrotli1)fixed1.1.0-2+deb13u1 (DSA-6582-1)
Ubuntu 22.04 LTS (jammy)libbrotli1fixed1.0.9-2ubuntu0.1 (USN-8956-1)
Ubuntu 24.04 LTS (noble)libbrotli1fixed1.1.0-2ubuntu0.1 (USN-8956-1)
Ubuntu 26.04 LTS (resolute)libbrotli1fixed1.2.0-3ubuntu0.1 (USN-8956-1)
Ubuntu 26.10 (stonking)libbrotli1fixed1.2.0-4ubuntu0.1 (USN-8956-1)
RHEL 8brotlifixed1.0.6-5.el8_10 (RHSA-2026:90501)
RHEL 9brotli / libbrotlifixed1.0.9-10.el9_8.1 (RHSA-2026:90495)
RHEL 10brotli / libbrotlifixed1.1.0-8.el10_2.1 (RHSA-2026:90449)
RHEL 8 (nodejs:24 module, bundled brotli)nodejsfixed1:24.22.1-1.module+el8.10.0+25218+d9e131cb (RHSA-2026:92376)
RHEL 9 (nodejs:24 module, bundled brotli)nodejsfixed1:24.22.1-3.module+el9.8.0+25216+afa2a4a4 (RHSA-2026:92378)
RHEL 9 (nodejs:26 module)nodejsfixedno fix yet (Red Hat: Affected, 2026-11-03)
Alpine 3.23 / 3.24 / edgebrotli-libsfixed1.2.1-r0 (secdb)
Alpine 3.22brotli-libsfixed1.1.1-r0 (in repository; not yet listed in secdb)
Alpine 3.24nodejs-currentfixed26.12.1-r0 (secdb)
FreeBSDbrotlifixed1.2.1,1 (VuXML f1e61d76-cdb6-11f1-b15e-589cfc104230)
FreeBSD (ports/pkg)node22 / node24 / node26 / nodefixed22.23.4 / 24.22.1 / 26.12.1 / 24.22.1 (VuXML 33a752ba-4cbe-46d8-abda-587011d90575)

From the Debian security tracker, Ubuntu CVE tracker and Red Hat Security Data API, refreshed every few hours.

If you cannot patch yet

Look for signs of exploitation

CISA required action: Apply mitigations in accordance with vendor instructions, ensuring compliance with CISA’s BOD 26-04 Prioritizing Security Updates Based on Risk (see URL in Notes) guidance and CISA’s “Forensics Triage Requirements” (see URL in Notes). Follow applicable BOD 26-04 guidance for cloud services or discontinue use of the product if mitigations are unavailable. Stakeholders are responsible for evaluating each asset's internet exposure and ensuring adherence to BOD 26-04 patching guidelines.

This vulnerability affects an open-source component, third-party library, protocol, or proprietary implementation that could be used by different products. For more information, please see: https://github.com/google/brotli/releases/tag/v1.2.1 ; ; BOD 26-04: https://www.cisa.gov/news-events/directives/bod-26-04-prioritizing-security-updates-based-risk ; Forensics Triage Requirements: https://www.cisa.gov/news-events/directives/bod-26-04-implementation-guidance-prioritizing-security-updates-based-risk ; https://nvd.nist.gov/vuln/detail/CVE-2026-111497

Related vulnerabilities

Sources

Page generated automatically from official sources on 2026-11-03 17:06 UTC and reviewed by an editor. Always confirm with your vendor's advisory.