Zum Inhalt springen
Stackwatch, zur Startseite

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

KomponenteBetroffenGefixt ab
Brotli (C-Bibliothek, libbrotli)1.0.3 bis 1.2.01.0.10, 1.1.1, 1.2.1
Node.js 26vor 26.12.126.12.1
Node.js 24vor 24.22.124.22.1
Node.js 22vor 22.23.422.23.4
Node.js 23, 25 und älter als 22ja (End of Life)kein Fix, auf eine unterstützte Linie wechseln
Bunvor 1.4.41.4.4
Python-Paket brotli (PyPI)vor 1.2.11.2.1
Python-Paket brotlicffi (PyPI)vor 1.2.1.01.2.1.0
Envoy (nur mit Brotli-Decompressor)bis 1.36.11, 1.37.7, 1.38.5 und 1.39.21.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 --version

Die Brotli-Version, die Node.js mitbringt:

node -p "process.versions.brotli"

Python-Pakete in der jeweiligen Umgebung:

pip show brotli brotlicffi

curl und die Brotli-Version, gegen die es gelinkt ist (steht in der ersten Zeile als brotli/x.y.z):

curl -V

System-Pakete, zum Beispiel unter Debian und Ubuntu:

dpkg -l | grep -i brotli

In 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 -d

Paket-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

  1. Alle Systeme und Repos mit Node.js, Bun, Python, curl, Envoy oder eigenem Brotli auflisten.
  2. Node.js auf 22.23.4, 24.22.1 oder 26.12.1 aktualisieren, Bun auf 1.4.4, die Python-Pakete auf brotli 1.2.1 beziehungsweise brotlicffi 1.2.1.0, Envoy auf die gefixte Version deiner Linie, System-libbrotli auf das gefixte Paket deiner Distribution.
  3. Programme mit eingebauter Brotli-Kopie neu bauen, Container neu bauen und ersetzen.
  4. Alle betroffenen Prozesse neu starten.
  5. Auf dem laufenden System nachprüfen, zum Beispiel mit node -v und node -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 br im Content-Encoding am 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-Encoding ohne br senden.
  • Bei Envoy den Brotli-Decompressor aus der Konfiguration nehmen, falls er nicht gebraucht wird.

Quellen

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.

Alle Angaben nach bestem Wissen zum genannten Datum, Quellen sind verlinkt. Stackwatch ist ein Informationsdienst und ersetzt kein eigenes Patch- und Sicherheitsmanagement.