Google अश्वेत समुदायों के लिए नस्लीय इक्विटी को आगे बढ़ाने के लिए प्रतिबद्ध है। देखो कैसे।
इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

ऐप सिक्योरिटी बेस्ट प्रैक्टिस

इस अनुभाग में Android उपकरणों पर ऐप्स की सुरक्षा सुनिश्चित करने के लिए सिफारिशें हैं।

स्रोत कोड की समीक्षा

स्रोत कोड की समीक्षा इस दस्तावेज़ में पहचाने गए लोगों सहित सुरक्षा मुद्दों की एक विस्तृत श्रृंखला का पता लगा सकती है। एंड्रॉइड मैन्युअल और स्वचालित स्रोत कोड समीक्षा दोनों को दृढ़ता से प्रोत्साहित करता है।

  • कवरेज सुनिश्चित करने के लिए समीक्षा करते समय व्यापक सुरक्षा मार्गदर्शन का पालन करें। सुसंगत और पूर्ण समीक्षा सुनिश्चित करने के लिए प्रासंगिक आंतरिक या बाहरी मानकों का उपयोग करें।
  • एंड्रॉइड एसडीके का उपयोग करके सभी ऐप कोड पर एंड्रॉइड स्टूडियो लिंटर जैसे लाइनर चलाएं और किसी भी पहचाने गए मुद्दों को ठीक करें।
  • एक स्वचालित उपकरण का उपयोग करके मूल कोड का विश्लेषण करें जो मेमोरी प्रबंधन के मुद्दों का पता लगा सकता है, जैसे बफर ओवरफ्लो और ऑफ-बाय-वन त्रुटियां।
  • एंड्रॉइड बिल्ड सिस्टम एलएलवीएम सैनिटाइज़र के कई का समर्थन करता है, जैसे कि एड्रेससेनिटाइज़र और अनडिफ़ाइंडबेहाइवरसैनिटाइज़र , जो स्मृति से संबंधित मुद्दों के रनटाइम विश्लेषण के लिए उपयोग किया जा सकता है। फ़र्ज़ी के साथ संयुक्त, libFuzzer के माध्यम से एंड्रॉइड में समर्थित है, सैनिटाइज़र असामान्य किनारे के मामलों को उजागर कर सकता है जो आगे की जांच की आवश्यकता होती है।
  • एक जानकार सुरक्षा मूल्यांकनकर्ता को क्रिप्टो, भुगतान प्रसंस्करण और PII प्रसंस्करण जैसे उच्च जोखिम कोड की समीक्षा करनी चाहिए।

स्वचालित परीक्षण

स्वचालित परीक्षण सुरक्षा मुद्दों की एक विस्तृत श्रृंखला का पता लगाने में मदद कर सकता है और इसे नियमित रूप से निष्पादित किया जाना चाहिए।

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

भेद्यता स्कैनिंग

भेद्यता स्कैनिंग यह सुनिश्चित करने में मदद कर सकती है कि पहले से इंस्टॉल किए गए एप्लिकेशन ज्ञात सुरक्षा कमजोरियों से मुक्त हैं। उन्नत पहचान इन कमजोरियों को दूर करने और उपयोगकर्ताओं और उपकरणों के लिए जोखिम को रोकने के साथ आवश्यक समय और लागत को कम कर सकती है।

  • एक उद्योग-मान्यता प्राप्त ऐप भेद्यता स्कैनिंग उपकरण और पते की कमजोरियों का उपयोग करके सभी पहले से इंस्टॉल किए गए एप्लिकेशन को स्कैन करें।

संभावित रूप से हानिकारक अनुप्रयोग

यह सुनिश्चित करना महत्वपूर्ण है कि आपके डिवाइस पर पहले से इंस्टॉल किए गए ऐप्स संभावित रूप से हानिकारक एप्लिकेशन (PHAs) नहीं हैं। आपके डिवाइस पर शामिल सभी ऐप्स के व्यवहार के लिए आप जिम्मेदार हैं। डिवाइस लॉन्च से पहले, कमजोरियों के लिए सभी पूर्व-लोड किए गए एप्लिकेशन को स्कैन करें।

PHAs के बारे में अधिक जानकारी के लिए और Google Play स्टोर में उन्हें कैसे संयोजित कर रहा है, इसके लिए Google Play Protect डेवलपर प्रलेखन देखें

एप्लिकेशन स्थापना और अनुमतियाँ

