macOS SIP
मूल जानकारी
macOS में System Integrity Protection (SIP) एक तंत्र है जो अधिकतम विशेषाधिकारी उपयोगकर्ताओं को भी प्रमुख सिस्टम फोल्डर में अनधिकृत परिवर्तन करने से रोकने के लिए डिज़ाइन किया गया है। यह सुरक्षा सुविधा सिस्टम की अखंडता बनाए रखने में महत्वपूर्ण भूमिका निभाती है जिसमें संरक्षित क्षेत्रों में फ़ाइलें जोड़ना, संशोधित करना, या हटाना जैसे कार्रवाईयों को प्रतिबंधित करता है। SIP द्वारा रक्षित मुख्य फोल्डर शामिल हैं:
/System
/bin
/sbin
/usr
SIP के व्यवहार के नियम जो निर्धारित करते हैं, वे कॉन्फ़िगरेशन फ़ाइल में परिभाषित होते हैं जो /System/Library/Sandbox/rootless.conf
पर स्थित है। इस फ़ाइल में, उन पथों को जो एस्ट्रिक्स (*) से प्रारंभ होते हैं, वे अन्यथा कठोर SIP प्रतिबंधों के लिए अपवाद के रूप में चिह्नित किए जाते हैं।
नीचे दिए गए उदाहरण को ध्यान से देखें:
यह स्निपेट सूचित करता है कि जबकि SIP सामान्य रूप से /usr
निर्देशिका को सुरक्षित बनाए रखता है, वहां विशेष उपनिर्देशिकाएं (/usr/libexec/cups
, /usr/local
, और /usr/share/man
) हैं जहां संशोधन संभव है, जैसा कि उनके पथों के पहले तारक (*) द्वारा सूचित किया गया है।
एक निर्देशिका या फ़ाइल को SIP द्वारा संरक्षित है या नहीं, यह सत्यापित करने के लिए आप ls -lOd
कमांड का उपयोग कर सकते हैं ताकि restricted
या sunlnk
ध्वज की उपस्थिति की जांच करें। उदाहरण के लिए:
इस मामले में, sunlnk
फ्लैग यह संकेतित करता है कि /usr/libexec/cups
निर्देशिका स्वयं हटाई नहीं जा सकती, हालांकि इसमें फ़ाइलें बनाई जा सकती हैं, संशोधित की जा सकती हैं, या हटाई जा सकती हैं।
दूसरी ओर:
यहाँ, restricted
फ्लैग यह दर्शाता है कि /usr/libexec
निर्देशिका SIP द्वारा संरक्षित है। SIP से संरक्षित निर्देशिका में, फ़ाइलें नहीं बनाई जा सकतीं, संशोधित नहीं की जा सकतीं, या हटाई जा सकतीं।
इसके अतिरिक्त, अगर किसी फ़ाइल में com.apple.rootless
विस्तारित विशेषता शामिल है, तो वह फ़ाइल भी SIP द्वारा संरक्षित होगी।
SIP अन्य रूट क्रियाएँ भी सीमित करता है जैसे:
अविश्वसनीय कर्नेल एक्सटेंशन्स लोड करना
Apple-साइन किए गए प्रक्रियाओं के लिए टास्क-पोर्ट प्राप्त करना
NVRAM चरित्रित करना
कर्नेल डीबगिंग की अनुमति देना
विकल्प nvram चरित्रित के रूप में रखे जाते हैं जैसे एक बिटफ्लैग (csr-active-config
इंटेल पर और lp-sip0
ARM के लिए बूटेड डिवाइस ट्री से पढ़ा जाता है)। आप csr.sh
में XNU स्रोत कोड में झंझट द्वारा झंझट पा सकते हैं:
SIP स्थिति
आप निम्नलिखित कमांड के साथ जांच सकते हैं कि SIP आपके सिस्टम पर सक्षम है या नहीं:
यदि आपको SIP को अक्षम करना है, तो आपको अपने कंप्यूटर को पुनर्प्राप्ति मोड में पुनरारंभ करना होगा (स्टार्टअप के दौरान Command+R दबाकर), फिर निम्नलिखित कमांड को निष्पादित करना होगा:
यदि आप SIP सक्षम रखना चाहते हैं लेकिन डीबगिंग सुरक्षा को हटाना चाहते हैं, तो आप निम्नलिखित के साथ ऐसा कर सकते हैं:
अन्य प्रतिबंध
असाइन कर्णेल एक्सटेंशन्स (kexts) को लोड करने की अनुमति नहीं देता है, इस सुनिश्चित करता है कि केवल सत्यापित एक्सटेंशन्स सिस्टम कर्णेल के साथ संवाद करें।
macOS सिस्टम प्रक्रियाओं का डीबगिंग रोकता है, अनधिकृत पहुंच और संशोधन से मूल सिस्टम घटकों की सुरक्षा करता है।
उपकरणों को रोकता है जैसे dtrace सिस्टम प्रक्रियाओं की जांच करने से, जो सिस्टम के संचालन की अखंडता की और सुरक्षित करता है।
इस टॉक में SIP जानकारी के बारे में अधिक जानें.
SIP बायपास
SIP को बायपास करने से हमलावर को निम्नलिखित करने की संभावना होती है:
उपयोगकर्ता डेटा तक पहुंचना: सभी उपयोगकर्ता खातों से मेल, संदेश और सफारी इतिहास जैसी संवेदनशील उपयोगकर्ता डेटा पढ़ना।
TCC बायपास: अनधिकृत रूप से वेबकैम, माइक्रोफोन और अन्य संसाधनों तक पहुंच प्रदान करने के लिए TCC (पारदर्शिता, सहमति और नियंत्रण) डेटाबेस को सीधे परिवर्तित करना।
स्थायित्व स्थापित करना: SIP से संरक्षित स्थानों में मैलवेयर रखना, जिससे इसे हटाना कठिन हो, यहाँ तक कि रूट विशेषाधिकारों द्वारा भी। इसमें मैलवेयर हटाने वाले उपकरण (MRT) के साथ खिलवाड़ करने की संभावना भी शामिल है।
कर्णेल एक्सटेंशन्स लोड करना: यद्यपि अतिरिक्त सुरक्षा उपाय हैं, SIP को बायपास करने से असाइन कर्णेल एक्सटेंशन्स लोड करने की प्रक्रिया सरल हो जाती है।
इंस्टॉलर पैकेज
Apple के प्रमाणपत्र से हस्ताक्षरित इंस्टॉलर पैकेज इसकी सुरक्षा को बायपास कर सकते हैं। इसका मतलब है कि यदि साधारित डेवलपर्स द्वारा हस्ताक्षरित पैकेज SIP संरक्षित निर्देशिकाओं को संशोधित करने का प्रयास करते हैं तो वे रोके जाएंगे।
अस्तित्वहीन SIP फ़ाइल
एक संभावित छल का यह है कि यदि एक फ़ाइल rootless.conf
में निर्दिष्ट की गई है लेकिन वर्तमान में मौजूद नहीं है, तो इसे बनाया जा सकता है। मैलवेयर इसे सिस्टम पर स्थायित्व स्थापित करने के लिए उपयोग कर सकता है। उदाहरण के लिए, एक हानिकारक कार्यक्रम /System/Library/LaunchDaemons
में एक .plist फ़ाइल बना सकता है अगर यह rootless.conf
में सूचीबद्ध है लेकिन मौजूद नहीं है।
com.apple.rootless.install.heritable
अधिकार com.apple.rootless.install.heritable
SIP को बायपास करने की अनुमति देता है
Shrootless
इस ब्लॉग पोस्ट से शोधकर्ताओं ने macOS की सिस्टम इंटेग्रिटी सुरक्षा (SIP) तंत्र में एक वंशज विकल्प 'Shrootless' वंशज की खोज की। इस वंशज के चारों ओर system_installd
डेमन है, जिसमें एक अधिकार है, com.apple.rootless.install.heritable
, जो इसके किसी भी बच्चे प्रक्रियाओं को SIP की फ़ाइल सिस्टम प्रतिबंधों को बायपास करने की अनुमति देता है।
system_installd
डेमन उन पैकेजों को स्थापित करेगा जिन्हें Apple ने हस्ताक्षरित किया है।
शोधकर्ताओं ने पाया कि एक Apple हस्ताक्षरित पैकेज (.pkg फ़ाइल) की स्थापना के दौरान, system_installd
किसी भी पोस्ट-स्थापना स्क्रिप्ट को जो पैकेज में शामिल है, चलाता है। ये स्क्रिप्ट्स डिफ़ॉल्ट शैली, zsh
, द्वारा निष्क्रिय मोड में भी चलाए जाते हैं। यह व्यवहार हमलावरों द्वारा उत्पादित किया जा सकता था: एक हानिकारक /etc/zshenv
फ़ाइल बनाकर और system_installd
को zsh
आमंत्रित करने के लिए प्रतीक्षा करने के लिए, वे उपकरण पर विभिन्न कार्रवाई कर सकते थे।
इसके अतिरिक्त, पाया गया कि /etc/zshenv
को सामान्य हमला तक प्रयोग किया जा सकता था, न केवल एक SIP बायपास के लिए। प्रत्येक उपयोगकर्ता प्रोफ़ाइल के पास एक ~/.zshenv
फ़ाइल होती है, जो /etc/zshenv
के तरह व्यवहार करती है लेकिन रूट अनुमतियों की आवश्यकता नहीं है। यह फ़ाइल स्थायित्व तंत्र के रूप में उपयोग की जा सकती थी, हर बार zsh
शुरू होते समय ट्रिगर करती थी, या एक उच्चतम विशेषाधिकार मेकेनिज़म के रूप में। यदि एक व्यवस्थापक उपयोगकर्ता sudo -s
या sudo <कमांड>
का उपयोग करके रूट में उच्चतम विशेषाधिकार प्राप्त करता है, तो ~/.zshenv
फ़ाइल ट्रिगर हो जाएगी, वास्तव में रूट में उच्चतम विशेषाधिकार प्राप्त करती है।
CVE-2022-22583 में पाया गया कि वही system_installd
प्रक्रिया अभयारण किया जा सकता था क्योंकि यह पोस्ट-स्थापना स्क्रिप्ट को /tmp
के अंदर SIP द्वारा संरक्षित एक यादृच्छिक नामित फ़ोल्डर में डाल रहा था। बात यह है कि /tmp
स्वयं SIP द्वारा संरक्षित नहीं है, इसलिए इस पर एक वर्चुअल इमेज माउंट किया जा सकता था, फिर इंस्टॉलर उसमें पोस्ट-स्थापना स्क्रिप्ट डाल देता था, वर्चुअल इमेज को अनमाउंट करता था, सभी फ़ोल्डर्स को पुनः बनाता था और पोस्ट स्थापना स्क्रिप्ट को निष्पादित करने के लिए पेयलोड जोड़ देता था।
एक वंशज की पहचान की गई जहां fsck_cs
को सिम्बॉलिक लिंक्स का पालन करने की क्षमता के कारण एक महत्वपूर्ण फ़ाइल को क्षति पहुंचाई गई थी। विशेष रूप से, हमलावरों ने /dev/diskX
से लिंक बनाया था फ़ाइल /System/Library/Extensions/AppleKextExcludeList.kext/Contents/Info.plist
। /dev/diskX
पर fsck_cs
का क्रियान्वयन Info.plist
की क्षति कर दी। इस फ़ाइल की अखंडता ऑपरेटिंग सिस्टम के SIP (सिस्टम इंटेग्रिटी सुरक्षा) के लिए महत्वपूर्ण है, जो कर्ण
इस वंशानुक्रमितता की दुरुपयोगन संभावनाएं हैं। Info.plist
फ़ाइल, जो सामान्यत: कर्ण एक्सटेंशन्स के लिए अनुमतियों का प्रबंधन करने के लिए जिम्मेदार होती है, अप्रभावी हो जाती है। इसमें कुछ एक्सटेंशन्स को ब्लैकलिस्ट करने की असमर्थता शामिल है, जैसे AppleHWAccess.kext
। इस परिणामस्वरूप, SIP के नियंत्रण तंत्र के बाहर होने के कारण, यह एक्सटेंशन लोड किया जा सकता है, जिससे सिस्टम के रैम में अनधिकृत पढ़ने और लिखने की पहुंच मिल सकती है।
Info.plist
फ़ाइल, जो सामान्यत: कर्ण एक्सटेंशन्स के लिए अनुमतियों का प्रबंधन करने के लिए जिम्मेदार होती है, अप्रभावी हो जाती है। इसमें कुछ एक्सटेंशन्स को ब्लैकलिस्ट करने की असमर्थता शामिल है, जैसे AppleHWAccess.kext
। इस परिणामस्वरूप, SIP के नियंत्रण तंत्र के बाहर होने के कारण, यह एक्सटेंशन लोड किया जा सकता है, जिससे सिस्टम के रैम में अनधिकृत पढ़ने और लिखने की पहुंच मिल सकती है।SIP सुरक्षित फ़ोल्डर्स पर एक नई फ़ाइल सिस्टम माउंट करना संरक्षण को छलने के लिए संभव था।
सिस्टम को Install macOS Sierra.app
के भीतर स्थापित इंस्टॉलर डिस्क इमेज से बूट करने के लिए सेट किया गया है ताकि ओएस अपग्रेड किया जा सके, bless
यूटिलिटी का उपयोग करते हुए। उपयोग किया गया कमांड निम्नलिखित है:
यदि कोई हमलावर अपग्रेड इमेज (InstallESD.dmg
) को बूट करने से पहले बदल देता है, तो इस प्रक्रिया की सुरक्षा को कमजोर किया जा सकता है। यह रणनीति एक दुष्ट संस्करण (libBaseIA.dylib
) के साथ एक गतिशील लोडर (dyld) को बदलकर कार्यान्वित करने के लिए है। इस परिवर्तन से हमलावर कोड का क्रियान्वयन होता है जब इंस्टॉलर प्रारंभ किया जाता है।
हमलावर कोड अपग्र
इसके अतिरिक्त, स्नैपशॉट डिस्क भी केवल पढ़ने योग्य रूप में माउंट किया जाता है:
Last updated