
CVE-2019-9745 भेद्यता पर राइट-अप।
रचनात्मकता पेनिट्रेशन टेस्टिंग के केंद्र में है, जो हमारे काम को दिलचस्प बनाती है। हालांकि, एक खतरा है कि हम 'ओवर-इंजीनियर' अटैक परिदृश्यों की प्रवृत्ति रखते हैं और केवल बग्स (त्रुटि स्थितियों) पर ध्यान केंद्रित करते हैं। फिर भी, फ्लॉज़ (अनपेक्षित व्यवहार) समान रूप से विनाशकारी परिणामों के साथ मौजूद हो सकते हैं। यह लेख ऐसे फ्लॉज़ के लिए पेंटेस्टिंग के महत्व को प्रदर्शित करने के लिए एक केस-स्टडी प्रदान करता है। साथ ही यह SDLC (सुरक्षित विकास जीवनचक्र) प्रक्रिया को अपनाने का समर्थन करता है।
यह लेख भेद्यता CVE-2019-9745 के आरडी (जिम्मेदार प्रकटीकरण) का हिस्सा है और विक्रेता CloudCTI के साथ घनिष्ठ सहयोग में लिखा गया है। यह तकनीकी विवरणों में गहराई से जाने से पहले भेद्यता का एक उच्च-स्तरीय अवलोकन प्रदान करता है। भेद्यता के शोषण का प्रदर्शन करने के बाद सीखे गए पाठों के साथ एक निष्कर्ष प्रदान किया गया है।
हमारे एक पेनिट्रेशन परीक्षण के दौरान हमने जिस CloudCTI Recognition Configuration Tool की जांच की, वह CRM (ग्राहक संबंध प्रबंधन) सॉफ्टवेयर से जानकारी प्राप्त करने के लिए उपयोग किया जाता है। यह कॉलसेंटर कर्मियों को ग्राहक कॉल के दौरान प्रासंगिक जानकारी प्रदान करता है। कई समस्याएं पहचानी गईं जिन्हें स्थानीय सिस्टम से पूरी तरह समझौता करने के लिए श्रृंखलाबद्ध किया जा सकता है। विक्रेता इस बात पर जोर देना चाहता है कि यह अन्य ग्राहकों या उनके स्वयं के सिस्टम को प्रभावित नहीं करता है।
कई सुरक्षा भेद्यताओं की तरह, एक महत्वपूर्ण मुद्दा आपके प्रभाव क्षेत्र के बाहर से आने वाले डेटा को मान्य करने में निहित है। समान रूप से महत्वपूर्ण यह अहसास है कि सिस्टम और सॉफ्टवेयर शत्रुतापूर्ण वातावरण में काम करते हैं। समय और अनुभव ने हमें सिखाया है कि इंटरनेट पर छिपकर बातें सुनना एक खतरा है। हालांकि, यही बात अन्य संचार चैनलों के लिए भी सच है, यहां तक कि एक सिस्टम के भीतर भी। यह भेद्यता की खोज में सहायक था।
सामने आई समस्याओं का एक मूल-कारण विश्लेषण TM (खतरा मॉडलिंग) जैसी प्रथाओं के महत्व को दर्शाता है। TM डिजाइन और विकास के प्रारंभिक चरणों के दौरान जोखिमों की पहचान करने में मदद करता है। इससे अस्वीकार्य जोखिमों का शमन या पुनः डिजाइन/पुनः कार्यान्वयन हो सकता है। यद्यपि पाठक को अपना स्वयं का विश्लेषण करने के लिए प्रोत्साहित किया जाता है, संदर्भ के लिए विक्रेता के प्रतिकार उपायों का विवरण प्रदान किया गया है।
विक्रेता सॉफ्टवेयर में चार एप्लिकेशन होते हैं जो एक साथ काम करते हैं। पहला एप्लिकेशन ग्राफिकल यूज़र इंटरफ़ेस (GUI) है। यह उपयोगकर्ता को कई CRM सॉफ्टवेयर पैकेजों से जानकारी प्राप्त करने की शुरुआत करने की अनुमति देता है:
GUI एक संदेश भेजकर सूचना पुनर्प्राप्ति को एक सेवा (दूसरा एप्लिकेशन) को सौंपता है। पहली सुरक्षा समस्याएं यहां प्रकट होती हैं: न केवल सिस्टम पर कोई भी GUI और सेवा के बीच संदेशों को उनके प्रारूप और सामग्री का निर्धारण करने के लिए देख सकता है (गोपनीयता को प्रभावित करता है), बल्कि वे अपने स्वयं के संदेश भी भेज सकते हैं (प्राधिकरण को प्रभावित करता है)। इसके अलावा, सेवा को संदेशों के स्रोत की पुष्टि नहीं की जाती है (गैर-अस्वीकृति को प्रभावित करता है)। STRIDE खतरा मॉडलिंग शब्दावली में, इसका मतलब है कि सिस्टम सूचना प्रकटीकरण और छेड़छाड़ के लिए प्रवण है। वास्तव में, इन संदेशों से प्राप्त जानकारी भेद्यता की खोज में सहायक थी।
तीसरा एप्लिकेशन कई विशेष आयातकर्ताओं में से एक है। सेवा किसी विशिष्ट CRM पैकेज के लिए सूचना पुनर्प्राप्ति को एक विशिष्ट आयातकर्ता को सौंपती है। GUI द्वारा भेजे गए संदेश में इस आयातकर्ता के लिए विशिष्ट निर्देश होते हैं। Exquise CRM आयातकर्ता को देखने पर पता चलता है कि सूचना पुनर्प्राप्ति को आगे एक बाहरी (चौथे) एप्लिकेशन को सौंपा जाता है। आयातकर्ता के आंतरिक तर्क की जांच करने पर पता चला कि बाहरी एप्लिकेशन को GUI और सेवा के बीच संदेश में निर्दिष्ट किया जा सकता है। यहां जो मुद्दा प्रकट होता है वह यह है कि बाहरी एप्लिकेशन को उसकी पहचान सत्यापित किए बिना निष्पादित किया जाता है (गैर-अस्वीकृति को प्रभावित करता है)।
इन मुद्दों को श्रृंखलाबद्ध करके हम संदेशों पर छिपकर बात सुन सकते हैं ताकि उनका प्रारूप निर्धारित कर सकें और एक संदेश भेज सकें जिसमें हम अपना स्वयं का दुर्भावनापूर्ण बाहरी एप्लिकेशन निर्दिष्ट करते हैं। वह बाहरी एप्लिकेशन आयातकर्ता/सेवा के समान विशेषाधिकारों के साथ निष्पादित होता है। चूंकि ये विशेषाधिकार सिस्टम के भीतर उच्चतम संभव हैं, पूर्ण नियंत्रण प्राप्त होता है और सिस्टम से समझौता हो जाता है।
इन मुद्दों को विक्रेता द्वारा अद्वितीय साझा रहस्यों के उपयोग के माध्यम से संदेशों को एन्क्रिप्ट करके (गोपनीयता मुद्दे को कम करता है) कम किया जाता है (जो प्राधिकरण मुद्दे को कम करता है) जिन्हें केवल प्रमाणित सिस्टम उपयोगकर्ता ही एक्सेस कर सकते हैं जो उनके मालिक हैं (पहले गैर-अस्वीकृति मुद्दे को कम करता है)। अंत में, बाहरी एप्लिकेशन को क्रिप्टोग्राफिक रूप से हस्ताक्षरित किया जाता है (दूसरे गैर-अस्वीकृति मुद्दे को कम करता है)। इन उपायों का संयोजन भेद्यता को सफलतापूर्वक कम करता है।
जब CloudCTI Recognition Configuration Tool GUI एप्लिकेशन (C:\Program Files (x86)\CloudCTI Recognition Configuration Tool\CloudCTI Recognition Configuration Tool.exe) स्थापित होता है, तो इसे Process Explorer के साथ जांचा जाता है। इससे पता चलता है कि एक साथी सेवा (Recognition Update Client Service) स्थापित है और NT AUTHORITY\SYSTEM अधिकारों के साथ निष्पादित होती है:
सेवा निष्पादन योग्य (C:\Program Files (x86)\CloudCTI Recognition Configuration Tool\RUCS\RecognitionUpdateClientServiceService.exe) की जांच करने पर यह स्पष्ट होता है कि इसे .NET प्रोग्रामिंग भाषा का उपयोग करके विकसित किया गया है। इसके आंतरिक तर्क में अंतर्दृष्टि प्राप्त करने के लिए dnSpy का उपयोग करके इसे डीकंपाइल किया जा सकता है, जिसका विवरण नीचे दिया जाएगा।
RUCS2017Service (सेवा निष्पादन योग्य में आंतरिक .NET नेमस्पेस) RUCS2017 नेमस्पेस (C:\Program Files (x86)\CloudCTI Recognition Configuration Tool\RUCS\RUCS2017.dll) के चारों ओर एक पतला रैपर निकलता है। यह RUCS2017.dll:RUCS2017.TRUCS2017:902 पर RUCS20151029 नामक एक नामित पाइप सर्वर को परिभाषित करता है:
वह नामित पाइप सर्वर RUCS2017.dll:RUCS2017.TRUCS2017:833 पर शुरू होता है: