एंड्रॉइड के इंस्टॉलर ऐप पर फ़ोर्टनाइट मोबाइल अपनी पहली रिलीज़ में शोषण योग्य था। सैमसंग गैलेक्सी फोन पर किसी भी ऐप को चुपचाप इंस्टॉल करना इसका दुरुपयोग हो सकता है।
एंड्रॉइड पर फ़ोर्टनाइट मोबाइल का लॉन्च बहुत अच्छा नहीं रहा, खासकर तब से कई समर्थित डिवाइस वास्तव में स्वीकार्य फ़्रेम दर के साथ गेम खेलने के लिए संघर्ष करें. गेम को एक के रूप में लॉन्च किया गया सैमसंग गैलेक्सी केवल 3 दिनों के लिए एक्सक्लूसिव. फ़ोर्टनाइट इंस्टालर पहली बार उपलब्ध था सैमसंग गैलेक्सी ऐप्स इससे पहले एपिक गेम्स गैर-सैमसंग खिलाड़ियों को एपिक की वेबसाइट पर प्राप्त फोर्टनाइट इंस्टालर से पूरा गेम डाउनलोड और इंस्टॉल करने की अनुमति देता था। फ़ोर्टनाइट इंस्टालर उपलब्ध होने के कुछ ही समय बाद, एपिक गेम्स ने चुपचाप इंस्टालर के लिए एक अपडेट भेज दिया। अब हम जानते हैं क्यों: उन्होंने एक समझौता किया मैन-इन-द-डिस्क शोषण ने एक दुर्भावनापूर्ण ऐप के लिए इसे संभव बना दिया चुपचाप स्थापित करें कोई भी ऐप जो वे चाहते थे सैमसंग गैलेक्सी स्मार्टफ़ोन पर. चूँकि इस बारे में कुछ भ्रम है कि यह दोष कैसे काम करता है, हम चीजों को स्पष्ट करने का प्रयास करेंगे। सबसे पहले, हमें एंड्रॉइड पर ऐप इंस्टॉलेशन की मूल बातें समझाने की जरूरत है।
एंड्रॉइड स्मार्टफ़ोन पर ऐप इंस्टॉलेशन फ़्लो
प्रथम-पक्ष स्रोतों से मौन स्थापनाएँ
उपयोगकर्ता से अनुमति मांगे बिना एंड्रॉइड पर चुपचाप एपीके इंस्टॉल करने के लिए, आपके पास एक सिस्टम-स्तरीय एप्लिकेशन होना चाहिए INSTALL_PACKAGES की अनुमति दी। इस अनुमति वाले एप्लिकेशन के उदाहरणों में अधिकांश एंड्रॉइड डिवाइस पर Google Play Store शामिल है। सैमसंग, हुआवेई और अन्य डिवाइस निर्माताओं के उपकरणों पर प्रथम-पक्ष एप्लिकेशन स्टोर को INSTALL_PACKAGES अनुमति भी दी जा सकती है। यदि आप Google Play Store से कोई ऐप इंस्टॉल करना चाहते हैं, तो यह डाउनलोड को संभालेगा और स्वचालित रूप से इंस्टॉल होगा आपके द्वारा "इंस्टॉल करें" दबाने के बाद बिना किसी हस्तक्षेप के ऐप आपके लिए उपलब्ध हो जाएगा। (Google Play Store भी खुद ब खुद कुछ रनटाइम अनुमतियाँ प्रदान करता है जैसे कि एक के लिए ओवरले, जबकि प्ले स्टोर के बाहर से इंस्टॉल किए गए ऐप्स को उपयोगकर्ता से ये अनुमतियां देने के लिए कहना होगा।)
यदि आप उत्सुक हैं कि क्या आपके डिवाइस पर किसी ऐप के पास INSTALL_PACKAGES अनुमति है, तो आप ADB कमांड के माध्यम से पता लगा सकते हैं।
adb shell
dumpsys packagepackage.name.here | grep "INSTALL_PACKAGES"
उदाहरण के लिए, Google Play Store के पैकेज का नाम " हैcom.android.vending
". इस अनुमति वाला एक अन्य ऐप पैकेज नाम के साथ शेल है com.android.shell
. आप में से उन लोगों के लिए जो उपयोग करते हैं एंड्रोमेडा प्लग-इन के माध्यम से रूटलेस सबस्ट्रैटम एंड्रॉइड ओरेओ पर, आपके पीसी से चलने वाली एंड्रोमेडा स्क्रिप्ट शेल प्रक्रिया को चालू रखती है ताकि सबस्ट्रैटम इसका उपयोग पैकेज (थीम ओवरले) स्थापित करने के लिए कर सके और फिर इसका उपयोग कर सके। ओवरलेमैनेजर कमांड ओवरले को सक्षम करने के लिए.
तृतीय-पक्ष स्रोतों से साइड-लोडिंग ऐप्स
यदि आप किसी प्रथम-पक्ष ऐप स्टोर के बाहर से कोई ऐप डाउनलोड और इंस्टॉल करने का प्रयास करते हैं, तो आपको सबसे पहले अज्ञात इंस्टॉलेशन स्रोतों को सक्षम करना होगा। इससे पैकेज प्रबंधक सेवा एंड्रॉइड फ्रेमवर्क के भीतर (जिसमें INSTALL_PACKAGES अनुमति है) जानते हैं कि आप तीसरे पक्ष के स्रोतों से साइड-लोडिंग ऐप्स के जोखिमों को स्वीकार करते हैं। प्री-एंड्रॉइड Oreo डिवाइस पर, अज्ञात स्रोतों से इंस्टॉलेशन की अनुमति देने के लिए सुरक्षा सेटिंग्स में एक एकल टॉगल होता है। Android Oreo और बाद के संस्करणों पर, एपीके की स्थापना के लिए कॉल करने वाले ऐप को घोषित करना होगा REQUEST_INSTALL_PACKAGES अनुमति और उपयोगकर्ता को उस ऐप को श्वेतसूची में डालना होगा ताकि वह पैकेज प्रबंधक सेवा के माध्यम से ऐप इंस्टॉल का अनुरोध कर सके। चूँकि REQUEST_INSTALL_PACKAGES एक "एपॉप" अनुमति है, जो इसे उन अनुमतियों में से एक बनाती है जिन्हें सेटिंग्स के अनुमति प्रबंधक के भीतर से या इसके माध्यम से नियंत्रित किया जा सकता है cmd appops
शेल कमांड.
एक बार जब वैश्विक स्तर पर या विशेष रूप से अनुरोध करने वाले एप्लिकेशन के लिए अज्ञात स्रोतों से इंस्टॉलेशन सक्षम हो जाता है, तो उपयोगकर्ता किसी ऐप को साइड-लोड कर सकता है। हालाँकि, पैकेज मैनेजर ऐप को चुपचाप इंस्टॉल करने की अनुमति नहीं देता है। बल्कि, यह उपयोगकर्ता को संकेत देगा कि क्या वे ऐप इंस्टॉल करना चाहते हैं और किसी भी संवेदनशील अनुमति को सूचीबद्ध करेगा जिसे वह इंस्टॉल पर देने का अनुरोध करता है। यदि उपयोगकर्ता स्वीकार करता है, तो ऐप अनुरोधित गैर-रनटाइम अनुमतियों के साथ इंस्टॉल हो जाता है। OEM पैकेज प्रबंधक को भी अनुकूलित कर सकते हैं: उदाहरण के लिए, चीनी संस्करण में पैकेज प्रबंधक हुआवेई के ईएमयूआई 5 में यह तय करने के लिए एपीके को स्कैन करने की सुविधा है कि क्या यह सुरक्षित है और क्या अनुमतियां हैं इसे नियंत्रित करें मंज़ूर किया गया पहले स्थापना. मैंने इसे चीन से आयातित ईएमयूआई 5 पर चलने वाले ऑनर नोट 8 पर देखा है, हालांकि मुझे यकीन है कि अन्य चीनी हुआवेई और ऑनर डिवाइसों में भी उनके पैकेज मैनेजरों में यह सुविधा है।
किसी भी मामले में, यह किसी स्वीकृत, प्रथम-पक्ष स्रोत और तृतीय-पक्ष स्रोत से ऐप इंस्टॉल करने के बीच अंतर को बताता है। यदि आप INSTALL_PACKAGES के साथ Play Store या समकक्ष ऐप स्टोर से कोई ऐप इंस्टॉल करने का प्रयास करते हैं अनुमति, यह आपके प्रारंभ करने के बाद उपयोगकर्ता के हस्तक्षेप के बिना चुपचाप अपने आप इंस्टॉल को संभाल लेगा डाउनलोड. लेकिन यदि आप XDA लैब्स, एपीकेमिरर, या अन्य तृतीय-पक्ष स्रोतों से एपीके डाउनलोड करते हैं, तो मानक पैकेज इंस्टॉलर इंस्टॉल को संभाल लेगा और उपयोगकर्ता को उस पैकेज को इंस्टॉल करने के लिए संकेत देगा। तो Fortnite इंस्टालर कहाँ से आता है और यह सब प्रासंगिक क्यों है?
Fortnite की स्थापना प्रक्रिया में एक खामी
इससे पहले आज, Google एक भेद्यता का खुलासा किया उन्होंने Fortnite इंस्टालर के पहले संस्करण के साथ इसकी खोज की। यह भेद्यता Exynos Samsung Galaxy S8+ (dream2lte) पर प्रदर्शित की गई थी, लेकिन इसने Samsung Galaxy Note 9 और Samsung Galaxy Tab S4 सहित अन्य सभी Samsung Experience उपकरणों को भी प्रभावित किया। भेद्यता एक अनुमति देता है पहले से इंस्टॉल किया गया दुर्भावनापूर्ण एप्लिकेशन जिस तरह से Fortnite इंस्टालर Fortnite को स्थापित करने का प्रयास करता है उसका लाभ उठाने के लिए पहली बार के लिए सैमसंग गैलेक्सी उपकरणों पर। सैमसंग गैलेक्सी ऐप्स में एक निजी एपीआई का उपयोग करके, Fortnite इंस्टॉलर उपयोगकर्ता को Fortnite इंस्टॉल करने के लिए मानक पैकेज इंस्टॉलर के माध्यम से संकेत देने की आवश्यकता को दरकिनार कर देता है। ऐसा इसलिए है क्योंकि गैलेक्सी ऐप्स के पास इंस्टॉलेशन को चुपचाप संभालने के लिए आवश्यक अनुमति है। इस साइलेंट इंस्टॉलेशन प्रक्रिया में कुछ भी गलत नहीं होगा यदि जो ऐप चुपचाप इंस्टॉल किया जा रहा है वह असली फ़ोर्टनाइट है। लेकिन Fortnite इंस्टालर ने Fortnite गेम के लिए डाउनलोड की गई एपीके फ़ाइल को संग्रहीत किया था, इसलिए इसका आसानी से उपयोग किया जा सकता था।
इश्यू ट्रैकर की रिपोर्ट के अनुसार, फ़ोर्टनाइट इंस्टालर फ़ोर्टनाइट मोबाइल एपीके डाउनलोड करेगा /sdcard/Android/data/com.epicgames.portal/files/downloads/
. एंड्रॉइड पर इसे "बाहरी भंडारण" माना जाता है क्योंकि /sdcard इसका एक प्रतीकात्मक लिंक है /डेटा/मीडिया/CURRENT_USER, और /sdcard वह नाम था जिसका उपयोग एंड्रॉइड के शुरुआती दिनों में किया जाता था जब ऐप डेटा होता था भौतिक एसडी कार्ड पर संग्रहीत। आजकल, ऐप डेटा आमतौर पर ऐप-विशिष्ट निर्देशिकाओं में / डेटा / डेटा / में संग्रहीत किया जाता है, और प्रत्येक ऐप के पास केवल अपनी / डेटा / डेटा निर्देशिका में फ़ाइलों तक पहुंच होती है। इस प्रकार, यदि Fortnite इंस्टॉलर ने डाउनलोड किए गए Fortnite APK को अपनी /data/data/ निर्देशिका में संग्रहीत किया है, तो पढ़ने की अनुमति के बिना किसी भी ऐप के लिए यह असंभव होगा (यानी)। बिना रूट एक्सेस के) यह जानने के लिए कि इस निर्देशिका में क्या हो रहा है।
हालाँकि, Fortnite इंस्टालर के बाद से डाउनलोड किए गए एपीके को बाह्य संग्रहण में सहेजा गया, इसकी निगरानी की जा सकती है और इसे अधिलेखित किया जा सकता है बाह्य संग्रहण वाला कोई भी ऐप पढ़ने की अनुमति देता है. आम तौर पर, ऐप्स /डेटा/मीडिया, "वर्चुअल एसडी कार्ड" को लिखते हैं, जब वे उन फ़ाइलों को संग्रहीत करते हैं जिन्हें उपयोगकर्ता द्वारा एमटीपी या अन्य ऐप्स के माध्यम से एक्सेस करने की आवश्यकता होती है। किसी ऐप को /डेटा/मीडिया पर पढ़ने या लिखने के लिए, उनके पास READ_EXTERNAL_STORAGE और होना चाहिए क्रमशः WRITE_EXTERNAL_STORAGE अनुमतियाँ (दोनों एक ही अनुमति समूह के अंतर्गत हैं और इसलिए हैं एक साथ प्रदान किया गया)। एंड्रॉइड 4.4 किटकैट से पहले, अधिकांश ऐप्स इंस्टॉलेशन पर इन अनुमतियों का अनुरोध करते थे क्योंकि अन्यथा, वे ऐसा नहीं करते अपने पैकेज की निर्दिष्ट बाह्य भंडारण निर्देशिका में फ़ाइलों को पढ़ने या लिखने में सक्षम /data/media/.../Android/. के परिचय के साथ FAT-on-sdcard शैली निर्देशिका अनुमतियों का अनुकरण करने के लिए FUSE एंड्रॉइड 4.4 किटकैट में, ऐप्स को बाहरी स्टोरेज में अपनी निर्दिष्ट निर्देशिका में फ़ाइलों तक पहुंचने के लिए किसी अनुमति की आवश्यकता नहीं है। किसी अन्य निर्देशिका में फ़ाइलों तक पहुँचने के लिए अभी भी बाहरी भंडारण अनुमतियों की आवश्यकता होगी, जो कि एक दुर्भावनापूर्ण ऐप Fortnite इंस्टॉलेशन प्रक्रिया को हाईजैक करने के लिए कर सकता है।
जैसा कि नीचे दिए गए वीडियो में दिखाया गया है, READ_EXTERNAL_STORAGE अनुमति वाला एक दुर्भावनापूर्ण ऐप बाहरी स्टोरेज में Fortnite Installer की डाउनलोड निर्देशिका की निगरानी करता है। जब यह पता चलता है कि डाउनलोड पूरा हो गया है और फिंगरप्रिंट सत्यापित है, तो यह बदल देता है WRITE_EXTERNAL_STORAGE की बदौलत अपने स्वयं के दुर्भावनापूर्ण पैकेज के साथ Fortnite पैकेज डाउनलोड किया अनुमति। हालाँकि, जिस तरह से सैमसंग गैलेक्सी ऐप्स इंस्टॉलेशन से पहले Fortnite APK को सत्यापित करता है (...यह सिर्फ जांचता है कि पैकेज का नाम "com.epicgames.fortnite" है या नहीं), गैलेक्सी होना संभव है ऐप्स उपयोगकर्ता के हस्तक्षेप या अधिसूचना के बिना चुपचाप पृष्ठभूमि में दुर्भावनापूर्ण पैकेज स्थापित करें—जब तक दुर्भावनापूर्ण पैकेज का नाम "com.epicgames.fortnite" था। इससे भी बदतर, अगर यह दुर्भावनापूर्ण पैकेज एसडीके स्तर 22 या उससे कम (एंड्रॉइड 5.1 लॉलीपॉप और इससे पहले) को लक्षित करता है, तो यह होगा इसके मेनिफ़ेस्ट में परिभाषित सभी अनुमतियाँ स्वचालित रूप से प्रदान की जाएंगी क्योंकि रनटाइम अनुमतियाँ केवल SDK स्तर 23 और उससे ऊपर (एंड्रॉइड 6.0 मार्शमैलो और) को लक्षित करने वाले ऐप्स के लिए अनिवार्य हैं बाद में)।
लेकिन गैर-सैमसंग उपकरणों पर क्या होगा? ठीक है, क्योंकि सैमसंग गैलेक्सी ऐप्स गैर-सैमसंग डिवाइसों पर इंस्टॉल नहीं है, दुर्भावनापूर्ण एपीके पृष्ठभूमि में चुपचाप स्थापित नहीं किया जाएगा. Fortnite Installer एक तृतीय-पक्ष ऐप है और इसलिए इसे सक्षम करने के लिए पहले उपयोगकर्ता को संकेत देना होगा अज्ञात स्रोतों से इंस्टॉलेशन और फिर नकली इंस्टॉल करने के लिए पैकेज इंस्टॉलर को अनुरोध भेजें फ़ोर्टनाइट एपीके। यह तब उपयोगकर्ता पर निर्भर करेगा कि वह "इंस्टॉल करें" पर टैप करें जब उससे पूछा जाए कि वह ऐप इंस्टॉल करना चाहता है या नहीं। यह इस तथ्य के बावजूद समस्याग्रस्त है कि गैर-सैमसंग फोन में पृष्ठभूमि में चुपचाप किसी दुर्भावनापूर्ण ऐप के इंस्टॉल होने का खतरा नहीं है। यदि औसत उपयोगकर्ता के नाम में "Fortnite" लिखा हुआ एक दुर्भावनापूर्ण APK और Fortnite ऐप आइकन उन्हें इंस्टॉलेशन के लिए प्रस्तुत किया जाता है, तो औसत उपयोगकर्ता अधिक समझदार नहीं होगा।
फिर भी, सैमसंग गैलेक्सी स्मार्टफ़ोन और गैर-सैमसंग स्मार्टफ़ोन पर इस दोष का फायदा उठाने के बीच एक स्पष्ट अंतर है। पहला एक मैन-इन-द-डिस्क हमला है जो किसी भी ऐप को चुपचाप इंस्टॉल करने के लिए एक छिपे हुए सिस्टम एपीआई का भी लाभ उठाता है। पृष्ठभूमि, किसी भी अनुमति के साथ, और उपयोगकर्ता को यह सोचने की आवश्यकता नहीं है कि वे एक नकली Fortnite इंस्टॉल कर रहे हैं एपीके. उत्तरार्द्ध एक है मानक मैन-इन-द-डिस्क हमला जो अन्य ऐप्स पर भी हो सकता है जो बाह्य भंडारण निर्देशिकाओं में एपीके या अन्य महत्वपूर्ण डेटा को सहेजते हैं, जैसा कि हाल ही में दिखाया गया है चेकप्वाइंट डाक। ऐसा ही होता है कि, छिपे हुए गैलेक्सी ऐप्स एपीआई के लिए धन्यवाद, यह मैन-इन-द-डिस्क हमला सैमसंग गैलेक्सी उपकरणों पर अधिक खतरनाक है।
दोष को ठीक करना
एपिक गेम्स को श्रेय देने के लिए, उन्होंने Google इश्यू ट्रैकर की रिपोर्ट पर बहुत तेज़ी से प्रतिक्रिया दी और संस्करण 2.1.0 के लिए जितनी तेज़ी से संभव हो सके एक अपडेट जारी किया। समाधान सरल था—बस डाउनलोड किए गए Fortnite APK को Fortnite इंस्टालर की आंतरिक संग्रहण निर्देशिका में /data/data में सहेजें न कि इसके बाहरी संग्रहण निर्देशिका में /data/media में। एपिक गेम्स के इंजीनियर ने अनुरोध किया कि दोष का खुलासा 90 दिनों के बाद किया जाए, हालांकि Google ने इनकार कर दिया और समस्या को ठीक करने के 7 दिन बाद सार्वजनिक कर दिया। एपिक गेम्स के सीईओ टिम स्वीनी थे नहीं आरंभिक सुरक्षा रिपोर्ट से लेकर उसके प्रकटीकरण तक त्वरित बदलाव के समय से खुश हूं। उन्होंने निम्नलिखित कथन की पेशकश की एंड्रॉइड सेंट्रल.
एपिक ने हमारे तुरंत बाद Fortnite का गहन सुरक्षा ऑडिट करने के Google के प्रयास की वास्तव में सराहना की एंड्रॉइड पर जारी करें, और परिणामों को एपिक के साथ साझा करें ताकि हम उनकी खामियों को ठीक करने के लिए तेजी से अपडेट जारी कर सकें खोजा गया।
हालाँकि, इतनी जल्दी दोष के तकनीकी विवरण को सार्वजनिक रूप से प्रकट करना Google के लिए गैर-जिम्मेदाराना था, जबकि कई इंस्टॉलेशन अभी तक अपडेट नहीं किए गए थे और अभी भी असुरक्षित थे।
एक एपिक सुरक्षा इंजीनियर ने, मेरे आग्रह पर, Google से सामान्य 90 दिनों के लिए सार्वजनिक प्रकटीकरण में देरी करने का अनुरोध किया ताकि अपडेट को अधिक व्यापक रूप से इंस्टॉल करने के लिए समय मिल सके। गूगल ने मना कर दिया. आप यह सब यहां पढ़ सकते हैं https://issuetracker.google.com/issues/112630336
Google के सुरक्षा विश्लेषण प्रयासों की सराहना की जाती है और इससे Android प्लेटफ़ॉर्म को लाभ होता है, हालाँकि Google जैसी शक्तिशाली कंपनी को अधिक अभ्यास करना चाहिए इससे जिम्मेदार प्रकटीकरण का समय, और एपिक के फ़ोर्टनाइट के बाहर वितरण के खिलाफ इसके काउंटर-पीआर प्रयासों के दौरान उपयोगकर्ताओं को खतरे में नहीं डालना। गूगल प्ले।
मैं यह नहीं बता सकता कि कितने मौजूदा सैमसंग गैलेक्सी उपकरणों में अभी भी पुराना फ़ोर्टनाइट इंस्टालर है। शायद एपिक गेम्स को इन उपयोगकर्ताओं को फोर्टनाइट मोबाइल में एक संदेश भेजकर अपने इंस्टॉल को अपडेट करने के लिए कहना चाहिए। फायरबेस का नया इन-ऐप मैसेजिंग फीचर चाल चल सकता है. हालाँकि, यह संभवतः कोई बड़ी बात नहीं है, क्योंकि यदि पुराने इंस्टॉलर वाला उपयोगकर्ता पहले से ही वैध डाउनलोड कर चुका है Fortnite, तब कोई भी MITD हमला काम नहीं करेगा क्योंकि दुर्भावनापूर्ण APK मौजूदा Fortnite के शीर्ष पर स्थापित नहीं किया जा सकता है स्थापना. किसी भी मामले में, एंड्रॉइड पर Fortnite की रिलीज के बाद इतनी जल्दी इस दोष का पता चला - जब एपिक गेम्स के बारे में अभी भी इतना विवाद है।' Google Play को छोड़ने का निर्णय—निश्चित रूप से इस तर्क को मदद मिलती है कि एपिक गेम्स का निर्णय लापरवाही भरा था। इस मुद्दे को इतनी तेज़ी से प्रचारित करने के पीछे Google की मंशा क्या थी, हम कभी नहीं जान पाएंगे।