मेमोरी में मौजूद डेटा असुरक्षित है
Android कोडबेस में सबसे आम समस्याएं, मेमोरी की सुरक्षा से जुड़े गड़बड़ियां और नेटिव प्रोग्रामिंग भाषाओं में मेमोरी को मैनेज करने से जुड़ी गड़बड़ियां हैं. इनसे सुरक्षा से जुड़ी गंभीर समस्याओं में से 60% से ज़्यादा समस्याएं और उपयोगकर्ताओं को दिखने वाले लाखों क्रैश होते हैं.
मेमोरी से जुड़ी सुरक्षा से जुड़ी गड़बड़ियां, ऐप्लिकेशन की क्वालिटी और स्थिरता पर बुरा असर डालती हैं. साथ ही, उपयोगकर्ता के डिवाइसों पर ऐप्लिकेशन के क्रैश होने की समस्या का एक बड़ा हिस्सा इन गड़बड़ियों की वजह से होता है. इसलिए, मेमोरी से जुड़ी सुरक्षा से जुड़े गड़बड़ियों की संख्या ज़्यादा होने पर, उपयोगकर्ता अनुभव खराब होता है.
C, C++, और असेंबली जैसी मेमोरी से जुड़ी असुरक्षित भाषाओं में लिखा गया नेटिव कोड, Android प्लैटफ़ॉर्म के 70% से ज़्यादा कोड का प्रतिनिधित्व करता है. यह Google Play Store के करीब 50% ऐप्लिकेशन में मौजूद होता है.
कोड की जटिलता लगातार बढ़ रही है. अगर इस पर ध्यान नहीं दिया जाता है, तो समय के साथ मेमोरी के लिए बनी सुरक्षा से जुड़ी गड़बड़ियां बढ़ेंगी. इसलिए, हमारे लिए लंबे समय तक सफल बने रहने के लिए, अपने नेटवर्क को ऐसे टूल और टेक्नोलॉजी देना ज़रूरी है जिनसे इस तरह की गड़बड़ियों का पता लगाया जा सके और उन्हें ठीक किया जा सके.
पिछले कई सालों से, हम हार्डवेयर पार्टनर के साथ मिलकर काम कर रहे हैं, ताकि Arm मेमोरी टैगिंग जैसी हार्डवेयर टेक्नोलॉजी को डेवलप किया जा सके. साथ ही, हमने Android कोडबेस में Rust को भी शामिल किया है.
इन टेक्नोलॉजी से, मेमोरी को सुरक्षित रखने की प्रोसेस को तेज़ किया जा सकेगा. साथ ही, इससे सॉफ़्टवेयर इंडस्ट्री को एक अहम समस्या को हल करने में मदद मिलेगी.
मेमोरी से जुड़ी सुरक्षा से जुड़ी गड़बड़ियों से क्वालिटी पर बुरा असर पड़ता है
मेमोरी की सुरक्षा से जुड़ी ऐसी गड़बड़ियों की वजह से सिस्टम की स्थिति के हिसाब से, बिना तय किए हुए नतीजे मिल सकते हैं. इस तरह के अनचाहे व्यवहार की वजह से, ऐप्लिकेशन क्रैश हो जाता है और हमारे उपयोगकर्ताओं को परेशानी होती है.
हर दिन, हमें उपयोगकर्ता के डिवाइसों पर लाखों नेटिव क्रैश दिखते हैं. GWP-ASan के आने के बाद, हमने ज़्यादातर क्रैश को मेमोरी सेफ़्टी बग से जोड़ा है.
यह डेटा पॉइंट, मेमोरी से जुड़ी सुरक्षा से जुड़ी गड़बड़ियों की क्वालिटी और संख्या के बीच के संबंध की पुष्टि करता है. यह डेटा, Chrome के हमारे साथियों के निष्कर्षों से मेल खाता है. ज़्यादा जानकारी के लिए, Chrome की GWP-ASan गड़बड़ी की हॉटलिस्ट देखें.
मेमोरी से जुड़ी सुरक्षा से जुड़ी गड़बड़ियां, सुरक्षा पर बुरा असर डालती हैं
Android की सुरक्षा से जुड़े जोखिमों में, मेमोरी की सुरक्षा से जुड़ी गड़बड़ियां लगातार सबसे ज़्यादा होती रही हैं.
यह जानकर खुशी हो रही है कि यह सिर्फ़ Android की समस्या नहीं है. Chrome और Microsoft के आंकड़े देखें. हालांकि, हमें अपने उपयोगकर्ताओं की सुरक्षा के लिए ज़्यादा काम करने की ज़रूरत है.
Google की Project Zero टीम
उन ज़ीरो-डे एक्सप्लॉइट को ट्रैक
करती है जिनका इस्तेमाल, उपयोगकर्ताओं पर असली हमलों में ज़ीरो-डे
जोखिमों के तौर पर किया गया है. ये काल्पनिक गड़बड़ियां नहीं हैं. हालांकि, उपयोगकर्ताओं पर हमले करने के लिए, इनका लगातार इस्तेमाल किया जाता है. मेमोरी से जुड़ी सुरक्षा से जुड़ी गड़बड़ियां (मेमोरी में गड़बड़ी और फ़्री की गई मेमोरी का इस्तेमाल करना) सबसे ज़्यादा होती हैं.
मेमोरी की सुरक्षा से जुड़ी गड़बड़ियों की वजह से लागत बढ़ जाती है
डिवाइसों को सुरक्षा से जुड़ी समस्याओं को ठीक करने के लिए अपडेट रखने से, हमारे उपयोगकर्ता सुरक्षित रहते हैं. हालांकि, इससे हमारे नेटवर्क पर पैसे खर्च होते हैं.
वेंडर के लो लेवल कोड में, मेमोरी से जुड़ी सुरक्षा से जुड़ी गड़बड़ियों की संख्या ज़्यादा होती है. इनमें अक्सर कस्टम बदलाव होते हैं. इन गड़बड़ियों को ठीक करने और उनकी जांच करने की लागत काफ़ी ज़्यादा होती है. हालांकि, डेवलपमेंट साइकल के दौरान इन गड़बड़ियों का जल्द पता लगाने से, इनकी लागत कम हो सकती है.
रिसर्च से पता चला है कि गड़बड़ियों का जल्दी पता लगाने से लागत छह गुना तक कम हो सकती है. हालांकि, हमारे नेटवर्क की जटिलता को देखते हुए, वेंडर की ओर से मैनेज किए जा रहे कोड बेस की औसत संख्या और सॉफ़्टवेयर की बढ़ती जटिलता को देखते हुए, ज़्यादा बचत की जा सकती है.
मेमोरी की सुरक्षा
Android 12 से, हमने सिस्टम में बदलाव किए हैं, ताकि Android कोडबेस में मेमोरी से जुड़ी सुरक्षा से जुड़े गड़बड़ियों की संख्या कम की जा सके. हम Android के मेमोरी सेफ़्टी टूल को बेहतर बना रहे हैं. साथ ही, नई ज़रूरी शर्तें भी लागू कर रहे हैं. इससे हमारे नेटवर्क को इस तरह के बग को ठीक करने में मदद मिलेगी. समय के साथ, इनसे हमारे उपयोगकर्ताओं को बेहतर क्वालिटी और बेहतर सुरक्षा मिलेगी. साथ ही, हमारे वेंडर की लागत भी कम होगी.
आने वाले सालों में, क्वालिटी और सुरक्षा के मामले में मेमोरी की सुरक्षा एक बेहतर बदलाव हो सकती है. साथ ही, Android इस पर काम करने की योजना बना रहा है.
मेमोरी की सुरक्षा से जुड़ी ज़रूरी शर्तें
Android
के साथ काम करने की परिभाषा से जुड़ा दस्तावेज़ (सीडीडी), डेवलपमेंट के दौरान मेमोरी की सुरक्षा
वाले टूल इस्तेमाल करने का सुझाव ज़रूर देता है.
हम अपने नेटवर्क के साथ मिलकर काम कर रहे हैं, ताकि मेमोरी की सुरक्षा करने वाले टूल का इस्तेमाल बढ़ाया जा सके. साथ ही, उन्हें लगातार इंटिग्रेशन और जांच की प्रोसेस में इंटिग्रेट किया जा सके.
हम यह पक्का करना चाहते हैं कि समय के साथ, हम यह पक्का करना चाहते हैं कि
मेमोरी सुरक्षा टूल का इस्तेमाल करके हर डिवाइस,
कंपैटिबिलिटी टेस्ट सुइट (CTS) की पूरी तरह से जांच करता है. इन टूल से पता चलता है कि इस तरह की कोई गड़बड़ी नहीं मिली. उदाहरण के लिए, Arm v9 प्लैटफ़ॉर्म के लिए, मेमोरी टैगिंग की सुविधा चालू करके सीटीएस चलाना ज़रूरी होगा. वहीं, Arm v8 प्लैटफ़ॉर्म के लिए, HWASAN और KASAN का इस्तेमाल करके सीटीएस चलाने का अनुरोध किया जाएगा.
प्लैटफ़ॉर्म कोड के लिए, Rust को नई प्रोग्रामिंग भाषा के तौर पर इस्तेमाल करना
Android 12 में, Rust को प्लैटफ़ॉर्म की भाषा के तौर पर पेश किया गया था. Rust, C/C++ की तरह ही परफ़ॉर्मेंस के लेवल पर, मेमोरी और थिरेड की सुरक्षा देता है. हमें उम्मीद है कि Rust, ज़्यादातर नए नेटिव प्रोजेक्ट के लिए पसंदीदा विकल्प होगा. हालांकि, Rust में मेमोरी से जुड़े सभी असुरक्षित कोड को फिर से लिखना संभव नहीं है. फ़िलहाल, Android प्लैटफ़ॉर्म के 70% से ज़्यादा कोड में असुरक्षित कोड मौजूद है. आने वाले समय में, Rust, मेमोरी की सुरक्षा करने वाले टूल के साथ काम करेगा.
मेमोरी की सुरक्षा से जुड़े टूल
Android में कई तरह के टूल काम करते हैं. इनकी मदद से, मेमोरी से जुड़ी सुरक्षा से जुड़ी गड़बड़ियों का पता लगाया जा सकता है. नीचे दी गई इमेज में, Android डिवाइस की मेमोरी को सुरक्षित रखने वाले उपलब्ध टूल के बारे में बताया गया है.
हमारे टूल, डिप्लॉयमेंट के अलग-अलग तरीकों और टारगेट के लिए उपलब्ध हैं. नीचे दिए गए दस्तावेज़ में हर टूल के बारे में बताया गया है. साथ ही, इसमें यह जानकारी भी दी गई है कि इनका इस्तेमाल आपके प्रॉडक्ट में किस तरह किया जा सकता है.