macOS Kernel Extensions
Basic Information
कर्नेल एक्सटेंशन (Kexts) पैकेज हैं जिनका .kext
एक्सटेंशन होता है जो macOS कर्नेल स्पेस में सीधे लोड किए जाते हैं, मुख्य ऑपरेटिंग सिस्टम को अतिरिक्त कार्यक्षमता प्रदान करते हैं।
Requirements
स्पष्ट रूप से, यह इतना शक्तिशाली है कि कर्नेल एक्सटेंशन लोड करना जटिल है। ये आवश्यकताएँ हैं जो एक कर्नेल एक्सटेंशन को लोड करने के लिए पूरी करनी चाहिए:
जब रिकवरी मोड में प्रवेश करते हैं, कर्नेल एक्सटेंशन को लोड करने की अनुमति होनी चाहिए:
कर्नेल एक्सटेंशन को कर्नेल कोड साइनिंग सर्टिफिकेट के साथ साइन किया जाना चाहिए, जिसे केवल Apple द्वारा दिया जा सकता है। जो कंपनी की समीक्षा करेगा और यह क्यों आवश्यक है।
कर्नेल एक्सटेंशन को भी नोटराइज किया जाना चाहिए, Apple इसे मैलवेयर के लिए जांच सकेगा।
फिर, रूट उपयोगकर्ता ही कर्नेल एक्सटेंशन को लोड कर सकता है और पैकेज के अंदर की फ़ाइलें रूट की होनी चाहिए।
अपलोड प्रक्रिया के दौरान, पैकेज को संरक्षित नॉन-रूट स्थान में तैयार किया जाना चाहिए:
/Library/StagedExtensions
(इसके लिएcom.apple.rootless.storage.KernelExtensionManagement
ग्रांट की आवश्यकता होती है)।अंत में, जब इसे लोड करने का प्रयास किया जाता है, तो उपयोगकर्ता एक पुष्टि अनुरोध प्राप्त करेगा और, यदि स्वीकार किया गया, तो कंप्यूटर को इसे लोड करने के लिए रीस्टार्ट करना होगा।
Loading process
कैटालिना में यह इस प्रकार था: यह ध्यान देने योग्य है कि सत्यापन प्रक्रिया यूजरलैंड में होती है। हालाँकि, केवल वे एप्लिकेशन जिनके पास com.apple.private.security.kext-management
ग्रांट है, वे कर्नेल से एक्सटेंशन लोड करने का अनुरोध कर सकते हैं: kextcache
, kextload
, kextutil
, kextd
, syspolicyd
kextutil
CLI एक्सटेंशन लोड करने के लिए सत्यापन प्रक्रिया शुरू करता है
यह
kextd
से Mach सेवा का उपयोग करके बात करेगा।
kextd
कई चीजों की जांच करेगा, जैसे हस्ताक्षर
यह
syspolicyd
से बात करेगा ताकि यह जांच सके कि क्या एक्सटेंशन को लोड किया जा सकता है।
syspolicyd
उपयोगकर्ता से प्रॉम्प्ट करेगा यदि एक्सटेंशन पहले लोड नहीं किया गया है।
syspolicyd
kextd
को परिणाम रिपोर्ट करेगा
अंततः
kextd
कर्नेल को एक्सटेंशन को लोड करने के लिए बता सकेगा
यदि kextd
उपलब्ध नहीं है, तो kextutil
वही जांच कर सकता है।
Referencias
Last updated