Node.js Brotli-Decoder RCE: CVE-2026-111497
Das Sicherheitsrelease von Node.js vom Oktober 2026 behebt zehn Lücken. Eine davon ist ein Fehler im Brotli-Decoder, der laut Projekt Remotecodeausführung erlaubt. Hier steht, wer betroffen ist, und bei welcher Installationsart ein Node-Update das Problem nicht löst.
Aktualisieren Sie auf Node.js 22.23.4, 24.22.1 oder 26.12.1 und starten Sie jeden
Node-Prozess neu. Die Lücke ist ein Out-of-Bounds-Write beim Entpacken von Brotli, betroffen
ist also Code, der Brotli-Daten eines Angreifers entpackt. Node.js 20 und älter haben das End
of Life erreicht und bekommen keinen Fix. Stammt Ihr Node aus Debian- oder Ubuntu-Paketen,
muss der Fix stattdessen über das System-Paket libbrotli kommen.
Die vier Fixes hoher Schwere
| CVE | Problem | Betroffene Linien |
|---|---|---|
| CVE-2026-111497 | Out-of-Bounds-Write im Brotli-Decoder erlaubt Remotecodeausführung | 26, 24, 22 |
| CVE-2026-105483 | TLS-Hostnamenprüfung umgangen, wenn die IP in Fullwidth-Ziffern geschrieben ist | 26, 24 |
| CVE-2026-106069 | TLS-Hostnamenprüfung umgangen, wenn der Host lose als IP-Adresse aufgelöst wird | 26, 24, 22 |
| CVE-2026-105482 | dns.resolve kürzt Namen, die ein NUL-Zeichen enthalten | 26, 24, 22 |
Das Release enthält außerdem drei Lücken mittlerer und drei niedriger Schwere sowie Updates für c-ares, Undici, OpenSSL auf 22.x und 24.x, SQLite auf 22.x und den CA-Speicher nach der Kompromittierung der Zwischen-CA von eMudhra. Die Release Notes führen den Brotli-Fix als Cherry-Pick in die mitgelieferte Brotli-Kopie von Node.
Wer betroffen ist
Die Lücke steckt im Entpacken. Die Frage ist also, ob Ihr Code Brotli-Daten entpackt, die jemand anderes kontrolliert:
- Server, die Request-Bodies entpacken, wenn diese mit
Content-Encoding: brgesendet werden. Prüfen Sie, ob Ihr Body-Parser oder Framework das tut. - Clients, die Antworten dekodieren von Servern, die Sie nicht kontrollieren, etwa Scraper, Webhooks, die Redirects folgen, oder Proxys, die entpacken.
- Direkte Nutzung von
zlib.brotliDecompress,brotliDecompressSyncodercreateBrotliDecompressauf hochgeladenen Dateien oder Nutzerdaten.
Eine App, die nur ihre eigenen Antworten mit Brotli komprimiert, entpackt keine fremden Daten. Aktualisieren Sie sie trotzdem. Die beiden Lücken in der TLS-Hostnamenprüfung schwächen die Zertifikatsprüfung bei ausgehenden Verbindungen, deren Host eine IP-Adresse ist oder lose als eine aufgelöst wird.
Version prüfen
node -v # korrigiert: v22.23.4, v24.22.1, v26.12.1 oder neuer
which -a node # mehr als ein node auf der Maschine?
# Debian- und Ubuntu-Pakete nutzen die System-Brotli-Bibliothek:
dpkg -l nodejs libbrotli1 | awk '/^ii/ {print $2, $3}'
ldd "$(command -v node)" | grep -i brotli
Zeigt ldd libbrotlidec, nutzt Ihr Node die System-Bibliothek, so baut
Debian sein nodejs-Paket. Die offiziellen Binaries, nvm, NodeSource und die
Docker-Images bringen eine eigene Kopie mit, und die repariert das Node-Update.
Aktualisieren und neu starten
# nvm
nvm install 24 && nvm alias default 24
# Offizielle Docker-Images wurden am 21. Oktober 2026 neu gebaut
docker pull node:24 && docker compose build --pull && docker compose up -d
# NodeSource-Pakete
sudo apt update && sudo apt install --only-upgrade nodejs
# Danach jeden Node-Prozess neu starten: pm2, systemd-Units, Container
pm2 restart all Ein laufender Prozess behält das alte Binary im Speicher. Starten Sie nach dem Upgrade pm2, systemd-Units und Container neu, und bauen Sie Images neu, statt sie nur neu zu starten.
Wenn Sie heute nicht aktualisieren können
Auf Servern können Sie Brotli-kodierte Request-Bodies am Reverse Proxy ablehnen, bis Sie patchen. Browser senden keine komprimierten Request-Bodies, normale Nutzer merken also nichts:
# Notlösung: Brotli-komprimierte Request-Bodies am Proxy ablehnen
if ($http_content_encoding ~* "br") {
return 415;
} Das deckt ausgehende Requests nicht ab. Für Clients, die von fremden Hosts laden, hilft nur das Update.
Stolperfallen
- Debians Node 20 ist upstream am Ende. Debian 13 liefert nodejs 20.19.2, das vom Node.js-Projekt nicht mehr unterstützt wird. Es nutzt die System-Brotli-Bibliothek, ob es betroffen ist, hängt also von Debians
brotli-Paket ab. Am 21. Oktober 2026 zeigte der Debian-Security-Tracker kein offenes Problem für brotli und keinen Eintrag für CVE-2026-111497. Prüfen Sie erneut, bevor Sie sich darauf verlassen. - Mehrere Node-Installationen auf einem Server. nvm, ein Systempaket und eine mitgelieferte Runtime in einer Electron- oder Appliance-App können nebeneinander liegen.
which -a nodefindet die im PATH, nicht die mitgelieferten. - Festgeschriebene Basis-Images. Ein Dockerfile mit
node:24.22.0bleibt verwundbar, egal wie oft Sie neu bauen. Setzen Sie die Version auf24.22.1oder neuer.
So wurde es geprüft. Am 21. Oktober 2026 haben wir den Beitrag des Node.js-Projekts zum Sicherheitsrelease und die Release Notes von v24.22.1 gelesen, die Aktualisierungszeiten der Docker-Hub-Tags node:26 und node:24.22.1 über die Docker-Hub-API bestätigt und die Datei debian/rules von Debians nodejs-Paket 20.19.2+dfsg-1+deb13u2 gelesen, das mit --shared-brotli baut. Nicht getestet: die Lücke selbst.
Quellen
- Wednesday, October 21, 2026 Security Releases, Node.js-Projekt
- Node.js 24.22.1 (LTS), Node.js-Projekt
- Node.js 22.23.4 und Node.js 26.12.1, Node.js-Projekt
- nodejs debian/rules, Debian Sources
- brotli, Debian-Security-Tracker
Häufige Fragen
Was ist CVE-2026-111497?
CVE-2026-111497 ist ein Out-of-Bounds-Write hoher Schwere im Brotli-Decoder, den Node.js nutzt. Laut Node.js-Projekt erlaubt er Remotecodeausführung. Betroffen sind die Release-Linien 22.x, 24.x und 26.x. Behoben wurde er am 21. Oktober 2026 durch einen Cherry-Pick in die mitgelieferte Kopie der Brotli-Bibliothek.
Welche Node.js-Versionen beheben die Brotli-Lücke?
Node.js 22.23.4, 24.22.1 und 26.12.1. Linien nach dem End of Life wie Node.js 20 bekommen keinen Fix, und laut Node.js-Projekt sind Versionen nach dem End of Life bei jedem Sicherheitsrelease immer betroffen.
Bin ich betroffen, wenn ich Node.js aus Debian- oder Ubuntu-Paketen installiert habe?
Möglicherweise, aber der Fix kommt aus einem anderen Paket. Debian baut sein nodejs-Paket mit --shared-brotli, es nutzt also die System-libbrotli statt der mitgelieferten Kopie. Ein neues Upstream-Release von Node.js ändert dort nichts. Beobachten Sie das brotli-Paket im Security-Tracker Ihrer Distribution.
Welche Node.js-Anwendungen sind von der Brotli-Lücke betroffen?
Alles, was Brotli-Daten entpackt, die ein Angreifer kontrolliert. Dazu gehören Server, die Request-Bodies mit Content-Encoding: br entpacken, und Clients, die von fremden Servern laden und br-Antworten dekodieren. Code, der nie Brotli entpackt, erreicht die Lücke nicht. Aktualisieren Sie trotzdem, denn dasselbe Release behebt drei weitere Lücken hoher Schwere.
Die kostenlose Prüfung findet alle Runtimes auf Ihren Servern und wie jede davon gepatcht wird. Die Prüfung läuft auf Englisch. Preise (EN).