मेमोरी सुरक्षा

स्मृति असुरक्षित

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

मेमोरी सुरक्षा बग उपयोगकर्ता अनुभव, लागत और सुरक्षा को प्रभावित करते हैं।
चित्र 1 : मेमोरी सुरक्षा बग और गुणवत्ता, सुरक्षा और लागत पर उनका नकारात्मक प्रभाव

मेमोरी सुरक्षा बग गुणवत्ता और स्थिरता पर नकारात्मक प्रभाव डालते हैं और अंतिम उपयोगकर्ता उपकरणों पर देखे गए क्रैश के एक महत्वपूर्ण हिस्से के लिए जिम्मेदार होते हैं। इसलिए मेमोरी सुरक्षा बग का उच्च घनत्व सीधे तौर पर खराब उपयोगकर्ता अनुभव से संबंधित है।
C, C++ और असेंबली जैसी मेमोरी असुरक्षित भाषाओं में लिखा गया नेटिव कोड 70% से अधिक एंड्रॉइड प्लेटफ़ॉर्म कोड का प्रतिनिधित्व करता है और लगभग 50% Play Store एप्लिकेशन में मौजूद है।
कोड की लगातार बढ़ती जटिलता को देखते हुए, यदि ध्यान न दिया गया तो मेमोरी सुरक्षा बग समय के साथ बढ़ते रहेंगे। इसलिए, हमारे पारिस्थितिकी तंत्र को ऐसे उपकरण और प्रौद्योगिकियां प्रदान करना जो ऐसे बगों का पता लगा सकें और उन्हें कम कर सकें, हमारी दीर्घकालिक सफलता के लिए महत्वपूर्ण है।
पिछले कई वर्षों से, हम आर्म मेमोरी टैगिंग जैसी हार्डवेयर तकनीकों को विकसित करने के लिए अपने हार्डवेयर भागीदारों के साथ मिलकर काम कर रहे हैं और एंड्रॉइड कोडबेस में रस्ट पेश किया है।
ये प्रौद्योगिकियाँ मेमोरी सुरक्षा के लिए हमारे मार्ग को तेज़ करने वाली हैं और व्यापक सॉफ़्टवेयर उद्योग को एक प्रमुख समस्या क्षेत्र का समाधान करने में मदद करने वाली हैं।

मेमोरी सुरक्षा बग गुणवत्ता पर नकारात्मक प्रभाव डालते हैं

गुप्त मेमोरी सुरक्षा बग सिस्टम की स्थिति के आधार पर गैर-नियतात्मक परिणाम पैदा कर सकते हैं। यह अप्रत्याशित व्यवहार हमारे उपयोगकर्ताओं के लिए क्रैश और परेशानी का कारण बनता है।

हर दिन हम अंतिम उपयोगकर्ता उपकरणों से लाखों मूल क्रैश देखते हैं और GWP-ASan की शुरूआत के साथ, हमने उनमें से अधिकांश को मेमोरी सुरक्षा बग के रूप में खोजा है।
यह डेटा बिंदु मेमोरी सुरक्षा बग की गुणवत्ता और घनत्व के बीच सहसंबंध को मान्य करता है और हमारे Chrome सहयोगियों द्वारा देखी गई बातों के अनुरूप है (Chrome GWP-ASan बग हॉटलिस्ट देखें)।

मेमोरी सुरक्षा बग सुरक्षा को नकारात्मक रूप से प्रभावित करते हैं

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

मेमोरी सुरक्षा बग सुरक्षा को नकारात्मक रूप से प्रभावित करते हैं।
चित्र 2 : मेमोरी सुरक्षा बग एंड्रॉइड कमजोरियों में योगदान करते हैं

