OWASP कैटगरी: MASVS-PLATFORM: प्लैटफ़ॉर्म इंटरैक्शन
खास जानकारी
StrandHogg अटैक / टास्क अफ़िनिटी की समस्या, डिज़ाइन में मौजूद गड़बड़ी की वजह से चालू हुई थी. यह गड़बड़ी, Android के कई टास्क मैनेज करने के तरीके से जुड़ी थी. खास तौर पर, टास्क को फिर से पैरंट के तौर पर सेट करने की सुविधा से जुड़ी थी. ऐप्लिकेशन टास्क को फिर से पैरंट करने की सुविधा की मदद से, ऐप्लिकेशन किसी ऐक्टिविटी को एक टास्क से दूसरे टास्क में ले जा सकता है.
StrandHogg अटैक, आने वाले ऐप्लिकेशन टास्क स्टैक गतिविधियों की जांच करने के तरीके के बारे में साफ़ तौर पर जानकारी न होने का फ़ायदा उठाता है. साथ ही, नुकसान पहुंचाने वाले ऐप्लिकेशन को इनमें से कोई एक काम करने की अनुमति देता है:
- किसी नुकसान पहुंचाने वाली गतिविधि को, पीड़ित स्टैक में या उससे बाहर ले जाना
- पीड़ित की गतिविधि पूरी होने पर, नुकसान पहुंचाने वाली गतिविधि को रिटर्न स्टैक के तौर पर सेट करना
allowTaskReparenting
और
taskAffinity
सेटिंग में बदलाव करके, इस जोखिम का फ़ायदा उठाया जाता है.
असर
नुकसान पहुंचाने वाला कोई ऐप्लिकेशन, अपनी किसी गतिविधि के taskAffinity को सेट करके, टारगेट किए गए ऐप्लिकेशन के packageName से मैच कर सकता है. इसके बाद, इसे इंटेंट हाइजैकिंग के साथ जोड़ा जा सकता है, ताकि अगली बार जब उपयोगकर्ता टारगेट ऐप्लिकेशन को लॉन्च करे, तो दुर्भावनापूर्ण ऐप्लिकेशन भी लॉन्च हो जाए और टारगेट ऐप्लिकेशन के ऊपर दिखे.
इसके बाद, टास्क अफ़िनिटी की कमजोरी का इस्तेमाल, उपयोगकर्ता की सही कार्रवाइयों को हाइजैक करने के लिए किया जा सकता है.
उपयोगकर्ता को धोखा देकर, नुकसान पहुंचाने वाले ऐप्लिकेशन को क्रेडेंशियल दिए जा सकते हैं. डिफ़ॉल्ट रूप से, जब कोई गतिविधि शुरू होती है और किसी टास्क से जुड़ी होती है, तो वह गतिविधि के पूरे लाइफ़साइकल के लिए जुड़ी रहती है. हालांकि, allowTaskReparenting को 'सही है' पर सेट करने से, यह पाबंदी हट जाती है. इससे किसी मौजूदा गतिविधि को, नए बनाए गए "नेटिव" टास्क के पैरंट के तौर पर फिर से जोड़ा जा सकता है.
उदाहरण के लिए, ऐप्लिकेशन B, ऐप्लिकेशन A को टारगेट कर सकता है. इसके बाद, ऐप्लिकेशन A की पूरी हो चुकी ऐक्टिविटी से वापस आने पर, ऐप्लिकेशन A की गतिविधियों को ऐप्लिकेशन B के ऐक्टिविटी स्टैक पर रीडायरेक्ट कर सकता है. एक ऐप्लिकेशन से दूसरे ऐप्लिकेशन पर स्विच करने की यह प्रोसेस, उपयोगकर्ता से छिपी रहती है. इससे फ़िशिंग का खतरा बढ़ जाता है.
जोखिम कम करने के तरीके
android:minSdkVersion="30"
पर अपडेट करें.
StrandHogg अटैक / टास्क अफ़िनिटी से जुड़ी समस्या को मूल रूप से मार्च 2019 में ठीक किया गया था. इसके बाद, सितंबर 2020 में इस समस्या के नए और ज़्यादा बेहतर वर्शन को ठीक किया गया. Android SDK टूल के 30 और उसके बाद के वर्शन (Android 11) में, इस जोखिम से बचने के लिए ओएस के सही पैच शामिल हैं. अलग-अलग ऐप्लिकेशन कॉन्फ़िगरेशन की मदद से, StrandHogg हमले के पहले वर्शन को कुछ हद तक कम किया जा सकता है. हालांकि, हमले के दूसरे वर्शन को सिर्फ़ SDK टूल के इस वर्शन के पैच से रोका जा सकता है.
संसाधन
- Usenix15 में, जोखिम की जानकारी देने वाला मूल अकादमिक पेपर{.external}
- Promon Security group's expansion of the original vulnerability{.external}
- android:allowTaskReparenting के लिए Android डेवलपर दस्तावेज़
- android:taskAffinity के लिए Android डेवलपर दस्तावेज़
- android:allowTaskReparenting एलिमेंट के ऐप्लिकेशन एलिमेंट के लिए Android डेवलपर दस्तावेज़