Blog
Brotli-Lücke CVE-2026-111497 (HTTP2Shell): Bin ich betroffen und was tun?
Am 21. Oktober 2026 wurde eine kritische Lücke im Brotli-Decoder von Google veröffentlicht. Sie betrifft nicht nur Node.js, sondern jede Software mit einer verwundbaren Brotli-Version, oft als eingebaute Kopie. Hier steht, was du wissen und tun musst.
Veröffentlicht am · Stackwatch-Team
Was passiert ist
Am 21. Oktober 2026 hat Google neue Brotli-Versionen veröffentlicht, die eine kritische Lücke im Brotli-Decoder schließen:
- CVE-2026-111497 (GHSA-9v8h-qqgm-4m35): ein Pufferüberlauf in
c/dec/decode.c. Ein Angreifer ohne Login kann mit einem präparierten Brotli-Datenstrom angrenzenden Speicher des Decoders überschreiben. Mögliche Folgen laut Advisory: Speicher-Offenlegung, Absturz und möglicherweise Codeausführung. CVSS 4.0: 9.2, kritisch (AT:P, der Angriff hängt also an Voraussetzungen).
Die Voraussetzung ist im Kern immer dieselbe: Eine Anwendung dekomprimiert Brotli-Daten aus einer Quelle, der sie nicht trauen kann. Das sind zum Beispiel HTTP-Requests mit Content-Encoding: br oder Antworten fremder Server, die ein HTTP-Client automatisch entpackt.
Betroffen ist nicht nur Node.js, sondern jede Software, die eine verwundbare Brotli-Version einbindet. Node.js stuft die Lücke in seinem Security-Release als „High“ ein und beschreibt den Fehler so: Ein ungültiger Block-Switch wurde als „brauche mehr Eingabe“ statt als Formatfehler gemeldet, der Decoder schrieb daraufhin über einen internen 8-Byte-Puffer hinaus. Die Lücke wird teils auch HTTP2Shell oder Node2Shell genannt.
Betroffene und gefixte Versionen
| Komponente | Betroffen | Gefixt ab |
|---|---|---|
| Brotli (C-Bibliothek, libbrotli) | 1.0.3 bis 1.2.0 | 1.0.10, 1.1.1, 1.2.1 |
| Node.js 26 | vor 26.12.1 | 26.12.1 |
| Node.js 24 | vor 24.22.1 | 24.22.1 |
| Node.js 22 | vor 22.23.4 | 22.23.4 |
| Node.js 23, 25 und älter als 22 | ja (End of Life) | kein Fix, auf eine unterstützte Linie wechseln |
| Bun | vor 1.4.4 | 1.4.4 |
Python-Paket brotli (PyPI) | vor 1.2.1 | 1.2.1 |
Python-Paket brotlicffi (PyPI) | vor 1.2.1.0 | 1.2.1.0 |
| Envoy (nur mit Brotli-Decompressor) | bis 1.36.11, 1.37.7, 1.38.5 und 1.39.2 | 1.36.12, 1.37.8, 1.38.6, 1.39.3, 1.40.0 |
Die Node.js-Releases enthalten laut Release Notes einen Cherry-Pick des Brotli-Fixes. Bun nennt in den Release Notes zu 1.4.4 Sicherheitsfixes, die unter anderem Brotli betreffen, aber keine CVE-Nummer. Welche Node.js-Linien noch Updates bekommen, steht in der End-of-Life-Übersicht.
Wird die Lücke ausgenutzt?
- Die Advisories von Brotli, Node.js und Envoy nennen keine beobachtete Ausnutzung.
- Im KEV-Katalog der CISA steht CVE-2026-111497 nicht (Katalogstand 23. Oktober 2026, geprüft am 25. Oktober).
- Ein öffentlicher Proof of Concept ist uns bis zum 25. Oktober nicht aus einer offiziellen Quelle bekannt.
Kein KEV-Eintrag heißt nicht „kann warten“: Der CVSS-Wert ist hoch, und Brotli steckt in sehr vielen Stacks. Wie du solche Lücken einordnest, erklärt der Artikel zu CVSS, EPSS und CISA KEV.
Bin ich betroffen? So prüfst du es
Node.js und Bun auf dem laufenden System:
node -v
bun --versionDie Brotli-Version, die Node.js mitbringt:
node -p "process.versions.brotli"Python-Pakete in der jeweiligen Umgebung:
pip show brotli brotlicfficurl und die Brotli-Version, gegen die es gelinkt ist (steht in der ersten Zeile als brotli/x.y.z):
curl -VSystem-Pakete, zum Beispiel unter Debian und Ubuntu:
dpkg -l | grep -i brotliIn Repos stehen die Versionen meist im Basis-Image (FROM node:…, FROM oven/bun:…, FROM python:…), in .nvmrc oder .node-version, in requirements.txt, poetry.lock oder uv.lock und in CI-Configs. Für Envoy zählt, ob in der Konfiguration ein Brotli-Decompressor (envoy.compression.brotli.decompressor) eingerichtet ist.
Schneller geht es mit dem Gratis-Check: Er prüft deine Dateien auf alle oben genannten Komponenten.
Fallstricke
Eingebaute Brotli-Kopien. Viele Programme bringen Brotli fest eingebaut mit: offizielle Node.js-Builds, Bun, die Python-Wheels von brotli und brotlicffi, mit bun build --compile gebaute Executables, selbst gebaute nginx-Module wie ngx_brotli. Ein Update des System-Pakets libbrotli ändert daran nichts. Diese Programme brauchen ihr eigenes Update oder einen neuen Build.
Distributionen ticken anders. Das Debian-Paket nodejs nutzt laut Debian Security Tracker die System-Bibliothek. Dort hilft das Update des Pakets brotli (Debian 12: 1.0.9-2+deb12u1, Debian 13: 1.1.0-2+deb13u1) und ein Neustart der Node.js-Prozesse. Maßgeblich ist der Security-Tracker deiner Distribution, nicht die Versionsnummer.
Clients sind auch betroffen. Es geht nicht nur um Server. HTTP-Clients können Brotli-Antworten automatisch entpacken, in Python etwa sobald brotli oder brotlicffi installiert ist. Wer fremde URLs abruft (Crawler, Webhooks, Link-Vorschauen), dekomprimiert Daten aus nicht vertrauenswürdiger Quelle.
Prozesse laufen weiter. Nach dem Update laufen alte Node.js-, Bun- und Python-Prozesse mit dem alten Code weiter. Bei Docker heißt das: Image neu bauen und Container ersetzen, zum Beispiel:
docker compose build --pull && docker compose up -dPaket-Scanner sehen es nicht. Dependabot prüft package-lock.json, aber nicht die Node.js-Runtime selbst und nicht die Brotli-Kopie darin. Mehr dazu im Vergleich mit Dependabot.
Was du jetzt tust
- Alle Systeme und Repos mit Node.js, Bun, Python, curl, Envoy oder eigenem Brotli auflisten.
- Node.js auf
22.23.4,24.22.1oder26.12.1aktualisieren, Bun auf1.4.4, die Python-Pakete aufbrotli 1.2.1beziehungsweisebrotlicffi 1.2.1.0, Envoy auf die gefixte Version deiner Linie, System-libbrotliauf das gefixte Paket deiner Distribution. - Programme mit eingebauter Brotli-Kopie neu bauen, Container neu bauen und ersetzen.
- Alle betroffenen Prozesse neu starten.
- Auf dem laufenden System nachprüfen, zum Beispiel mit
node -vundnode -p "process.versions.brotli".
Wenn du nicht sofort patchen kannst
Diese Maßnahmen ersetzen kein Update, sie verringern nur das Risiko bis dahin:
- Requests mit
brimContent-Encodingam Proxy oder an der WAF ablehnen, wenn deine Anwendung keine Brotli-komprimierten Uploads braucht. - Automatisches Dekomprimieren von Brotli aus nicht vertrauenswürdigen Quellen abschalten, etwa in HTTP-Clients
Accept-Encodingohnebrsenden. - Bei Envoy den Brotli-Decompressor aus der Konfiguration nehmen, falls er nicht gebraucht wird.
Quellen
- GitHub Advisory GHSA-9v8h-qqgm-4m35 (CVE-2026-111497)
- Brotli 1.2.1 Release Notes
- Node.js: October 2026 Security Releases
- Node.js 24.22.1 Release Notes
- Bun 1.4.4 Release Notes
- brotlicffi auf PyPI (Changelog 1.2.1.0)
- Brotli auf PyPI
- Envoy Advisory GHSA-3wvj-j6qm-62mr
- Debian Security Tracker: CVE-2026-111497
- NVD: CVE-2026-111497
Häufige Fragen
Was ist HTTP2Shell (CVE-2026-111497)?
Ein Pufferüberlauf im Brotli-Decoder, den Google am 21. Oktober 2026 mit neuen Brotli-Versionen geschlossen hat. Ein Angreifer ohne Login kann mit einem präparierten Brotli-Datenstrom angrenzenden Speicher des Decoders überschreiben, CVSS 4.0: 9.2. Die Lücke wird teils auch HTTP2Shell oder Node2Shell genannt.
Ist nur Node.js betroffen?
Nein, betroffen ist jede Software, die eine verwundbare Brotli-Version einbindet. Dazu gehören laut Tabelle im Artikel die Brotli-C-Bibliothek, Node.js, Bun, die Python-Pakete brotli und brotlicffi sowie Envoy mit Brotli-Decompressor.
Welche Versionen sind gefixt?
Node.js 22.23.4, 24.22.1 und 26.12.1, Bun 1.4.4, die Python-Pakete brotli 1.2.1 und brotlicffi 1.2.1.0 sowie die Brotli-Bibliothek 1.0.10, 1.1.1 und 1.2.1. Für Node.js 23, 25 und Versionen älter als 22 gibt es keinen Fix, sie sind End of Life.
Wird die Lücke ausgenutzt?
Die Advisories von Brotli, Node.js und Envoy nennen keine beobachtete Ausnutzung, und CVE-2026-111497 steht nicht im KEV-Katalog der CISA (Katalogstand 23. Oktober 2026, geprüft am 25. Oktober). Das heißt nicht, dass es warten kann: Der CVSS-Wert ist hoch, und Brotli steckt in sehr vielen Stacks.
Reicht es, das System-Paket libbrotli zu aktualisieren?
Oft nicht. Viele Programme bringen Brotli fest eingebaut mit, etwa offizielle Node.js-Builds, Bun und die Python-Wheels von brotli und brotlicffi. Sie brauchen ein eigenes Update oder einen neuen Build.
Sind auch Clients betroffen, nicht nur Server?
Ja. HTTP-Clients können Brotli-Antworten automatisch entpacken, in Python etwa sobald brotli oder brotlicffi installiert ist. Wer fremde URLs abruft, zum Beispiel Crawler, Webhooks oder Link-Vorschauen, dekomprimiert Daten aus nicht vertrauenswürdiger Quelle.