Android में सुरक्षा-उन्नत Linux

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

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

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

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

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

पार्श्वभूमि

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

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

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

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

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

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

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

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

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