
Checkmk एक्सटेंशन जो Linux होस्ट्स का ऑडिट करता है, CVE-2026-111497 से प्रभावित Brotli डिकोडर्स (libbrotlidec, Node.js, Python, .NET) के लिए, संस्करणों, बैकपोर्ट्स और पुरानी प्रक्रियाओं की जाँच करता है।
एक Checkmk एक्सटेंशन जो Linux होस्ट पर प्रत्येक Brotli डिकोडर के लिए दिखाता है कि क्या वह Broccoli2Shell - CVE-2026-111497 से प्रभावित है, जो Google के C Brotli डिकोडर में एक out-of-bounds write है जो तब remote code execution का कारण बन सकता है जब कोई प्रोग्राम किसी अविश्वसनीय स्रोत (एक HTTP प्रतिक्रिया, एक request body, एक archive) से Brotli डेटा को decompress करता है। इसे 2026-10-21/22 को disclosed किया गया था और Brotli 1.0.10, 1.1.1 और 1.2.1, Node.js 22.23.4, 24.22.1 और 26.12.1, Python पैकेज Brotli 1.2.1 और brotlicffi 1.2.1.0, तथा .NET 8.0.33, 9.0.22 और 10.0.14 में ठीक किया गया था।
यह एक छोटा POSIX shell agent plug-in शिप करता है जो केवल facts एकत्र करता है (सिस्टम लाइब्रेरी libbrotlidec, Node.js बाइनरीज़, Python Brotli और brotlicffi इंस्टॉलेशन, .NET रनटाइम्स, उनके वर्ज़न, पैकेज changelogs, वे किसके विरुद्ध linked हैं, किन प्रोसेस ने उन्हें लोड किया है और कौन अभी भी एक बदले गए वाले को चला रहा है)। क्या इसका अर्थ "fixed" या "vulnerable" है, यह Checkmk सर्वर पर check plug-in द्वारा तय किया जाता है, इसलिए नई जानकारी - एक और fixed release - के लिए केवल एक अद्यतन .mkp की आवश्यकता होती है, हर होस्ट पर एक नई स्क्रिप्ट की नहीं।
केवल वर्ज़न नंबरों की तुलना क्यों न करें: वितरण upstream वर्ज़न बदले बिना fix को backport करते हैं, और वे Node.js को सिस्टम लाइब्रेरी के विरुद्ध build करते हैं, न कि Node.js द्वारा bundled कॉपी के विरुद्ध। Debian 12 libbrotli 1.0.9 और Node.js 18.20.4 (upstream में end of life, कोई fix नहीं) शिप करता है - दोनों fixed हैं, क्योंकि अद्यतन libbrotli1 पैकेज वही डिकोडर है जिसे Node.js चलाता है। इसलिए एक्सटेंशन प्रत्येक डिकोडर के स्वामी पैकेज का changelog पढ़ता है, और Node.js तथा Python एक्सटेंशन्स को उस लाइब्रेरी तक फॉलो करता है जिसके विरुद्ध वे linked हैं।
cmk_addons.plugins plugin API का उपयोग करते हुए)।/proc/<pid>/maps पढ़ता है)। GNU या busybox टूल्स के साथ सादा POSIX sh; पैकेज changelogs dpkg, rpm या apk से पढ़े जाते हैं। Debian परिवार, Red Hat परिवार, Amazon Linux और Alpine पर परीक्षण किया गया, नीचे देखें।| Checkmk image | तिथि | परिणाम |
|---|---|---|
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) |
agent plug-in को 2026-10-28 को वितरणों के अपने पैकेजों और आधिकारिक images के विरुद्ध चलाया गया (scripts/test_agent_plugin.sh), एक node और एक python प्रोसेस के साथ जिनमें डिकोडर लोड था। इसके बाद लाइब्रेरी, node बाइनरी और Python एक्सटेंशन मॉड्यूल को डिस्क पर बदल दिया गया, और restart detection ने चल रहे प्रोसेस की रिपोर्ट की।
वितरण
| वितरण | डिकोडर | प्लग-इन परिणाम |
|---|---|---|
| Debian 12 | libbrotli 1.0.9-2+deb12u1, Node.js 18.20.4 (लिंक्ड), python3-brotli | बैकपोर्ट द्वारा ठीक किया गया (changelog), Node.js लाइब्रेरी के माध्यम से |
| Debian 13 | libbrotli 1.1.0-2+deb13u1, Node.js 20.19.2 (लिंक्ड), python3-brotli, python3-brotlicffi (लिंक्ड) | बैकपोर्ट द्वारा ठीक किया गया, Node.js और brotlicffi लाइब्रेरी के माध्यम से |
| Ubuntu 24.04 | libbrotli 1.1.0-2ubuntu0.1, Node.js 18.19.1 (लिंक्ड), python3-brotli, dotnet-runtime-8.0 8.0.32 | बैकपोर्ट द्वारा ठीक किया गया - .NET असुरक्षित (8.0.33 अभी तक संग्रह में नहीं) |
| AlmaLinux 8.10 | libbrotli 1.0.6-5.el8_10, Node.js 10.24.0 (स्वयं का डिकोडर), python3-brotli | लाइब्रेरी और Brotli बैकपोर्ट द्वारा ठीक किए गए - Node.js 10 असुरक्षित (जीवनकाल समाप्त, स्वयं का डिकोडर) |
| AlmaLinux 9.8 | libbrotli 1.0.9-10.el9_8.1, Node.js 16.20.2 (लिंक्ड), python3-brotli, dotnet-runtime-8.0 8.0.32 | बैकपोर्ट द्वारा ठीक किया गया - .NET असुरक्षित |
| AlmaLinux 10.2 | libbrotli 1.1.0-8.el10_2.1, Node.js 22.23.2 (लिंक्ड), python3-brotli | बैकपोर्ट द्वारा ठीक किया गया |
| Fedora 44 | libbrotli 1.2.1, Node.js 22.23.1 (लिंक्ड), python3-brotli 1.2.1 | संस्करण द्वारा ठीक किया गया |
| Amazon Linux 2023 | libbrotli 1.1.0-1.amzn2023.0.1, Node.js 18.20.8 (लिंक्ड) | असुरक्षित - अभी तक कोई ठीक किया गया पैकेज नहीं, Node.js लाइब्रेरी के माध्यम से |
| Alpine 3.22 | brotli-libs 1.1.1, Node.js 22.23.4 (लिंक्ड), py3-brotli 1.1.1 | संस्करण द्वारा ठीक किया गया |
आधिकारिक इमेजें और PyPI
| इमेज | डिकोडर | प्लग-इन परिणाम |
|---|---|---|
node:24.22.0-slim | Node.js 24.22.0 (स्वयं का डिकोडर) | असुरक्षित |
node:24.22.1-slim | Node.js 24.22.1 (स्वयं का डिकोडर) | संस्करण द्वारा ठीक किया गया |
node:20-alpine | Node.js 20.20.2 (स्वयं का डिकोडर) | असुरक्षित - जीवनकाल समाप्त, कोई समाधान नहीं |
node:24.22.0-slim, बाइनरी /home/dev/.nvm/... में स्थानांतरित (किसी उपयोगकर्ता के स्वामित्व में) | Node.js 24.22.0 | असुरक्षित - संस्करण बाइनरी से पढ़ा गया, चलाया नहीं गया |
python:3.12-slim + pip install Brotli==1.2.0 brotlicffi==1.2.0.0, /srv/app/venv में Brotli 1.1.0 वाला venv | Brotli, brotlicffi (स्वयं के डिकोडर) | असुरक्षित (venv उसकी चल रही प्रक्रिया के माध्यम से पाया गया) |
python:3.12-slim + वर्तमान PyPI | Brotli 1.2.1, brotlicffi 1.2.1.0 | संस्करण द्वारा ठीक किया गया |
mcr.microsoft.com/dotnet/runtime:8.0.32 / :8.0 | .NET 8.0.32 / 8.0.33 | असुरक्षित / संस्करण द्वारा ठीक किया गया |
Checkmk साइट स्वयं (2.5.0p17) अपने Python में कोई Brotli पैकेज शामिल नहीं करती है। प्लग-इन अभी तक कंटेनरों के बाहर किसी उत्पादन होस्ट पर नहीं चला है - विशेष रूप से SELinux enforcing (RHEL परिवार) के साथ नहीं; वहाँ एजेंट सामान्यतः unconfined चलता है।
किसी रिलीज़ से .mkp डाउनलोड करें (या इसे स्वयं बनाएँ, देखें
विकास)।
Setup > Maintenance > Extension packages > Upload package, या साइट के अंदर कमांड लाइन पर:
mkp add broccoli2shell-<version>.mkp
mkp enable broccoli2shell <version>
जिन होस्ट्स को आप जाँचना चाहते हैं, उन पर एजेंट प्लग-इन डिप्लॉय करें:
होस्ट्स पर सर्विस डिस्कवरी चलाएँ। प्रत्येक डिकोडर को अपनी अलग सर्विस मिलती है, साथ ही प्रत्येक होस्ट के लिए एक
Broccoli2Shell restart सर्विस भी।
वैकल्पिक: Setup > Services > Service monitoring rules > Broccoli2Shell (CVE-2026-111497) और Broccoli2Shell restart में स्टेट्स समायोजित करें।
package/agents/plugins/broccoli2shell को एजेंट की प्लग-इन डायरेक्टरी के किसी cache-interval सबडायरेक्टरी में कॉपी करें और उसे executable बनाएँ:
install -m 755 broccoli2shell /usr/lib/check_mk_agent/plugins/3600/broccoli2shell
3600 निर्देशिका एजेंट को इसे पृष्ठभूमि में हर घंटे एक बार चलाने और बीच के समय में कैश किया गया परिणाम प्रस्तुत करने के लिए कहती है। इसे सीधे plugins/ में न रखें: यह बड़ी बाइनरीज़ और प्रत्येक प्रक्रिया का मेमोरी मैप पढ़ता है, जो प्रत्येक एजेंट क्वेरी के लिए बहुत अधिक है।