
CVE-2023-43115 को समझने के लिए उदाहरणों के साथ एक छोटी लेख
CVE-2023-43115 को समझने में मदद के लिए उदाहरणों के साथ एक छोटा सा लेख।
[!WARNING] मैंने यह मुख्य रूप से स्वयं समस्या को समझने और साइबर सुरक्षा के बारे में सीखने के लिए लिखा है। इसलिए इसमें त्रुटियाँ हो सकती हैं।
IJS डिवाइस (Improved Inkjet Printing) का उपयोग करने के लिए, Ghostscript को एक IJS सर्वर शुरू करने की आवश्यकता होती है। यह IjsServer पैरामीटर में निर्दिष्ट पथ का उपयोग करके किया जाता है। IjsServer पैरामीटर को फ़ाइल सिस्टम के भीतर किसी भी वांछित फ़ाइल को संदर्भित करने के लिए कॉन्फ़िगर किया जा सकता है, और Ghostscript बाद में उस निर्दिष्ट फ़ाइल को निष्पादित करता है। यहां यह देखना आसान है कि इसका दुरुपयोग कैसे किया जा सकता है, उदाहरण के लिए आप हैलो वर्ल्ड प्रिंट करने के लिए निम्नलिखित ghostscript कमांड चला सकते हैं।
❯ gs -sDEVICE=ijs -sIjsServer="bash -c 'echo Hello World>&2'"
GPL Ghostscript 9.55.0 (2021-09-27)
Copyright (C) 2021 Artifex Software, Inc. All rights reserved.
This software is supplied under the GNU AGPLv3 and comes with NO WARRANTY:
see the file COPYING for details.
Hello World
अपने आप में यह इतना समस्याग्रस्त नहीं है क्योंकि यह पैरामीटर उपयोगकर्ता द्वारा प्रदान किया जाना चाहिए। हालांकि, इस डिवाइस और IJsServer पैरामीटर को पोस्टस्क्रिप्ट स्क्रिप्ट के अंदर सेट करना भी संभव है। उदाहरण के लिए attack_example_*.ps देखें (gs FILENAME के साथ निष्पादित करें)। इसके परिणामस्वरूप एक हमलावर इस स्क्रिप्ट को चलाने वाली मशीन पर कोड निष्पादित कर सकता है। लेकिन, यह समस्या ज्ञात है और आधिकारिक तौर पर है और इसे LockSafetyParams को true पर सेट करके ।
LockSafetyParams सक्षम होने पर इस CVE का लाभ उठाने के लिए, एक हमलावर को LockSafetyParams को बदलने के लिए एक कार्यशील शोषण की आवश्यकता होगी। हालांकि, यदि ऐसा शोषण उपलब्ध है, तो उपयोग किए गए संस्करण के आधार पर कई अन्य संभावित आक्रमण वेक्टर हो सकते हैं।
समाधान के लेखक केन शार्प ने उल्लिखित LockSafetyParams सुरक्षा समाधान को हैकी बताया क्योंकि यह पोस्टस्क्रिप्ट में लागू किया गया है और इस प्रकार पोस्टस्क्रिप्ट कोड के प्रति संवेदनशील है। इसके परिणामस्वरूप अतीत में कई सुरक्षा समस्याएँ हुईं जहाँ इस पैरामीटर को अधिलेखित करना संभव था (उदाहरण के लिए CVE-2018-19475 आलेख देखें)। समाधान सुरक्षा तंत्र को बदलता है जो IjsServer पथ सेट करने से रोकता है LockSaftyParams से नए -dSAFER पैरामीटर तक, जो पोस्टस्क्रिप्ट कोड से प्रभावित नहीं हो सकता।
[!NOTE] कमजोर संस्करण 9.55.0 का दस्तावेज़ीकरण पहले से ही -dSAFER पैरामीटर का उपयोग करने के लिए कहता है जो एक दस्तावेज़ीकरण त्रुटि प्रतीत होता है।