पूर्व-स्थापित ऐप्स के लिए अत्यधिक अनुमतियाँ सुरक्षा जोखिम पैदा कर सकती हैं। न्यूनतम आवश्यक अनुमतियों के लिए पहले से इंस्टॉल किए गए एप्लिकेशन को प्रतिबंधित करें और सुनिश्चित करें कि उनके पास अनावश्यक अनुमतियों या विशेषाधिकारों तक पहुंच नहीं है। App अनुमतियाँ AndroidManifest.xml में वर्णित हैं।

  • पूर्व-स्थापित एप्लिकेशन को अनावश्यक अनुमति या विशेषाधिकार न दें। पूरी तरह से सिस्टम विशेषाधिकारों के साथ ऐप्स की समीक्षा करें क्योंकि उनके पास बहुत संवेदनशील अनुमतियां हो सकती हैं।
  • सुनिश्चित करें कि अनुरोध की गई सभी अनुमतियां उस विशिष्ट ऐप की कार्यक्षमता के लिए प्रासंगिक और आवश्यक हैं।
  • सुनिश्चित करें कि INSTALL_PACKAGES अनुमति का उपयोग करने वाले सभी पूर्व-स्थापित ऐप्स के लिए उपयोगकर्ता प्रकटीकरण है।
  • सुनिश्चित करें कि डेवलपर अनुबंधित है कि वह यूआईडी 0 के रूप में किसी भी ऐप को स्थापित न करे।
  • डेवलपर के नेटवर्क के माध्यम से स्थापित किए जाने वाले सभी ऐप्स के प्रकट होने में घोषित अनुमतियों का मूल्यांकन करें।
  • सुनिश्चित करें कि डेवलपर डिवाइस के लिए ऐप्स परोसने से पहले Google सुरक्षित ब्राउज़िंग एपीआई के साथ ऑटो-अपडेटर और इंस्टॉलर एप्लिकेशन के सभी डाउनलोड यूआरएल को स्कैन करने के लिए अनुबंधित है।

ऐप पर हस्ताक्षर

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

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

एप्लिकेशन और प्रक्रियाओं को अलग करना

एंड्रॉइड सैंडबॉक्सिंग मॉडल सही तरीके से उपयोग किए जाने पर एप्लिकेशन और प्रक्रियाओं के आसपास अतिरिक्त सुरक्षा प्रदान करता है।

जड़ प्रक्रियाओं को अलग करना

रूट प्रक्रियाओं विशेषाधिकार वृद्धि हमलों का सबसे लगातार लक्ष्य हैं; जड़ प्रक्रियाओं की संख्या कम करने से विशेषाधिकार वृद्धि का जोखिम कम हो जाता है।

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

सिस्टम ऐप्स को अलग करना

सामान्य तौर पर, पहले से इंस्टॉल किए गए ऐप को साझा सिस्टम यूनीक आइडेंटिफायर (यूआईडी) के साथ नहीं चलना चाहिए। यदि किसी एप्लिकेशन के लिए सिस्टम के साझा यूआईडी या किसी अन्य विशेषाधिकार प्राप्त सेवा (जैसे, फोन) का उपयोग करना आवश्यक है, तो ऐप को किसी भी सेवाओं, प्रसारण रिसीवर, या सामग्री प्रदाताओं को निर्यात नहीं करना चाहिए जो उपयोगकर्ताओं द्वारा स्थापित तृतीय-पक्ष एप्लिकेशन द्वारा एक्सेस किए जा सकते हैं। ।

  • सुनिश्चित करें कि डिवाइस सिस्टम के रूप में न्यूनतम आवश्यक कोड चलाते हैं। जहां संभव हो, सिस्टम UID का पुन: उपयोग करने के बजाय अपने स्वयं के UID के साथ Android प्रक्रिया का उपयोग करें।
  • जहां संभव हो, सिस्टम कोड को अविश्वसनीय डेटा से अलग किया जाना चाहिए और केवल अन्य विश्वसनीय प्रक्रियाओं के लिए आईपीसी को उजागर करना चाहिए।
  • सिस्टम प्रक्रियाओं को नेटवर्क सॉकेट पर नहीं सुनना चाहिए। यह एक सीटीएस आवश्यकता है।

प्रक्रियाओं को अलग करना

Android एप्लिकेशन सैंडबॉक्स सिस्टम पर रूट प्रक्रियाओं और डीबगर्स सहित अन्य प्रक्रियाओं से अलगाव की उम्मीद के साथ ऐप प्रदान करता है। जब तक डिबगिंग विशेष रूप से ऐप और उपयोगकर्ता द्वारा सक्षम नहीं होती है, तब तक किसी भी ऐप को उस उम्मीद का उल्लंघन नहीं करना चाहिए।

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