
Extensión de Checkmk que audita hosts Linux en busca de decodificadores Brotli (libbrotlidec, Node.js, Python, .NET) afectados por CVE-2026-111497, comprobando versiones, backports y procesos obsoletos.
Una extensión de Checkmk que muestra, para cada decodificador Brotli en un host Linux, si se ve afectado por Broccoli2Shell - CVE-2026-111497, una escritura fuera de límites en el decodificador Brotli en C de Google que puede provocar ejecución remota de código cuando un programa descomprime datos Brotli de una fuente no confiable (una respuesta HTTP, un cuerpo de solicitud, un archivo). Se divulgó el 2026-10-21/22 y se corrigió en Brotli 1.0.10, 1.1.1 y 1.2.1, Node.js 22.23.4, 24.22.1 y 26.12.1, los paquetes de Python Brotli 1.2.1 y brotlicffi 1.2.1.0, y .NET 8.0.33, 9.0.22 y 10.0.14.
Incluye un pequeño plug-in de agente en shell POSIX que solo recopila hechos (la biblioteca del sistema libbrotlidec, los binarios de Node.js, las instalaciones de Python Brotli y brotlicffi, los runtimes de .NET, sus versiones, los registros de cambios de los paquetes, contra qué están enlazados, qué procesos los tienen cargados y cuáles siguen ejecutando uno reemplazado). Si eso significa "corregido" o "vulnerable" lo decide el plug-in de comprobación en el servidor de Checkmk, de modo que la nueva información - otra versión corregida - solo necesita un .mkp actualizado, no un nuevo script en cada host.
Por qué no basta con comparar números de versión: las distribuciones aplican la corrección sin cambiar la versión upstream, y compilan Node.js contra la biblioteca del sistema en lugar de la copia que incluye Node.js. Debian 12 incluye libbrotli 1.0.9 y Node.js 18.20.4 (fin de vida upstream, sin corrección) - ambos corregidos, porque el paquete actualizado libbrotli1 es el decodificador que ejecuta Node.js. Por lo tanto, la extensión lee el registro de cambios del paquete al que pertenece cada decodificador, y sigue las extensiones de Node.js y Python hasta la biblioteca contra la que están enlazadas.
cmk_addons.plugins)./proc/<pid>/maps de todos los procesos). sh POSIX simple con herramientas GNU o busybox; los registros de cambios de los paquetes se leen con dpkg, rpm o apk. Probado en la familia Debian, la familia Red Hat, Amazon Linux y Alpine, ver más abajo.| Imagen de Checkmk | Fecha | Resultado |
|---|---|---|
checkmk/check-mk-ultimate:2.5.0p17 | 2026-10-28 | OK (build, cmk-validate-plugins, prueba de humo, instalación + descubrimiento + comprobación + agent bake) |
checkmk/check-mk-ultimate:3.0.0-2026.10.28 (diaria) | 2026-10-28 | OK (build, cmk-validate-plugins, prueba de humo, instalación + descubrimiento + comprobación + agent bake) |
El plug-in de agente se ejecutó contra los paquetes propios de las distribuciones y las imágenes oficiales el 2026-10-28 (scripts/test_agent_plugin.sh), con un proceso node y un proceso python que tenían el decodificador cargado. Después se reemplazaron en disco la biblioteca, el binario de node y los módulos de extensión de Python, y la detección de reinicio informó de los procesos en ejecución.
Distribuciones
| Distribución | Decodificadores | Resultado del plug-in |
|---|---|---|
| Debian 12 | libbrotli 1.0.9-2+deb12u1, Node.js 18.20.4 (enlazado), python3-brotli | corregido mediante backport (changelog), Node.js a través de la biblioteca |
| Debian 13 | libbrotli 1.1.0-2+deb13u1, Node.js 20.19.2 (enlazado), python3-brotli, python3-brotlicffi (enlazado) | corregido mediante backport, Node.js y brotlicffi a través de la biblioteca |
| Ubuntu 24.04 | libbrotli 1.1.0-2ubuntu0.1, Node.js 18.19.1 (enlazado), python3-brotli, dotnet-runtime-8.0 8.0.32 | corregido mediante backport - .NET vulnerable (8.0.33 aún no está en el archivo) |
| AlmaLinux 8.10 | libbrotli 1.0.6-5.el8_10, Node.js 10.24.0 (decodificador propio), python3-brotli | biblioteca y Brotli corregidos mediante backport - Node.js 10 vulnerable (fin de vida, decodificador propio) |
| AlmaLinux 9.8 | libbrotli 1.0.9-10.el9_8.1, Node.js 16.20.2 (enlazado), python3-brotli, dotnet-runtime-8.0 8.0.32 | corregido mediante backport - .NET vulnerable |
| AlmaLinux 10.2 | libbrotli 1.1.0-8.el10_2.1, Node.js 22.23.2 (enlazado), python3-brotli | corregido mediante backport |
| Fedora 44 | libbrotli 1.2.1, Node.js 22.23.1 (enlazado), python3-brotli 1.2.1 | corregido por versión |
| Amazon Linux 2023 | libbrotli 1.1.0-1.amzn2023.0.1, Node.js 18.20.8 (enlazado) | vulnerable - aún no hay paquete corregido, Node.js a través de la biblioteca |
| Alpine 3.22 | brotli-libs 1.1.1, Node.js 22.23.4 (enlazado), py3-brotli 1.1.1 | corregido por versión |
Imágenes oficiales y PyPI
| Imagen | Decodificadores | Resultado del plug-in |
|---|---|---|
node:24.22.0-slim | Node.js 24.22.0 (decodificador propio) | vulnerable |
node:24.22.1-slim | Node.js 24.22.1 (decodificador propio) | corregido por versión |
node:20-alpine | Node.js 20.20.2 (decodificador propio) | vulnerable - fin de vida, sin corrección |
node:24.22.0-slim, binario movido a /home/dev/.nvm/... (propiedad de un usuario) | Node.js 24.22.0 | vulnerable - versión leída del binario, no ejecutado |
python:3.12-slim + pip install Brotli==1.2.0 brotlicffi==1.2.0.0, venv con Brotli 1.1.0 en /srv/app/venv | Brotli, brotlicffi (decodificadores propios) | vulnerable (el venv encontrado a través de su proceso en ejecución) |
python:3.12-slim + PyPI actual | Brotli 1.2.1, brotlicffi 1.2.1.0 | corregido por versión |
mcr.microsoft.com/dotnet/runtime:8.0.32 / :8.0 | .NET 8.0.32 / 8.0.33 | vulnerable / corregido por versión |
El propio sitio de Checkmk (2.5.0p17) no incluye ningún paquete Brotli en su Python. El plug-in aún no se ha ejecutado en un host de producción fuera de contenedores - en particular no con SELinux en modo enforcing (familia RHEL); el agente normalmente se ejecuta sin confinar allí.
Descargue el .mkp desde una release (o constrúyalo usted mismo, consulte
Desarrollo).
Setup > Maintenance > Extension packages > Upload package, o en la línea de comandos dentro del sitio:
mkp add broccoli2shell-<version>.mkp
mkp enable broccoli2shell <version>
Despliegue el plug-in del agente en los hosts que desea comprobar:
Ejecute un descubrimiento de servicios en los hosts. Cada decodificador obtiene su propio servicio, más un
servicio Broccoli2Shell restart por host.
Opcional: ajuste los estados en Setup > Services > Service monitoring rules > Broccoli2Shell (CVE-2026-111497) y Broccoli2Shell restart.
Copie package/agents/plugins/broccoli2shell en un subdirectorio de intervalo de caché del
directorio de plug-ins del agente y hágalo ejecutable:
install -m 755 broccoli2shell /usr/lib/check_mk_agent/plugins/3600/broccoli2shell