एंड्रॉइड में सुरक्षा-उन्नत लिनक्स

एंड्रॉइड सुरक्षा मॉडल के हिस्से के रूप में, एंड्रॉइड सभी प्रक्रियाओं पर अनिवार्य पहुंच नियंत्रण (मैक) को लागू करने के लिए सुरक्षा-संवर्धित लिनक्स (SELinux) का उपयोग करता है, यहां तक ​​कि रूट/सुपरयूजर विशेषाधिकारों (लिनक्स क्षमताओं) के साथ चलने वाली प्रक्रियाओं पर भी। कई कंपनियों और संगठनों ने Android के SELinux कार्यान्वयन में योगदान दिया है। SELinux के साथ, एंड्रॉइड सिस्टम सेवाओं को बेहतर ढंग से सुरक्षित और सीमित कर सकता है, एप्लिकेशन डेटा और सिस्टम लॉग तक पहुंच को नियंत्रित कर सकता है, दुर्भावनापूर्ण सॉफ़्टवेयर के प्रभाव को कम कर सकता है, और उपयोगकर्ताओं को मोबाइल उपकरणों पर कोड में संभावित खामियों से बचा सकता है।

SELinux डिफ़ॉल्ट इनकार के सिद्धांत पर काम करता है: जो कुछ भी स्पष्ट रूप से अनुमति नहीं दी गई है उसे अस्वीकार कर दिया गया है। SELinux दो वैश्विक मोड में काम कर सकता है:

  • अनुमेय मोड, जिसमें अनुमति अस्वीकरण लॉग किया जाता है लेकिन लागू नहीं किया जाता है।
  • प्रवर्तन मोड, जिसमें अनुमतियों से इनकार को लॉग और लागू दोनों किया जाता है।

एंड्रॉइड में एन्फोर्सिंग मोड में SELinux और एक संबंधित सुरक्षा नीति शामिल है जो AOSP पर डिफ़ॉल्ट रूप से काम करती है। प्रवर्तन मोड में, अस्वीकृत कार्रवाइयों को रोका जाता है और सभी प्रयास किए गए उल्लंघनों को कर्नेल द्वारा dmesg और logcat में लॉग किया जाता है। विकास करते समय, आपको इन त्रुटियों का उपयोग अपने सॉफ़्टवेयर और SELinux नीतियों को लागू करने से पहले परिष्कृत करने के लिए करना चाहिए। अधिक विवरण के लिए, SELinux का कार्यान्वयन देखें।

SELinux एक प्रति-डोमेन अनुमेय मोड का भी समर्थन करता है जिसमें शेष सिस्टम को वैश्विक प्रवर्तन मोड में रखते हुए विशिष्ट डोमेन (प्रक्रियाओं) को अनुमेय बनाया जा सकता है। एक डोमेन सुरक्षा नीति में एक प्रक्रिया या प्रक्रियाओं के सेट की पहचान करने वाला एक लेबल है, जहां एक ही डोमेन के साथ लेबल की गई सभी प्रक्रियाओं को सुरक्षा नीति द्वारा समान रूप से व्यवहार किया जाता है। प्रति-डोमेन अनुमेय मोड सिस्टम के लगातार बढ़ते हिस्से और नई सेवाओं के लिए नीति विकास (शेष सिस्टम को लागू रखते हुए) के लिए SELinux के वृद्धिशील अनुप्रयोग को सक्षम बनाता है।

पृष्ठभूमि

एंड्रॉइड सुरक्षा मॉडल आंशिक रूप से एप्लिकेशन सैंडबॉक्स की अवधारणा पर आधारित है। प्रत्येक एप्लिकेशन अपने स्वयं के सैंडबॉक्स में चलता है। एंड्रॉइड 4.3 से पहले, इन सैंडबॉक्स को इंस्टॉलेशन के समय प्रत्येक एप्लिकेशन के लिए एक अद्वितीय लिनक्स यूआईडी के निर्माण द्वारा परिभाषित किया गया था। एंड्रॉइड 4.3 और बाद में एंड्रॉइड एप्लिकेशन सैंडबॉक्स की सीमाओं को और अधिक परिभाषित करने के लिए SELinux का उपयोग करता है।

