Sicherheit & Datenschutz

Kritische Schwachstelle im Brotli-Decoder ermöglicht Remote Code Execution in Node.js, Bun und Python

Ein Speicherbeschädigungsfehler in Googles Brotli-C-Bibliothek, der als CVE-2026-111497 verfolgt wird, ermöglicht Remote Code Execution in mehreren Runtimes, einschließlich Node.js und Bun.

Illustration einer Datenkompressions-Schwachstelle, die zu einem Speicherleck führt
Für diesen Artikel generierte Illustration

Automatisch aus dem englischen Original übersetzt.

Eine kritische Schwachstelle zur Speicherbeschädigung in Googles Brotli-Kompressionsbibliothek hat weit verbreitete Software-Stacks potenziellen Angriffen auf die Remotecodeausführung ausgesetzt. Die am 21. Oktober 2026 veröffentlichte Sicherheitslücke betrifft Node.js, Bun, Python-Pakete sowie Infrastruktur-Proxies wie Envoy und Istio. Obwohl keine aktiven Angriffe gemeldet wurden, haben Forscher die Codeausführung auf ungepatchten Node.js-Builds erfolgreich demonstriert.

Was ist passiert?

Die Schwachstelle, die unter der Kennung CVE-2026-111497 geführt wird, befindet sich im C-Code, der für das Dekodieren von Brotli-komprimierten Daten zuständig ist. Da viele Anwendungen und Runtimes ihre eigene Kopie dieses Decoders bündeln, breitet sich der Fehler unabhängig voneinander über verschiedene Ökosysteme aus. Google vergab eine kritische Schweregradbewertung von 9,2 auf der CVSS-4.0-Skala, während Node.js sie als hoch und Red Hat als wichtig einstufte. Die eigentliche Ursache wurde bereits am 27. Februar im Brotli-Quellcode gepatcht, blieb jedoch bis zum 21. Oktober unveröffentlicht, da die Entwickler sie zunächst nicht als Sicherheitslücke erkannten.

Das Red Team von Imperva demonstrierte, dass ein Angreifer beliebigen Code auf einem nicht modifizierten Node.js-24.22.0-Build ausführen kann, der auf Linux ARM64 läuft. Dies gelang durch das Senden speziell präparierter komprimierter Daten über eine abgerufene Antwort oder einen Express-Anfragekörper. Obwohl dieser Exploit mehrere Versuche erforderte und nicht öffentlich verfügbar ist, bestätigt er, dass das theoretische Risiko praktisch umsetzbar ist. Das Codex Security Team von OpenAI, das die Schwachstelle meldete, wies darauf hin, dass das Problem bidirektional wirkt: Bösartige Clients können Server kompromittieren und bösartige Server können Clients kompromittieren.

Wie funktioniert es?

Brotli ist ein von Google entwickelter Kompressionsalgorithmus zur Reduzierung der Größe von Web-Traffic. Die Schwachstelle ist ein Überlese- und Überschreibfehler im Decoder (Buffer Over-read and Overwrite). Wenn ein Programm speziell präparierte Brotli-Daten verarbeitet, schreibt der Decoder über das Ende des zugewiesenen Speicherpuffers hinaus. Diese Speicherbeschädigung kann zu Abstürzen, Datenlecks oder zur Ausführung angreiferkontrollierter Anweisungen führen. Da der Fehler in der zugrunde liegenden C-Bibliothek liegt, erbt jede Software, die gegen verwundbare Versionen des Google-Brotli-Codes gelinkt oder diese bündelt, das Risiko.

Die Gefährdung hängt davon ab, ob die Software aktiv nicht vertrauenswürdige Brotli-Streams dekodiert. Bei Node.js und Bun tritt dies auf, wenn die integrierte fetch()-API verwendet wird, um Antworten mit Content-Encoding: br abzurufen, oder wenn Middleware wie Express 5 und body-parser 2 Anfragekörper dekomprimiert. In Python ist das Risiko breiter gefächert; wenn die Pakete Brotli oder brotlicffi installiert sind, können HTTP-Clients wie requests, urllib3 und httpx Brotli-Antworten automatisch dekodieren, ohne dass ein expliziter Eingriff des Entwicklers erforderlich ist. Infrastruktur-Tools wie Envoy und Istio sind nur dann verwundbar, wenn die Brotli-Dekompression in ihrer Konfiguration explizit aktiviert ist.

