
Checkmk-Erweiterung, die Linux-Hosts auf von CVE-2026-111497 betroffene Brotli-Decoder (libbrotlidec, Node.js, Python, .NET) prüft und dabei Versionen, Backports und veraltete Prozesse kontrolliert.
Eine Checkmk-Erweiterung, die für jeden Brotli-Decoder auf einem Linux-Host anzeigt, ob er von Broccoli2Shell betroffen ist – CVE-2026-111497, einem Out-of-Bounds-Schreibzugriff im C-Brotli-Decoder von Google, der zu Remote-Code-Execution führen kann, wenn ein Programm Brotli-Daten aus einer nicht vertrauenswürdigen Quelle dekomprimiert (eine HTTP-Antwort, ein Request-Body, ein Archiv). Die Schwachstelle wurde am 2026-10-21/22 offengelegt und in Brotli 1.0.10, 1.1.1 und 1.2.1, Node.js 22.23.4, 24.22.1 und 26.12.1, den Python-Paketen Brotli 1.2.1 und brotlicffi 1.2.1.0 sowie .NET 8.0.33, 9.0.22 und 10.0.14 behoben.
Sie enthält ein kleines POSIX-Shell-Agent-Plug-in, das ausschließlich Fakten sammelt (die Systembibliothek libbrotlidec, Node.js-Binärdateien, Python-Brotli- und brotlicffi-Installationen, .NET-Runtimes, deren Versionen, Paket-Changelogs, gegen was sie gelinkt sind, welche Prozesse sie geladen haben und welche noch eine ersetzte Version ausführen). Ob das „behoben" oder „verwundbar" bedeutet, entscheidet das Check-Plug-in auf dem Checkmk-Server, sodass neue Informationen – eine weitere behobene Version – nur ein aktualisiertes .mkp benötigen, nicht ein neues Skript auf jedem Host.
Warum nicht einfach Versionsnummern vergleichen: Distributionen backporten den Fix, ohne die Upstream-Version zu ändern, und sie bauen Node.js gegen die Systembibliothek statt gegen die von Node.js mitgelieferte Kopie. Debian 12 liefert libbrotli 1.0.9 und Node.js 18.20.4 (Upstream-End-of-Life, kein Fix) – beide behoben, weil das aktualisierte Paket libbrotli1 der Decoder ist, den Node.js ausführt. Die Erweiterung liest daher das Changelog des Pakets, dem jeder Decoder gehört, und folgt Node.js- und Python-Erweiterungen zu der Bibliothek, gegen die sie gelinkt sind.
cmk_addons.plugins-Plugin-API)./proc/<pid>/maps aller Prozesse). Reines POSIX-sh mit GNU- oder busybox-Werkzeugen; Paket-Changelogs werden mit dpkg, rpm oder apk gelesen. Getestet auf der Debian-Familie, der Red-Hat-Familie, Amazon Linux und Alpine, siehe unten.| Checkmk-Image | Datum | Ergebnis |
|---|---|---|
checkmk/check-mk-ultimate:2.5.0p17 | 2026-10-28 | OK (Build, cmk-validate-plugins, Smoke-Test, Installation + Discovery + Check + Agent Bake) |
checkmk/check-mk-ultimate:3.0.0-2026.10.28 (daily) | 2026-10-28 | OK (Build, cmk-validate-plugins, Smoke-Test, Installation + Discovery + Check + Agent Bake) |
Das Agent-Plug-in wurde am 2026-10-28 gegen die Pakete der Distributionen selbst und die offiziellen Images ausgeführt (scripts/test_agent_plugin.sh), mit einem Node- und einem Python-Prozess, die den Decoder geladen hatten. Anschließend wurden die Bibliothek, die Node-Binärdatei und die Python-Erweiterungsmodule auf der Festplatte ersetzt, und die Neustart-Erkennung meldete die laufenden Prozesse.
Distributionen
| Distribution | Decoder | Plug-in-Ergebnis |
|---|---|---|
| Debian 12 | libbrotli 1.0.9-2+deb12u1, Node.js 18.20.4 (verlinkt), python3-brotli | behoben durch Backport (Changelog), Node.js über die Bibliothek |
| Debian 13 | libbrotli 1.1.0-2+deb13u1, Node.js 20.19.2 (verlinkt), python3-brotli, python3-brotlicffi (verlinkt) | behoben durch Backport, Node.js und brotlicffi über die Bibliothek |
| Ubuntu 24.04 | libbrotli 1.1.0-2ubuntu0.1, Node.js 18.19.1 (verlinkt), python3-brotli, dotnet-runtime-8.0 8.0.32 | behoben durch Backport - .NET anfällig (8.0.33 noch nicht im Archiv) |
| AlmaLinux 8.10 | libbrotli 1.0.6-5.el8_10, Node.js 10.24.0 (eigener Decoder), python3-brotli | Bibliothek und Brotli durch Backport behoben - Node.js 10 anfällig (End of Life, eigener Decoder) |
| AlmaLinux 9.8 | libbrotli 1.0.9-10.el9_8.1, Node.js 16.20.2 (verlinkt), python3-brotli, dotnet-runtime-8.0 8.0.32 | behoben durch Backport - .NET anfällig |
| AlmaLinux 10.2 | libbrotli 1.1.0-8.el10_2.1, Node.js 22.23.2 (verlinkt), python3-brotli | behoben durch Backport |
| Fedora 44 | libbrotli 1.2.1, Node.js 22.23.1 (verlinkt), python3-brotli 1.2.1 | behoben durch Version |
| Amazon Linux 2023 | libbrotli 1.1.0-1.amzn2023.0.1, Node.js 18.20.8 (verlinkt) | anfällig - noch kein behobenes Paket, Node.js über die Bibliothek |
| Alpine 3.22 | brotli-libs 1.1.1, Node.js 22.23.4 (verlinkt), py3-brotli 1.1.1 | behoben durch Version |
Offizielle Images und PyPI
| Image | Decoder | Plug-in-Ergebnis |
|---|---|---|
node:24.22.0-slim | Node.js 24.22.0 (eigener Decoder) | anfällig |
node:24.22.1-slim | Node.js 24.22.1 (eigener Decoder) | behoben durch Version |
node:20-alpine | Node.js 20.20.2 (eigener Decoder) | anfällig - End of Life, keine Behebung |
node:24.22.0-slim, Binary verschoben nach /home/dev/.nvm/... (einem Benutzer gehörend) | Node.js 24.22.0 | anfällig - Version aus dem Binary gelesen, nicht ausgeführt |
python:3.12-slim + pip install Brotli==1.2.0 brotlicffi==1.2.0.0, venv mit Brotli 1.1.0 in /srv/app/venv | Brotli, brotlicffi (eigene Decoder) | anfällig (das venv wurde über seinen laufenden Prozess gefunden) |
python:3.12-slim + aktuelles PyPI | Brotli 1.2.1, brotlicffi 1.2.1.0 | behoben durch Version |
mcr.microsoft.com/dotnet/runtime:8.0.32 / :8.0 | .NET 8.0.32 / 8.0.33 | anfällig / behoben durch Version |
Die Checkmk-Site selbst (2.5.0p17) liefert kein Brotli-Paket in ihrem Python mit. Das Plug-in wurde noch nicht auf einem Produktionshost außerhalb von Containern ausgeführt - insbesondere nicht mit durchsetzendem SELinux (RHEL-Familie); der Agent läuft dort normalerweise unconfined.
Lade das .mkp aus einem Release herunter (oder baue es selbst, siehe
Entwicklung).
Setup > Maintenance > Extension packages > Upload package, oder auf der Kommandozeile innerhalb der Site:
mkp add broccoli2shell-<version>.mkp
mkp enable broccoli2shell <version>
Stellen Sie das Agent-Plug-in auf den Hosts bereit, die Sie prüfen möchten:
Führen Sie eine Service-Discovery auf den Hosts durch. Jeder Decoder erhält einen eigenen Service, plus einen
Broccoli2Shell restart-Service pro Host.
Optional: Passen Sie die States in Setup > Services > Service monitoring rules > Broccoli2Shell (CVE-2026-111497) und Broccoli2Shell restart an.
Kopieren Sie package/agents/plugins/broccoli2shell in ein Cache-Intervall-Unterverzeichnis des
Plug-in-Verzeichnisses des Agents und machen Sie es ausführbar:
install -m 755 broccoli2shell /usr/lib/check_mk_agent/plugins/3600/broccoli2shell