Android 5.0 और उसके बाद के संस्करण में, SELinux पूरी तरह से लागू है, जो Android 4.3 की अनुमत रिलीज़ और Android 4.4 के आंशिक प्रवर्तन पर आधारित है। इस परिवर्तन के साथ, एंड्रॉइड महत्वपूर्ण डोमेन ( installd , netd , vold और zygote ) के सीमित सेट पर प्रवर्तन से सब कुछ (60 से अधिक डोमेन) पर स्थानांतरित हो गया। विशेष रूप से:

  • Android 5.x और उच्चतर में सब कुछ प्रवर्तन मोड में है।
  • init के अलावा कोई भी प्रक्रिया init डोमेन में नहीं चलनी चाहिए।
  • कोई भी सामान्य इनकार ( block_device , socket_device , default_service के लिए) इंगित करता है कि डिवाइस को एक विशेष डोमेन की आवश्यकता है।

एंड्रॉइड 6.0 ने उपयोगकर्ताओं के बीच बेहतर अलगाव, IOCTL फ़िल्टरिंग, उजागर सेवाओं के खतरे को कम करने, SELinux डोमेन को और सख्त करने और बेहद सीमित /proc पहुंच को शामिल करने के लिए हमारी नीति की अनुमति को कम करके सिस्टम को सख्त कर दिया है।

एंड्रॉइड 7.0 ने एप्लिकेशन सैंडबॉक्स को और अधिक लॉक करने और हमले की सतह को कम करने के लिए SELinux कॉन्फ़िगरेशन को अपडेट किया। इस रिलीज़ ने उनकी अनुमतियों के दायरे को कम करने के लिए मोनोलिथिक मीडियासर्वर स्टैक को छोटी प्रक्रियाओं में तोड़ दिया। अधिक विवरण के लिए, अधिक लिनक्स कर्नेल सुरक्षा के साथ एंड्रॉइड की सुरक्षा करना और मीडिया स्टैक को सख्त करना देखें।

एंड्रॉइड 8.0 ने ट्रेबल के साथ काम करने के लिए SELinux को अपडेट किया, जो निचले स्तर के विक्रेता कोड को एंड्रॉइड सिस्टम फ्रेमवर्क से अलग करता है। इस रिलीज़ ने SELinux नीति को अद्यतन किया ताकि डिवाइस निर्माताओं और SOC विक्रेताओं को नीति के अपने हिस्सों को अपडेट करने, उनकी छवियां ( vendor.img , boot.img , आदि) बनाने की अनुमति मिल सके, फिर उन छवियों को प्लेटफ़ॉर्म से स्वतंत्र रूप से अपडेट करें या इसके विपरीत।

हालाँकि डिवाइस पर उच्च/नया प्लेटफ़ॉर्म (फ्रेमवर्क) संस्करण चलाना संभव है, लेकिन विपरीत स्थिति समर्थित नहीं है; विक्रेता छवियों ( vendor.img/odm.img ) के पास प्लेटफ़ॉर्म ( system.img ) से नया संस्करण नहीं हो सकता है। इसलिए, एक नया प्लेटफ़ॉर्म संस्करण SELinux संगतता समस्याओं को प्रस्तुत कर सकता है क्योंकि प्लेटफ़ॉर्म SELinux नीति नीति के विक्रेता SELinux भागों की तुलना में एक नए संस्करण पर है। एंड्रॉइड 8.0 मॉडल एक साथ अनावश्यक ओटीए को रोकने के लिए अनुकूलता बनाए रखने की एक विधि प्रदान करता है।

अतिरिक्त संसाधन

उपयोगी SELinux नीतियों के निर्माण में सहायता के लिए, निम्नलिखित संसाधनों का संदर्भ लें।