Wichtige Details

  • CVE-Kennung: CVE-2026-111497.
  • Betroffene Node.js-Versionen: 22.x, 24.x und 26.x vor den Fixes; 20.x und ältere Versionen sind end-of-life.
  • Behobene Node.js-Versionen: 22.23.4, 24.22.1 und 26.12.1.
  • Betroffene Bun-Versionen: 1.4.3 und früher; behoben in 1.4.4.
  • Betroffene Python-Pakete: Brotli 1.2.0 und früher, brotlicffi 1.2.0.x und früher; behoben in 1.2.1 bzw. 1.2.1.0.
  • Infrastruktur: Envoy und Istio sind nur betroffen, wenn die Brotli-Dekompression konfiguriert und aktiviert ist.

Warum ist das relevant?

Für Engineering-Teams verdeutlicht diese Schwachstelle die versteckten Risiken von transitiven Abhängigkeiten und gebündelten C-Bibliotheken. Im Gegensatz zu typischen JavaScript-Paket-Schwachstellen befindet sich dieser Fehler in der Laufzeitumgebung selbst. Ein Update einer package.json-Abhängigkeit reicht nicht aus, wenn die zugrunde liegende Node.js- oder Bun-Runtime nicht gepatcht ist. Darüber hinaus können Python-Entwickler verwundbar sein, auch wenn sie nie direkt eine Brotli-Bibliothek importieren, da gängige HTTP-Clients diese automatisch einbinden. Dies schafft eine stille Angriffsfläche, die Standard-Dependency-Scanner möglicherweise übersehen, wenn sie systemweite oder transitive C-Bindings nicht untersuchen.

Die verzögerte Veröffentlichung des Fixes unterstreicht zudem eine Lücke in der Open-Source-Wartung. Die Codeänderung existierte monatelang ohne Release, wodurch Systeme exponiert blieben, obwohl der Patch bereits geschrieben war. Dieses Szenario erschwert die Incident Response, da Teams sich nicht ausschließlich auf automatisierte Warnungen von Paketregistries verlassen können. Eine manuelle Überprüfung der Runtime-Versionen und Container-Images ist nun erforderlich, insbesondere für Dienste, die externe Daten verarbeiten oder als Clients für andere Server fungieren.

Was Sie tun können

  • Aktualisieren Sie Node.js auf 22.23.4, 24.22.1 oder 26.12.1 und Bun auf 1.4.4 oder neuer.
  • Führen Sie ein Upgrade der Python-Pakete Brotli auf 1.2.1 und brotlicffi auf 1.2.1.0 durch oder deinstallieren Sie sie, falls sie nicht zwingend benötigt werden.
  • Starten Sie alle Dienste neu und erstellen Sie Container-Images nach dem Update neu, da laufende Prozesse die alte verwundbare Bibliothek im Speicher behalten.
  • Falls sofortige Updates nicht möglich sind, konfigurieren Sie Proxies so, dass sie Anfragen mit Content-Encoding: br ablehnen, bevor sie die Anwendung erreichen.
  • Deaktivieren Sie die automatische Brotli-Dekodierung in HTTP-Clients und entfernen Sie br aus den Accept-Encoding-Headern, wo immer dies machbar ist. Beachten Sie jedoch, dass Server weiterhin Brotli-Inhalte senden könnten.
  • Überprüfen Sie die installierten Versionen der Python-Pakete manuell, da Dependency-Scanner wie Dependabot die spezifischen PyPI-Pakete im Zusammenhang mit dieser CVE möglicherweise noch nicht kennzeichnen.
  • #security
  • #nodejs
  • #python
  • #vulnerability
  • #brotli

Tools aus dem Bytechap-Shop

Weiterlesen

Alle Artikel