← Alle Beiträge

Brotli-Sicherheitslücke betrifft Node.js, Bun, Python und Proxys

Brotli-Sicherheitslücke betrifft Node.js, Bun, Python und Proxys

Die als CVE-2026-111497 erfasste Brotli-Sicherheitslücke betrifft Software, die den decoder von Google verwendet, um Brotli-komprimierten Webverkehr zu entpacken. Speziell präparierte komprimierte Daten können über das Ende eines memory buffer hinausschreiben und memory corruption verursachen. Das bedeutet, dass Daten innerhalb eines laufenden Programms beschädigt oder verändert werden können. Die Folge können ein Absturz, ein memory leak oder remote code execution (RCE) sein, wobei ein Angreifer das betroffene Programm dazu bringt, seinen Code auszuführen.

Brotli ist ein compression format, mit dem die Größe von Webseiten und anderem Netzwerkverkehr reduziert wird. Die anfällige Komponente ist der C code, der einen Brotli stream decodiert. Da runtime-Umgebungen, Proxys und Softwarepakete jeweils eigene Kopien dieses Codes enthalten, muss jedes Projekt ein eigenes Update veröffentlichen. Die Sicherheitslücke wurde am 21. Oktober offengelegt, als Google und Node.js Korrekturen veröffentlichten; Updates für andere Produkte folgten separat.

Betroffen sind die Versionen 1.0.3 bis 1.2.0 der Google Brotli C library. Korrigierte Releases stehen als 1.0.10, 1.1.1 und 1.2.1 zur Verfügung. Bei Node.js sind die Versionszweige 22.x, 24.x und 26.x vor den jeweiligen Korrekturen anfällig. Gepatchte Versionen sind 22.23.4, 24.22.1 und 26.12.1. Node.js 20.x und ältere Releases sind ebenfalls betroffen, haben jedoch ihr End of Life erreicht. Eine Gefährdung kann entstehen, wenn fetch() eine mit Content-Encoding: br gekennzeichnete Antwort verarbeitet oder wenn Express 5 beziehungsweise body-parser 2 einen Brotli-komprimierten request body dekomprimiert. Ein einfacher Node.js-HTTP-Server dekomprimiert eingehende request bodies nicht selbstständig.

Bun 1.4.3 und frühere Versionen sind über Antworten von fetch() und node:zlib anfällig; die Korrektur ist in Bun 1.4.4 enthalten. Envoy 1.39.2, 1.38.5, 1.37.7 und 1.36.11 sind betroffen, wenn der Brotli-decompressor konfiguriert ist; korrigierte Releases sind 1.40.0, 1.39.3, 1.38.6, 1.37.8 und 1.36.12. Istio ist in den Versionen 1.31.0 bis 1.31.1, 1.30.0 bis 1.30.5 und 1.29.0 bis 1.29.8 betroffen, wenn die Brotli-decompression aktiviert ist. Die Korrekturen sind in 1.31.2, 1.30.6 und 1.29.9 enthalten. Ist die decompression in Envoy oder Istio deaktiviert, kann der anfällige Code nicht erreicht werden.

Python Brotli 1.2.0 und frühere Versionen wurden in 1.2.1 korrigiert, während brotlicffi 1.2.0.x und frühere Versionen in 1.2.1.0 korrigiert wurden. Anwendungen können gefährdet sein, ohne eines der beiden Pakete direkt zu importieren. Wenn ein anfälliges Paket installiert ist, können HTTP clients wie requests, urllib3, httpx und aiohttp Brotli-Antworten, die von einem anderen Server empfangen werden, automatisch decodieren. Die eigenständigen binaries und images von cdxgen sind beim Scannen nicht vertrauenswürdiger Eingaben ebenfalls betroffen, und zwar in den Versionen 13.4.0 und 12.8.8 sowie früheren Versionen; korrigierte Releases sind 13.5.0 und 12.8.9.

