CVE-2022-46169
अप्रमाणित कमांड इंजेक्शन
- प्रकाशित
- 5 दिस॰ 2022
- अद्यतन
- 21 अक्टू॰ 2025
- सीएनए असाइन करना
- GitHub_M
- साक्ष्य देखे गए
- 16 फ़र॰ 2023
प्राथमिक सीवीएसएस
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:Hउच्च · अगले 30 दिन
- प्रतिशत
- 100.0%
- मॉडल दिनांक
- 17 अक्टू॰ 2026
ईपीएसएस एक सांख्यिकीय अनुमान है, कोई निश्चितता या प्रभाव का माप नहीं। इसे सीवीएसएस, केईवी स्थिति, एक्सपोज़र और अपने वातावरण के साथ मिलाएं।
सीआईएसए ज्ञात शोषण
यह सीवीई सीआईएसए ज्ञात शोषित कमजोरियों की सूची में दिखाई देता है।
सारांश
Cacti एक ओपन सोर्स प्लेटफ़ॉर्म है जो उपयोगकर्ताओं के लिए एक मज़बूत और विस्तार योग्य परिचालन निगरानी (operational monitoring) और फॉल्ट प्रबंधन (fault management) ढांचा प्रदान करता है। प्रभावित संस्करणों में एक कमांड इंजेक्शन भेद्यता (command injection vulnerability) मौजूद है जो किसी अनधिकृत (unauthenticated) उपयोगकर्ता को, यदि किसी मॉनिटर किए गए डिवाइस के लिए कोई विशिष्ट डेटा स्रोत चयनित किया गया हो, Cacti चला रहे सर्वर पर मनमाना कोड निष्पादित करने की अनुमति देती है। यह भेद्यता `remote_agent.php` फ़ाइल में स्थित है। इस फ़ाइल तक बिना प्रमाणीकरण के पहुँचा जा सकता है। यह फ़ंक्शन `get_client_addr` के माध्यम से क्लाइंट का IP पता प्राप्त करता है और `gethostbyaddr` के माध्यम से इस IP पते को संबंधित होस्टनाम में हल (resolve) करता है। इसके बाद, यह सत्यापित किया जाता है कि `poller` तालिका में कोई प्रविष्टि मौजूद है, जहाँ होस्टनाम हल किए गए होस्टनाम से मेल खाता हो। यदि ऐसी कोई प्रविष्टि मिलती है, तो फ़ंक्शन `true` लौटाता है और क्लाइंट को अधिकृत कर दिया जाता है। इस प्रमाणीकरण को `get_client_addr` फ़ंक्शन के कार्यान्वयन के कारण बायपास किया जा सकता है। यह फ़ंक्शन `lib/functions.php` फ़ाइल में परिभाषित है और क्लाइंट का IP पता निर्धारित करने के लिए कई `$_SERVER` वेरिएबल्स की जाँच करता है। `HTTP_` से शुरू होने वाले वेरिएबल्स को एक हमलावर द्वारा मनमाने ढंग से सेट किया जा सकता है। चूँकि `poller` तालिका में Cacti चला रहे सर्वर के होस्टनाम के साथ एक डिफ़ॉल्ट प्रविष्टि होती है, एक हमलावर प्रमाणीकरण को बायपास कर सकता है, उदाहरण के लिए हेडर `Forwarded-For: <TARGETIP>` प्रदान करके। इस तरह `get_client_addr` फ़ंक्शन Cacti चला रहे सर्वर का IP पता लौटाता है। इसके बाद `gethostbyaddr` का कॉल इस IP पते को सर्वर के होस्टनाम में हल कर देगा, जो डिफ़ॉल्ट प्रविष्टि के कारण `poller` होस्टनाम जाँच को पास कर देगा। `remote_agent.php` फ़ाइल के प्रमाणीकरण को बायपास करने के बाद, एक हमलावर विभिन्न क्रियाएँ ट्रिगर कर सकता है। इनमें से एक क्रिया `polldata` कहलाती है। कॉल किया गया फ़ंक्शन `poll_for_data` कुछ अनुरोध पैरामीटर प्राप्त करता है और डेटाबेस से संबंधित `poller_item` प्रविष्टियाँ लोड करता है। यदि किसी `poller_item` की `action` `POLLER_ACTION_SCRIPT_PHP` के बराबर है, तो एक PHP स्क्रिप्ट निष्पादित करने के लिए `proc_open` फ़ंक्शन का उपयोग किया जाता है। हमलावर-नियंत्रित पैरामीटर `$poller_id` को `get_nfilter_request_var` फ़ंक्शन के माध्यम से प्राप्त किया जाता है, जो मनमाने स्ट्रिंग्स की अनुमति देता है। यह वेरिएबल बाद में `proc_open` को दिए गए स्ट्रिंग में डाला जाता है, जिससे कमांड इंजेक्शन भेद्यता उत्पन्न होती है। उदाहरण के लिए `poller_id=;id` प्रदान करके `id` कमांड निष्पादित हो जाता है। भेद्य कॉल तक पहुँचने के लिए, हमलावर को एक `host_id` और `local_data_id` प्रदान करना होगा, जहाँ संबंधित `poller_item` की `action` `POLLER_ACTION_SCRIPT_PHP` पर सेट हो। इन दोनों आईडी (`host_id` और `local_data_id`) को आसानी से ब्रूटफोर्स किया जा सकता है। एकमात्र आवश्यकता यह है कि `POLLER_ACTION_SCRIPT_PHP` action वाला एक `poller_item` मौजूद हो। उत्पादन (production) वातावरण में यह बहुत संभव है क्योंकि यह action कुछ पूर्वनिर्धारित टेम्पलेट्स जैसे `Device - Uptime` या `Device - Polling Time` द्वारा जोड़ा जाता है। यह कमांड इंजेक्शन भेद्यता किसी अनधिकृत उपयोगकर्ता को मनमाने कमांड निष्पादित करने की अनुमति देती है, यदि `action` प्रकार `POLLER_ACTION_SCRIPT_PHP` (`2`) वाला एक `poller_item` कॉन्फ़िगर किया गया हो। प्रमाणीकरण बायपास को यह सुनिश्चित करके रोका जाना चाहिए कि हमलावर `get_client_addr` (फ़ाइल `lib/functions.php`) को मनमाना IP पता लौटाने में सक्षम न हो। यह `HTTP_...` `$_SERVER` वेरिएबल्स का सम्मान न करके किया जा सकता है। यदि इन्हें संगतता कारणों से रखा जाना है, तो कम से कम Cacti चला रहे सर्वर के IP पते को फ़ेक करने से रोका जाना चाहिए। इस भेद्यता को 1.2.x और 1.3.x दोनों रिलीज़ शाखाओं में संबोधित किया गया है, जिसमें `1.2.23` पहली रिलीज़ है जिसमें पैच शामिल है।
जिम्मेदारीपूर्ण उपयोग
भेद्यता जानकारी का उपयोग केवल उन प्रणालियों पर करें जिनके मालिक आप हैं या परीक्षण के लिए अधिकृत हैं। किटप्लॉइट सार्वजनिक अनुसंधान मेटाडेटा से लिंक करता है और शोषण कोड या दुर्भावनापूर्ण पेलोड को संग्रहीत नहीं करता है।