हालाँकि यह जानना उत्साहजनक है कि यह केवल एक Android समस्या नहीं है ( Chrome और Microsoft आँकड़े देखें), हमें अपने उपयोगकर्ताओं की सुरक्षा के लिए और भी बहुत कुछ करने की आवश्यकता है।
Google की प्रोजेक्ट ज़ीरो टीम शून्य दिन के कारनामों को ट्रैक करती है जिनका उपयोग उपयोगकर्ताओं के खिलाफ वास्तविक हमलों में शून्य दिन की कमजोरियों के रूप में किया गया है। ये काल्पनिक बग नहीं हैं बल्कि उपयोगकर्ताओं के खिलाफ हमलों में सक्रिय रूप से उपयोग किए जाने वाले कारनामे हैं। मेमोरी सुरक्षा बग (मेमोरी भ्रष्टाचार और उपयोग के बाद-मुक्त) में भारी बहुमत शामिल है।

मेमोरी सुरक्षा बग लागत बढ़ाते हैं

सुरक्षा सुधारों के साथ उपकरणों को अद्यतन रखने से हमारे उपयोगकर्ता सुरक्षित रहते हैं लेकिन हमारे पारिस्थितिकी तंत्र पर आर्थिक लागत आती है।

निम्न स्तर के विक्रेता कोड में मेमोरी सुरक्षा बग का उच्च घनत्व, जिसमें अक्सर कस्टम संशोधन होते हैं, फिक्स और परीक्षण लागत में काफी वृद्धि करता है। हालाँकि, विकास चक्र के दौरान इन बगों का जल्दी पता लगाने से ये लागत कम हो सकती है।

शोध से पता चलता है कि बग का पहले पता लगाने से लागत छह गुना तक कम हो सकती है। हालाँकि, हमारे पारिस्थितिकी तंत्र की जटिलता, एक विक्रेता द्वारा बनाए गए कोडबेस की औसत संख्या और सॉफ़्टवेयर की लगातार बढ़ती जटिलता को देखते हुए, बचत अधिक हो सकती है।

स्मृति सुरक्षा

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

आने वाले वर्षों में मेमोरी सुरक्षा गुणवत्ता और सुरक्षा के लिए एक विभेदक बनने की संभावना है, और एंड्रॉइड इस मार्ग का नेतृत्व करने की योजना बना रहा है।

स्मृति सुरक्षा के समर्थन में आवश्यकताएँ

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

प्लेटफ़ॉर्म कोड के लिए एक नई प्रोग्रामिंग भाषा के रूप में रस्ट

एंड्रॉइड 12 ने रस्ट को एक प्लेटफ़ॉर्म भाषा के रूप में पेश किया। रस्ट C/C++ के समान प्रदर्शन स्तर पर मेमोरी और थ्रेड सुरक्षा प्रदान करता है। हम उम्मीद करते हैं कि अधिकांश नई देशी परियोजनाओं के लिए रस्ट पसंदीदा विकल्प होगा। हालाँकि, सभी मेमोरी असुरक्षित कोड को फिर से लिखना, जो वर्तमान में एंड्रॉइड प्लेटफ़ॉर्म कोड के 70% से अधिक का प्रतिनिधित्व करता है, रस्ट में संभव नहीं है। आगे चलकर रस्ट मेमोरी सुरक्षा उपकरणों का पूरक होगा।

स्मृति सुरक्षा उपकरण

एंड्रॉइड विभिन्न प्रकार के टूल का समर्थन करता है जो मेमोरी सुरक्षा बग का पता लगाने में मदद करते हैं। नीचे दिया गया चित्र उपलब्ध एंड्रॉइड मेमोरी सुरक्षा उपकरणों का वर्गीकरण प्रस्तुत करता है।

मेमोरी सुरक्षा बग सुरक्षा को नकारात्मक रूप से प्रभावित करते हैं।
चित्र 3 : एंड्रॉइड मेमोरी सुरक्षा उपकरण परिदृश्य

हमारे टूलींग में परिनियोजन परिदृश्यों और लक्ष्यों की एक विस्तृत श्रृंखला शामिल है। निम्नलिखित दस्तावेज़ प्रत्येक उपकरण का वर्णन करता है और आपके उत्पादों में उनका उपयोग करने के लिए एक संदर्भ प्रदान करता है।