Ein Programm ist nur dann gefährdet, wenn es Brotli-Daten decodiert, die von einer anderen Person kontrolliert werden. Das kann einen bösartigen Client umfassen, der komprimierte Eingaben an einen Server sendet, oder einen bösartigen Server, der komprimierte Inhalte an einen Client zurückgibt. Das Codex Security-Team von OpenAI, das die Sicherheitslücke meldete, nannte Clients, die curl --compressed verwenden, ebenfalls als Beispiel für die zweite Richtung. Eine web application firewall (WAF), also ein Filter, der Webanfragen prüft, kann diesen ausgehenden Pfad nicht unbedingt blockieren. Vercel führte am Tag der Offenlegung firewall-Regeln ein, erklärte jedoch, dass diese nicht vor Antworten schützen, die Funktionen von anderen Servern abrufen.

Das Red Team von Imperva demonstrierte attacker-controlled code execution auf einem unveränderten Node.js-24.22.0-Build für Linux auf ARM64. Bei seiner Node2Shell-Arbeit wurden die bösartigen Daten sowohl über eine abgerufene Antwort als auch über einen Express request body übertragen. Der Exploit erforderte mehrere Versuche, wurde nicht veröffentlicht und nicht mit anderen Builds getestet. Bei den anderen betroffenen Produkten wurde code execution nicht demonstriert, und es wurden keine Angriffe in the wild gemeldet. Die Cybersecurity and Infrastructure Security Agency (CISA) verzeichnete in ihrer Bewertung vom 23. Oktober weder eine Ausnutzung noch eine Automatisierung, während Red Hat erklärte, dass kein zuverlässiges öffentliches proof of concept für code execution verfügbar sei.

Die Bewertungen des Schweregrads unterscheiden sich. Google vergab nach dem Common Vulnerability Scoring System (CVSS) 4.0 den kritischen Wert 9,2. Node.js stufte das Problem mit hohem Schweregrad ein, während Red Hat einen Wert von 8,1 vergab und es als wichtig bezeichnete. Die korrigierende Änderung am source code war Brotli bereits am 27. Februar hinzugefügt worden, wurde damals jedoch nicht als Sicherheitskorrektur erkannt und erschien erst am 21. Oktober in einem neuen Brotli-Release.

Administratoren sollten das jeweils passende korrigierte Release installieren, betroffene Dienste neu starten und container images neu erstellen. Ein weiterhin laufender Prozess verwendet weiterhin den alten decoder. Wenn ein Update nicht sofort eingespielt werden kann, empfehlen OpenAI und Aikido, mit Content-Encoding: br gekennzeichnete Anfragen zurückzuweisen, bevor ein Proxy oder body parser sie dekomprimiert, die automatische Brotli-Decodierung in HTTP clients zu deaktivieren und Brotli-Antworten vor dem Decodieren zurückzuweisen. Python-Betreiber können anfällige Brotli- und brotlicffi-Pakete entfernen, sodass Clients auf gzip oder deflate zurückfallen. Das Entfernen von br aus Accept-Encoding reicht nicht aus, da ein Server unabhängig von der Anfrage Brotli-Inhalte zurückgeben kann. Für Node.js wurde kein Workaround veröffentlicht, weshalb ein runtime-Update als vorgesehene Lösung gilt.

Pakete von Betriebssystemen können nach anderen Zeitplänen aktualisiert werden. Debian korrigierte Brotli für Debian 13 (trixie) am 23. Oktober mit Version 1.1.0-2+deb13u1. Mit Stand vom 22. Oktober führte Amazon Linux 2023 seine Korrekturen für Brotli und Node.js 24 noch als ausstehend. Tools für Abhängigkeiten können die anfälligen Python-Pakete ebenfalls übersehen, da der CVE-Eintrag auf das Repository von Google verweist und das advisory von GitHub kein betroffenes Paket aufführt – genau diese Informationen verwendet Dependabot. PYSEC-2026-4322 und PYSEC-2026-4323 wurden am 23. Oktober für die beiden Python-Pakete hinzugefügt; installierte Versionen sollten daher auch manuell überprüft werden. Organisationen, die Unterstützung bei der Prüfung betroffener runtime-Umgebungen, Pakete und Infrastrukturen benötigen, bietet AEU-I sicherheitsorientierte IT-, Infrastruktur- und Beratungsleistungen.

Auch verfügbar in: EnglishItalianoShqip