
Extension Checkmk qui audite les hôtes Linux pour détecter les décodeurs Brotli (libbrotlidec, Node.js, Python, .NET) affectés par CVE-2026-111497, en vérifiant les versions, les backports et les processus obsolètes.
Une extension Checkmk qui indique, pour chaque décodeur Brotli sur un hôte Linux, s'il est affecté par Broccoli2Shell - CVE-2026-111497, une écriture hors limites dans le décodeur Brotli C de Google pouvant mener à une exécution de code à distance lorsqu'un programme décompresse des données Brotli provenant d'une source non fiable (une réponse HTTP, un corps de requête, une archive). Elle a été divulguée le 2026-10-21/22 et corrigée dans Brotli 1.0.10, 1.1.1 et 1.2.1, Node.js 22.23.4, 24.22.1 et 26.12.1, les paquets Python Brotli 1.2.1 et brotlicffi 1.2.1.0, et .NET 8.0.33, 9.0.22 et 10.0.14.
Elle fournit un petit plug-in d'agent en shell POSIX qui ne fait que collecter des faits (la bibliothèque système libbrotlidec, les binaires Node.js, les installations Python Brotli et brotlicffi, les runtimes .NET, leurs versions, les journaux de modifications des paquets, ce à quoi ils sont liés, quels processus les ont chargés et lesquels exécutent encore une version remplacée). La décision « corrigé » ou « vulnérable » est prise par le plug-in de vérification sur le serveur Checkmk, de sorte qu'une nouvelle information - une autre version corrigée - ne nécessite qu'un .mkp mis à jour, et non un nouveau script sur chaque hôte.
Pourquoi ne pas simplement comparer les numéros de version : les distributions rétroportent le correctif sans changer la version amont, et elles compilent Node.js contre la bibliothèque système plutôt que contre la copie embarquée par Node.js. Debian 12 fournit libbrotli 1.0.9 et Node.js 18.20.4 (fin de vie en amont, pas de correctif) - les deux corrigés, car le paquet libbrotli1 mis à jour est le décodeur que Node.js exécute. L'extension lit donc le journal de modifications du paquet qui possède chaque décodeur, et suit les extensions Node.js et Python jusqu'à la bibliothèque contre laquelle elles sont liées.
cmk_addons.plugins)./proc/<pid>/maps de tous les processus). Shell POSIX sh simple avec les outils GNU ou busybox ; les journaux de modifications des paquets sont lus avec dpkg, rpm ou apk. Testé sur la famille Debian, la famille Red Hat, Amazon Linux et Alpine, voir ci-dessous.| Image Checkmk | Date | Résultat |
|---|---|---|
checkmk/check-mk-ultimate:2.5.0p17 | 2026-10-28 | OK (build, cmk-validate-plugins, smoke test, install + 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, install + discovery + check + agent bake) |
Le plug-in d'agent a été exécuté contre les paquets propres aux distributions et les images officielles le 2026-10-28 (scripts/test_agent_plugin.sh), avec un processus node et un processus python ayant le décodeur chargé. Ensuite, la bibliothèque, le binaire node et les modules d'extension Python ont été remplacés sur le disque, et la détection de redémarrage a signalé les processus en cours d'exécution.
Distributions
| Distribution | Décodeurs | Résultat du plug-in |
|---|---|---|
| Debian 12 | libbrotli 1.0.9-2+deb12u1, Node.js 18.20.4 (lié), python3-brotli | corrigé par backport (changelog), Node.js via la bibliothèque |
| Debian 13 | libbrotli 1.1.0-2+deb13u1, Node.js 20.19.2 (lié), python3-brotli, python3-brotlicffi (lié) | corrigé par backport, Node.js et brotlicffi via la bibliothèque |
| Ubuntu 24.04 | libbrotli 1.1.0-2ubuntu0.1, Node.js 18.19.1 (lié), python3-brotli, dotnet-runtime-8.0 8.0.32 | corrigé par backport - .NET vulnérable (8.0.33 pas encore dans l'archive) |
| AlmaLinux 8.10 | libbrotli 1.0.6-5.el8_10, Node.js 10.24.0 (décodeur propre), python3-brotli | bibliothèque et Brotli corrigés par backport - Node.js 10 vulnérable (fin de vie, décodeur propre) |
| AlmaLinux 9.8 | libbrotli 1.0.9-10.el9_8.1, Node.js 16.20.2 (lié), python3-brotli, dotnet-runtime-8.0 8.0.32 | corrigé par backport - .NET vulnérable |
| AlmaLinux 10.2 | libbrotli 1.1.0-8.el10_2.1, Node.js 22.23.2 (lié), python3-brotli | corrigé par backport |
| Fedora 44 | libbrotli 1.2.1, Node.js 22.23.1 (lié), python3-brotli 1.2.1 | corrigé par version |
| Amazon Linux 2023 | libbrotli 1.1.0-1.amzn2023.0.1, Node.js 18.20.8 (lié) | vulnérable - aucun paquet corrigé pour l'instant, Node.js via la bibliothèque |
| Alpine 3.22 | brotli-libs 1.1.1, Node.js 22.23.4 (lié), py3-brotli 1.1.1 | corrigé par version |
Images officielles et PyPI
| Image | Décodeurs | Résultat du plug-in |
|---|---|---|
node:24.22.0-slim | Node.js 24.22.0 (décodeur propre) | vulnérable |
node:24.22.1-slim | Node.js 24.22.1 (décodeur propre) | corrigé par version |
node:20-alpine | Node.js 20.20.2 (décodeur propre) | vulnérable - fin de vie, pas de correctif |
node:24.22.0-slim, binaire déplacé vers /home/dev/.nvm/... (appartenant à un utilisateur) | Node.js 24.22.0 | vulnérable - version lue depuis le binaire, non exécuté |
python:3.12-slim + pip install Brotli==1.2.0 brotlicffi==1.2.0.0, venv avec Brotli 1.1.0 dans /srv/app/venv | Brotli, brotlicffi (décodeurs propres) | vulnérable (le venv trouvé via son processus en cours d'exécution) |
python:3.12-slim + PyPI actuel | Brotli 1.2.1, brotlicffi 1.2.1.0 | corrigé par version |
mcr.microsoft.com/dotnet/runtime:8.0.32 / :8.0 | .NET 8.0.32 / 8.0.33 | vulnérable / corrigé par version |
Le site Checkmk lui-même (2.5.0p17) n'embarque aucun paquet Brotli dans son Python. Le plug-in n'a pas encore été exécuté sur un hôte de production hors conteneurs - en particulier pas avec SELinux en mode enforcing (famille RHEL) ; l'agent s'exécute normalement en mode non confiné dans ce cas.
Téléchargez le .mkp depuis une release (ou compilez-le vous-même, voir
Développement).
Setup > Maintenance > Extension packages > Upload package, ou en ligne de commande à l'intérieur du site :
mkp add broccoli2shell-<version>.mkp
mkp enable broccoli2shell <version>
Déployez le plug-in d'agent sur les hôtes que vous souhaitez vérifier :
Lancez une découverte de services sur les hôtes. Chaque décodeur obtient son propre service, plus un
service Broccoli2Shell restart par hôte.
Facultatif : ajustez les états dans Setup > Services > Service monitoring rules > Broccoli2Shell (CVE-2026-111497) et Broccoli2Shell restart.
Copiez package/agents/plugins/broccoli2shell dans un sous-répertoire d'intervalle de cache du
répertoire des plug-ins de l'agent et rendez-le exécutable :
install -m 755 broccoli2shell /usr/lib/check_mk_agent/plugins/3600/broccoli2shell