Brotli Schwachstelle CVE-2026-111497: Schutz mit Traefik IngressRoute
Im Brotli Decoder von Google gibt es mit CVE-2026-111497 eine Schwachstelle, bei der ein speziell gestalteter Inhalt einen Schreibzugriff außerhalb vom vorgesehenen Puffer auslöst.
Betroffen sind die Versionen 1.0.3 bis 1.2.0, behoben ist die Schwachstelle in 1.0.10, 1.1.1 und 1.2.1.
Da viele Laufzeitumgebungen und Bibliotheken Brotli einbinden, etwa Node.js und Python, dauert es, bis alle Anwendungen im Cluster aktualisiert sind.
Bei manchen Anwendungen ist bisher auch gar nicht ganz klar, ob diese betroffen sind, oder nicht.
Bis zur Klärung und Behebung des Problems kann ein Ingress Controller genutzt werden, um Requests abzuweisen, die einen als Brotli deklarierten Inhalt aufweisen.
Dieser Beitrag zeigt dazu eine einfache Regel für Traefik.
IngressRoute
HTTP zeichnet den Inhalt von Requests mit dem Header Content-Encoding aus.
Brotlis ist entsprechend an Content-Encoding: br zu erkennen.
Damit ist es nun möglich, dass Traefik anhand des Headers einen spezifischen Router auswählt, so dass solche Requests nicht an verwundbare Anwendungen gelangen.
Ein Ziel könnte der interne Service noop@internal sein, der die Anfrage beantwortet, ohne den Request an irgendeine Anwendung weiterzugeben.
Content-Encoding: br abweisenapiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: block-br-requests
namespace: traefik-ingress
spec:
entryPoints:
- web
routes:
- match: HeaderRegexp(`Content-Encoding`, `(?i)\bbr\b`)
priority: 10000
kind: Rule
services:
- name: noop@internal
kind: TraefikService
Unter entryPoints müssen die Einstiegspunkte eingetragen werden, die tatsächlich erreichbar sind, in der Regel websecure.
Damit die Route stets genutzt wird, hat sie eine sehr hohe Priorität erhalten und hat zudem keine einschränkenden Host- oder Pfadbedingungen.
Validierung
Die Regel kann beispielsweise in einem lokalen kind Cluster mit Traefik und der Beispielanwendung traefik/whoami als Backend getestet werden.
noop@internal antwortet mit dem Status 418, die traefik/whoami Anwendung mit dem Staatuscode 200.
$ curl -s -o /dev/null -w "%{http_code}\n" -X POST -d x localhost:18000/
200
$ curl -s -o /dev/null -w "%{http_code}\n" -X POST -H "Content-Encoding: br" -d x localhost:18000/
418
$ curl -s -o /dev/null -w "%{http_code}\n" -X POST -H "Content-Encoding: gzip, br" -d x localhost:18000/
418
$ curl -s -o /dev/null -w "%{http_code}\n" -X POST -H "Content-Encoding: gzip" -d x localhost:18000/
200
Abgerenzung
Die Regel hilfet nur bei Brotli Requests, die von außen an den Cluster gesendet werden, nicht, wenn eine Anwendung ausgehende Requests an böswillige Server sendet.
Die Regel ist lediglich eine temporäre Lösung und ersetzt nicht das Aktualisieren der betroffenen Komponenten. Welche Images eine verwundbare Brotli Version enthalten, lässt sich mit einem Scan oder durch Prüfen der Image-Layer feststellen, siehe dazu auch Layer eines Container Image bestimmen.