इस सेक्शन में, Android डिवाइसों पर ऐप्लिकेशन की सुरक्षा पक्का करने के लिए सुझाव दिए गए हैं.
कोड रिव्यू
सोर्स कोड की समीक्षा करने से, सुरक्षा से जुड़ी कई समस्याओं का पता लगाया जा सकता है. इनमें वे समस्याएं भी शामिल हैं जिनकी पहचान इस दस्तावेज़ में की गई है. Android, सोर्स कोड की मैन्युअल और ऑटोमेटेड, दोनों तरह से कोड रिव्यू करने का सुझाव देता है.
- समीक्षाएं करते समय, सुरक्षा से जुड़े सभी दिशा-निर्देशों का पालन करें, ताकि सभी पहलुओं की समीक्षा की जा सके लगातार और पूरी समीक्षाएं करने के लिए, ज़रूरी इंटरनल या एक्सटर्नल स्टैंडर्ड का इस्तेमाल करें.
- Android SDK का इस्तेमाल करके, सभी ऐप्लिकेशन कोड पर लिंटर चलाएं. जैसे, Android Studio लिंटर. साथ ही, मिली समस्याओं को ठीक करें.
- नेटिव कोड का विश्लेषण करने के लिए, ऑटोमेटेड टूल का इस्तेमाल करें. इससे मेमोरी मैनेजमेंट से जुड़ी समस्याओं का पता लगाया जा सकता है. जैसे, बफ़र ओवरफ़्लो और ऑफ़-बाय-वन गड़बड़ियां.
- Android बिल्ड सिस्टम, LLVM सैनिटाइज़र में से कई को सपोर्ट करता है. जैसे, AddressSanitizer और UndefinedBehaviorSanitizer, इनका इस्तेमाल, मेमोरी से जुड़ी समस्याओं के रनटाइम विश्लेषण के लिए किया जा सकता है. Android में libFuzzer की मदद से, फ़ज़िंग के साथ-साथ सैनिटाइज़र, असामान्य एज केस का पता लगा सकते हैं. इनके लिए आगे की जांच की ज़रूरत होती है.
- सुरक्षा का आकलन करने वाले किसी जानकार व्यक्ति को, ज़्यादा जोखिम वाले कोड की समीक्षा करनी चाहिए. जैसे, क्रिप्टो, पेमेंट प्रोसेस करना, और व्यक्तिगत पहचान से जुड़ी जानकारी प्रोसेस करना.
ऑटोमेटेड टेस्टिंग
ऑटोमेटेड टेस्टिंग से, सुरक्षा से जुड़ी कई समस्याओं का पता लगाया जा सकता है. इसे नियमित तौर पर किया जाना चाहिए.
- डेवलपमेंट की पूरी प्रोसेस के दौरान, CTS के नए वर्शन को नियमित तौर पर चलाएं ताकि समस्याओं का पता शुरुआती दौर में ही लगाया जा सके और उन्हें ठीक करने में लगने वाला समय कम किया जा सके. Android, CTS का इस्तेमाल, हमारे ऑटोमेटेड बिल्ड प्रोसेस में लगातार इंटिग्रेशन के तौर पर करता है. यह प्रोसेस, हर दिन कई बार चलती है.
- इंटरफ़ेस की सुरक्षा की ऑटोमेटेड टेस्टिंग करें. इसमें, गलत तरीके से फ़ॉर्मैट किए गए इनपुट (फ़ज़ टेस्टिंग) के साथ टेस्टिंग करना भी शामिल है. Android का बिल्ड सिस्टम, फ़ज़ टेस्ट लिखने के लिए libFuzzer को सपोर्ट करता है.
कमियां पता लगाना
कमियां पता लगाने की प्रोसेस से, यह पक्का किया जा सकता है कि पहले से इंस्टॉल किए गए ऐप्लिकेशन में, सुरक्षा से जुड़ी कोई भी समस्या न हो. ऐडवांस तरीके से कमियां पता लगाने की प्रोसेस से, इन कमियों को ठीक करने में लगने वाला समय और लागत कम की जा सकती है. साथ ही, उपयोगकर्ताओं और डिवाइसों को होने वाले जोखिम को भी कम किया जा सकता है.
- इंडस्ट्री में मान्यता पाने वाले, ऐप्लिकेशन में कमियां पता लगाने वाले टूल का इस्तेमाल करके, पहले से इंस्टॉल किए गए सभी ऐप्लिकेशन को स्कैन करें और मिली कमियों को ठीक करें.
नुकसान पहुंचाने वाले ऐप्लिकेशन
यह पक्का करना ज़रूरी है कि आपके डिवाइस पर पहले से इंस्टॉल किए गए ऐप्लिकेशन, नुकसान पहुंचाने वाले ऐप्लिकेशन (पीएचए) न हों. आपके डिवाइसों पर शामिल सभी ऐप्लिकेशन के व्यवहार की ज़िम्मेदारी आपकी है. डिवाइस लॉन्च करने से पहले, पहले से लोड किए गए सभी ऐप्लिकेशन में कमियां ढूंढने के लिए स्कैन करें.
पीएचए के बारे में ज़्यादा जानने और यह जानने के लिए कि Google, Play Store में इनसे कैसे निपट रहा है, Google Play Protect डेवलपर दस्तावेज़ देखें.
ऐप्लिकेशन इंस्टॉल करना और अनुमतियां
पहले से इंस्टॉल किए गए ऐप्लिकेशन के लिए, ज़रूरत से ज़्यादा अनुमतियां देने से सुरक्षा का जोखिम बढ़ सकता है. पहले से इंस्टॉल किए गए ऐप्लिकेशन को, सिर्फ़ ज़रूरी अनुमतियां दें. साथ ही, पक्का करें कि उनके पास गैर-ज़रूरी अनुमतियों या विशेषाधिकारों का ऐक्सेस न हो. ऐप्लिकेशन की अनुमतियों के बारे में AndroidManifest.xml में बताया गया है.
- पहले से इंस्टॉल किए गए ऐप्लिकेशन को, गैर-ज़रूरी अनुमतियां या विशेषाधिकार न दें. सिस्टम के विशेषाधिकारों वाले ऐप्लिकेशन की अच्छी तरह से समीक्षा करें, क्योंकि इनके पास बहुत संवेदनशील अनुमतियां हो सकती हैं.
- पक्का करें कि अनुरोध की गई सभी अनुमतियां, उस खास ऐप्लिकेशन के फ़ंक्शन के लिए ज़रूरी हों.
- पक्का करें कि
अनुमति का इस्तेमाल करने वाले, पहले से इंस्टॉल किए गए सभी ऐप्लिकेशन के बारे में, उपयोगकर्ताओं को जानकारी दी गई हो.
INSTALL_PACKAGES - पक्का करें कि डेवलपर पर, UID 0 के तौर पर कोई भी ऐप्लिकेशन इंस्टॉल न करने की कानूनी बाध्यता हो.
- डेवलपर के नेटवर्क के ज़रिए इंस्टॉल किए जाने वाले सभी ऐप्लिकेशन के मेनिफ़ेस्ट में बताई गई अनुमतियों का आकलन करें
- पक्का करें कि डेवलपर पर, डिवाइस पर ऐप्लिकेशन उपलब्ध कराने से पहले, Google Safe Browsing API की मदद से, ऑटो-अपडेटर और इंस्टॉलर ऐप्लिकेशन के सभी डाउनलोड यूआरएल को स्कैन करने की कानूनी बाध्यता हो.
ऐप्लिकेशन साइनिंग
ऐप्लिकेशन के सिग्नेचर, डिवाइस की सुरक्षा में अहम भूमिका निभाते हैं. इनका इस्तेमाल, अनुमतियों की जांच और सॉफ़्टवेयर अपडेट के लिए किया जाता है. ऐप्लिकेशन पर साइन करने के लिए, पासकोड चुनते समय यह देखना ज़रूरी है कि कोई ऐप्लिकेशन सिर्फ़ एक डिवाइस पर उपलब्ध है या कई डिवाइसों पर.
- पक्का करें कि ऐप्लिकेशन पर, सार्वजनिक तौर पर जाने-पहचाने पासकोड से साइन न किया गया हो. जैसे, AOSP डेवलपर पासकोड.
- पक्का करें कि ऐप्लिकेशन पर साइन करने के लिए इस्तेमाल किए गए पासकोड को, संवेदनशील पासकोड को मैनेज करने के लिए इंडस्ट्री के स्टैंडर्ड के मुताबिक मैनेज किया गया हो. इसमें, हार्डवेयर सुरक्षा मॉड्यूल (एचएसएम) भी शामिल है. यह सीमित और ऑडिट किया जा सकने वाला ऐक्सेस देता है.
- पक्का करें कि ऐप्लिकेशन पर, प्लैटफ़ॉर्म पासकोड से साइन न किया गया हो. ऐसा करने से, किसी ऐप्लिकेशन को प्लैटफ़ॉर्म सिग्नेचर अनुमतियों का ऐक्सेस मिल जाता है. ये अनुमतियां बहुत पावरफ़ुल होती हैं और इनका इस्तेमाल सिर्फ़ ऑपरेटिंग सिस्टम के कॉम्पोनेंट के लिए किया जाता है. सिस्टम ऐप्लिकेशन को, विशेषाधिकार वाली अनुमतियों का इस्तेमाल करना चाहिए.
- पक्का करें कि एक ही पैकेज नाम वाले ऐप्लिकेशन पर, अलग-अलग पासकोड से साइन न किया गया हो. ऐसा अक्सर तब होता है, जब अलग-अलग डिवाइसों के लिए कोई ऐप्लिकेशन बनाया जाता है. खास तौर पर, प्लैटफ़ॉर्म पासकोड का इस्तेमाल करते समय. अगर ऐप्लिकेशन, डिवाइस के हिसाब से अलग-अलग नहीं है, सभी डिवाइसों पर एक ही पासकोड का इस्तेमाल करें. अगर ऐप्लिकेशन, डिवाइस के हिसाब से अलग-अलग है, तो हर डिवाइस और पासकोड के लिए अलग-अलग पैकेज नाम बनाएं.
ऐप्लिकेशन और प्रोसेस को आइसोलेट करना
Android सैंडबॉक्सिंग मॉडल सही तरीके से इस्तेमाल करने पर, ऐप्लिकेशन और प्रोसेस के लिए ज़्यादा सुरक्षा देता है.
रूट प्रोसेस को आइसोलेट करना
रूट प्रोसेस, प्रिविलेज एस्कलेशन हमलों का सबसे ज़्यादा निशाना बनती हैं. रूट प्रोसेस की संख्या कम करने से, प्रिविलेज एस्कलेशन के जोखिम को कम किया जा सकता है.
- पक्का करें कि डिवाइस, रूट के तौर पर सिर्फ़ ज़रूरी कोड चलाएं. जहां तक हो सके, रूट प्रोसेस के बजाय, सामान्य Android प्रोसेस का इस्तेमाल करें. अगर किसी प्रोसेस को किसी डिवाइस पर रूट के तौर पर चलना है, तो AOSP की सुविधा के अनुरोध में उस प्रोसेस के बारे में जानकारी दें, ताकि सार्वजनिक तौर पर उसकी समीक्षा की जा सके.
- जहां तक हो सके, रूट कोड को, भरोसेमंद न माने जाने वाले डेटा से आइसोलेट किया जाना चाहिए. साथ ही, इंटरप्रोसेस कम्युनिकेशन (आईपीसी) के ज़रिए ऐक्सेस किया जाना चाहिए. उदाहरण के लिए, रूट सुविधा को, Binder के ज़रिए ऐक्सेस की जा सकने वाली किसी छोटी सेवा तक सीमित करें. साथ ही, नेटवर्क ट्रैफ़िक को मैनेज करने के लिए, कम या बिना विशेषाधिकार वाले किसी ऐप्लिकेशन को, सिग्नेचर अनुमति के साथ सेवा उपलब्ध कराएं.
- रूट प्रोसेस को, नेटवर्क सॉकेट पर लिसन नहीं करना चाहिए.
- रूट प्रोसेस में, सामान्य मकसद वाला रनटाइम शामिल नहीं होना चाहिए. जैसे, Java VM.
सिस्टम ऐप्लिकेशन को आइसोलेट करना
आम तौर पर, पहले से इंस्टॉल किए गए ऐप्लिकेशन को, शेयर किए गए सिस्टम यूनीक आइडेंटिफ़ायर (यूआईडी) के साथ नहीं चलना चाहिए. अगर किसी ऐप्लिकेशन के लिए, सिस्टम या किसी अन्य विशेषाधिकार वाली सेवा (जैसे, फ़ोन) के शेयर किए गए यूआईडी का इस्तेमाल करना ज़रूरी है, तो उस ऐप्लिकेशन को कोई भी ऐसी सेवा, ब्रॉडकास्ट रिसीवर या कॉन्टेंट प्रोवाइडर एक्सपोर्ट नहीं करना चाहिए जिसे उपयोगकर्ताओं की ओर से इंस्टॉल किए गए तीसरे पक्ष के ऐप्लिकेशन ऐक्सेस कर सकते हैं.
- पक्का करें कि डिवाइस, सिस्टम के तौर पर सिर्फ़ ज़रूरी कोड चलाएं. जहां तक हो सके, सिस्टम यूआईडी का फिर से इस्तेमाल करने के बजाय, अपने यूआईडी वाली Android प्रोसेस का इस्तेमाल करें.
- जहां तक हो सके, सिस्टम कोड को, भरोसेमंद न माने जाने वाले डेटा से आइसोलेट किया जाना चाहिए. साथ ही, आईपीसी को सिर्फ़ भरोसेमंद मानी जाने वाली अन्य प्रोसेस के लिए उपलब्ध कराया जाना चाहिए.
- सिस्टम प्रोसेस को, नेटवर्क सॉकेट पर लिसन नहीं करना चाहिए. यह CTS की ज़रूरी शर्त है.
प्रोसेस को आइसोलेट करना
Android ऐप्लिकेशन सैंडबॉक्स, ऐप्लिकेशन को सिस्टम पर मौजूद अन्य प्रोसेस से आइसोलेट करने की सुविधा देता है. इसमें रूट प्रोसेस और डीबगर भी शामिल हैं. जब तक डीबग करने की सुविधा को, ऐप्लिकेशन और उपयोगकर्ता ने खास तौर पर चालू न किया हो, तब तक किसी भी ऐप्लिकेशन को इस सुविधा का उल्लंघन नहीं करना चाहिए.
- पक्का करें कि रूट प्रोसेस, अलग-अलग ऐप्लिकेशन के डेटा फ़ोल्डर में मौजूद डेटा को ऐक्सेस न करें. हालांकि, Android के डीबग करने के किसी ऐसे तरीके का इस्तेमाल किया जा सकता है जिसके बारे में दस्तावेज़ में जानकारी दी गई हो.
- पक्का करें कि रूट प्रोसेस, ऐप्लिकेशन की मेमोरी को ऐक्सेस न करें. हालांकि, Android के डीबग करने के किसी ऐसे तरीके का इस्तेमाल किया जा सकता है जिसके बारे में दस्तावेज़ में जानकारी दी गई हो.
- पक्का करें कि डिवाइस में कोई ऐसा ऐप्लिकेशन शामिल न हो जो अन्य ऐप्लिकेशन या प्रोसेस के डेटा या मेमोरी को ऐक्सेस करता हो.