macOS Launch/Environment Constraints & Trust Cache
मूल जानकारी
macOS में लॉन्च विवादों को कैसे, कौन और कहाँ से प्रक्रिया प्रारंभ की जा सकती है, इसे नियंत्रित करने के लिए पेश किया गया था। macOS Ventura में प्रारंभ किए गए इन्हें प्रणाली बाइनरी को विभिन्न विवाद श्रेणियों में वर्गीकृत करने के लिए एक ढांचा प्रदान करते हैं, जो विश्वास भंडार में सिस्टम बाइनरी और उनके संबंधित हैश को सूचीबद्ध करती है। ये विवाद सिस्टम के हर एक क्रियात्मक बाइनरी तक फैलते हैं, जिसमें किसी विशेष बाइनरी को लॉन्च करने के लिए आवश्यकताएं की विवरणित सेट होती हैं। ये नियम उस बाइनरी को संतुष्ट करने के लिए आवश्यकताएं शामिल करते हैं, जिन्हें बाइनरी को पूरा करना होगा, माता-पिता विवाद जो इसके माता-प
(on-authorized-authapfs-volume || on-system-volume)
: सिस्टम या Cryptexes वॉल्यूम में होना चाहिए।launch-type == 1
: सिस्टम सेवा होनी चाहिए (LaunchDaemons में plist)।validation-category == 1
: ऑपरेटिंग सिस्टम एक्जीक्यूटेबल।is-init-proc
: Launchd
LC श्रेणियों को उलटाना
आपके पास इसके बारे में अधिक जानकारी यहाँ में है, लेकिन मूल रूप से, वे AMFI (AppleMobileFileIntegrity) में परिभाषित हैं, इसलिए आपको कर्नेल डेवलपमेंट किट डाउनलोड करने की आवश्यकता है ताकि आप KEXT प्राप्त कर सकें। kConstraintCategory
से शुरू होने वाले प्रतीकचिह्न रोचक होते हैं। उन्हें निकालकर आपको एक DER (ASN.1) एन्कोडेड स्ट्रीम मिलेगा जिसे आपको ASN.1 डिकोडर या पायथन-एएसएन.1 पुस्तकालय और इसके dump.py
स्क्रिप्ट, andrivet/python-asn1 के साथ डिकोड करने की आवश्यकता होगी जो आपको एक अधिक समझने योग्य स्ट्रिंग देगा।
पर्यावरण प्रतिबंध
ये तीसरे पक्ष के एप्लिकेशन में विन्यासित लॉन्च प्रतिबंध हैं। डेवलपर अपने एप्लिकेशन में पहुंच को सीमित करने के लिए तथ्य और **
विश्वास कैश
macOS में कुछ विश्वास कैश हैं:
/System/Volumes/Preboot/*/boot/*/usr/standalone/firmware/FUD/BaseSystemTrustCache.img4
/System/Volumes/Preboot/*/boot/*/usr/standalone/firmware/FUD/StaticTrustCache.img4
/System/Library/Security/OSLaunchPolicyData
और iOS में ऐसा लगता है कि यह /usr/standalone/firmware/FUD/StaticTrustCache.img4
में है।
Apple Silicon उपकरणों पर चल रहे macOS में, यदि एक Apple द्वारा हस्ताक्षरित बाइनरी विश्वास कैश में नहीं है, तो AMFI इसे लोड करने से इनकार करेगा।
विश्वास कैशों की गणना
पिछले विश्वास कैश फ़ाइलें IMG4 और IM4P प्रारूप में हैं, जिसमें IM4P एक IMG4 प्रारूप का भाग है।
आप pyimg4 का उपयोग डेटाबेस के पेलोड को निकालने के लिए कर सकते हैं:
(एक और विकल्प यह हो सकता है कि आप उपकरण img4tool का उपयोग करें, जो M1 में भी चलेगा यदि रिलीज पुराना है और x86_64 के लिए यदि आप इसे सही स्थानों पर स्थापित करते हैं).
अब आप उपकरण trustcache का उपयोग करके सूचना को एक पठनीय प्रारूप में प्राप्त कर सकते हैं:
विश्वास कैश निम्नलिखित संरचना का पालन करता है, इसलिए LC श्रेणी 4 वां स्तंभ है।
तो, आप डेटा निकालने के लिए इस तरह का स्क्रिप्ट उपयोग कर सकते हैं।
उस डेटा से आप लॉन्च विवाद मूल्य 0
वाले ऐप्स की जांच कर सकते हैं, जो वे हैं जो प्रतिबंधित नहीं हैं (यहाँ जांचें कि प्रत्येक मूल्य क्या है)।
हमले से रोकथाम
लॉन्च विवाद कई पुराने हमलों को रोकने में सहायक होता है यह सुनिश्चित करके कि प्रक्रिया अप्रत्याशित स्थितियों में नहीं चलाई जाएगी: उदाहरण के लिए अप्रत्याशित स्थानों से या अप्रत्याशित माता प्रक्रिया द्वारा आमंत्रित किया जाने से (अगर केवल launchd को इसे लॉन्च करना चाहिए)
इसके अतिरिक्त, लॉन्च विवाद भी डाउनग्रेड हमलों को रोकता है।
हालांकि, यह सामान्य XPC दुरुपयोग, Electron कोड इंजेक्शन या पुस्तकालय सत्यापन के बिना dylib इंजेक्शन को नहीं रोकता (जब तक पुस्तकालयों को लोड करने वाले टीम आईडी पता हो)।
XPC डेमन सुरक्षा
सोनोमा रिलीज में, एक महत्वपूर्ण बिंदु है डेमन XPC सेवा की जिम्मेदारी कॉन्फ़िगरेशन। XPC सेवा अपने आप के लिए ज़िम्मेदार है, जिसके विपरीत जुड़ने वाले क्लाइंट जिम्मेदार होते हैं। यह फीडबैक रिपोर्ट FB13206884 में दर्ज है। यह सेटअप दोषपूर्ण लग सकता है, क्योंकि यह निश्चित इंटरैक्शन को XPC सेवा के साथ संभव बनाता है:
XPC सेवा को लॉन्च करना: यदि यह एक बग माना जाता है, तो यह सेटअप अटैकर को XPC सेवा को प्रारंभ करने की अनुमति नहीं देता।
सक्रिय सेवा से कनेक्ट करना: यदि XPC सेवा पहले से चल रही है (संभावना अपने मूल एप्लिकेशन द्वारा सक्रिय की गई), तो इसे कनेक्ट करने के कोई बाधाएँ नहीं हैं।
XPC सेवा पर प्रतिबंधों को लागू करना हमलों के लिए संभावित हमलों के लिए खिड़की को संक्षेपित करने में फायदेमंद हो सकता है, लेकिन यह मुख्य चिंता का समाधान नहीं करता है। XPC सेवा की सुरक्षा सुनिश्चित करने के लिए मुख्य रूप से कनेक्टिंग क्लाइंट को प्रभावी ढंग से सत्यापित करना आवश्यक है। यह सेवा की सुरक्षा को मजबूत करने का एकमात्र तरीका रहता है। इसके अलावा, यह उल्लेखनीय जिम्मेदारी कॉन्फ़िगरेशन वर्तमान में संचालित है, जो निर्धारित डिज़ाइन के साथ मेल नहीं खा सकता है।
इलेक्ट्रॉन सुरक्षा
यदि ऐप्लिकेशन को लॉन्च सर्विस द्वारा खोलना आवश्यक है (माता की प्रतिबंधों में)। यह open
(जो एनवी वेरिएबल सेट कर सकता है) या लॉन्च सेविसेस एपीआई (जिसमें एनवी वेरिएबल निर्दिष्ट किए जा सकते हैं) का उपयोग करके प्राप्त किया जा सकता है।
संदर्भ
Last updated