स्ट्रैंडहॉग 2.0 एक्सप्लॉइट की व्याख्या

स्ट्रैंडहॉग 2.0 एक खतरनाक नई एंड्रॉइड भेद्यता है। यहां बताया गया है कि यह उपयोगकर्ताओं को कैसे प्रभावित कर सकता है और डेवलपर्स अपने ऐप्स को इससे कैसे सुरक्षित रख सकते हैं।

रात के 10:00 बजे हैं. क्या आप जानते हैं कि आपकी गतिविधियाँ कहाँ हैं? एक नई भेद्यता है जिसका फायदा लाखों एंड्रॉइड डिवाइसों पर उठाया जा सकता है, और यह काफी ख़राब भी है। संक्षेप में, यह डिज़ाइन दोष एक हमलावर को किसी अन्य ऐप के शीर्ष पर अपनी गतिविधि (पेज) प्रस्तुत करने की अनुमति देता है, जो संभावित रूप से उपयोगकर्ता को अपना निजी डेटा देने में भ्रमित करता है। भेद्यता को स्ट्रैंडहॉग 2.0 करार दिया गया है और हाल ही में इसका खुलासा किया गया था प्रोमोन, एक नॉर्वेजियन सुरक्षा फर्म।

स्ट्रैंडहॉग 2.0 भेद्यता सैद्धांतिक रूप से हनीकॉम्ब (3.0) और एंड्रॉइड 9 पाई (9.0) तक पुराने एंड्रॉइड संस्करणों पर चलने वाले सभी एंड्रॉइड डिवाइसों को प्रभावित करती है। पर आधारित नवीनतम Android संस्करण वितरण आँकड़े, इसका मतलब है कि सभी एंड्रॉइड डिवाइसों में से लगभग 91.8% स्ट्रैंडहॉग 2.0 के प्रति संवेदनशील हैं. भेद्यता असाइन की गई थी सीवीई-2020-0096 और एक दिया गया

गंभीरता का स्तर "गंभीर" है। इसे काम करने के लिए किसी विशेष अनुमति की आवश्यकता नहीं है और यह उपयोगकर्ता की सहभागिता के बिना लगभग पूरी तरह से काम कर सकता है। उपयोगकर्ता को बस एक ऐप खोलना है जिसमें दुर्भावनापूर्ण कोड छिपा हुआ है, और फिर वे शोषण के प्रति संवेदनशील होंगे।

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


यह काम किस प्रकार करता है

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

हमें यहां कुछ विवरण छोड़ना होगा, लेकिन यहां मोटे तौर पर बताया गया है कि यह शोषण कैसे काम करता है। निम्नलिखित के लिए, मान लें कि हमलावर उपयोगकर्ता का जीमेल लॉगिन प्राप्त करना चाहता है।

  1. उपयोगकर्ता एक दुर्भावनापूर्ण ऐप डाउनलोड करता है (बेशक, यह जाने बिना कि यह दुर्भावनापूर्ण है) और उसे खोलता है।
  2. पृष्ठभूमि में, ऐप जीमेल खोलता है, उसके ऊपर एक समान दिखने वाली लॉगिन गतिविधि डालता है, और फिर दूसरी गतिविधि लॉन्च करता है।
  3. उपयोगकर्ता जीमेल खोलता है और देखता है कि जीमेल की लॉगिन स्क्रीन कैसी दिखती है लेकिन वास्तव में यह हमलावर की फ़िशिंग गतिविधि है।

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

स्रोत: प्रोमोन

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


तकनीकी बिट्स

यह अगला भाग एक उच्च-स्तरीय अवलोकन है कि स्ट्रैंडहॉग 2.0 कैसे काम करता है। प्रोमोन अगले कुछ महीनों तक पूर्ण विवरण जारी नहीं करेगा, इसलिए हम यह साझा नहीं कर सकते कि यह शोषण कैसे कार्यान्वित किया जाता है। हालाँकि, कुछ तकनीकी विवरण हैं जिनके बारे में हम बात कर सकते हैं।

संक्षेप में, स्ट्रैंडहॉग 2.0 एंड्रॉइड को हाईजैक कर लेता है Context.startActivities() तीन इरादों का उपयोग करते हुए एपीआई विधि।

  • पहला इरादा वह है जो हमारे उदाहरण के मामले में, जीमेल लॉन्च करता है। इसके साथ ध्वजांकित किया गया है Intent.FLAG_ACTIVITY_NEW_TASK.
  • दूसरा इरादा दुर्भावनापूर्ण है. हमारे उदाहरण में, यह समान दिखने वाली लॉगिन गतिविधि के लिए है। इस आशय का कोई झंडा नहीं है.
  • तीसरा उद्देश्य ध्यान भटकाना है। यह सुनिश्चित करता है कि उपयोगकर्ता को उनके द्वारा टैप किए गए ऐप (यानी हमला शुरू करने वाले) के बजाय जीमेल के बेतरतीब ढंग से खुलने पर संदेह नहीं है। इसके साथ ध्वजांकित किया गया है Intent.FLAG_ACTIVITY_NEW_TASK.

फिर इन सभी इरादों को एक सरणी में पास कर दिया जाता है startActivities() तरीका।

दूसरे आशय की झंडों की कमी यहाँ महत्वपूर्ण है। ऐसा करके, हमने मूल रूप से ऊपर दिए गए जीमेल उदाहरण को दोहराया है। कार्य तकनीकी रूप से जीमेल का है, लेकिन सर्वोच्च गतिविधि हमलावर की है। जब उपयोगकर्ता जीमेल के होम स्क्रीन आइकन पर क्लिक करता है, तो जीमेल की बजाय हमलावर की गतिविधि प्रदर्शित होती है।


अवधारणा का सबूत

प्रोमोन ने हमें जो जानकारी भेजी, उससे हम उनकी अवधारणा के प्रमाण को दोहराने में सक्षम हुए। यहां एंड्रॉइड 9 पाई पर चलने वाले सैमसंग गैलेक्सी नोट 8 की एक स्क्रीन रिकॉर्डिंग है जो इसे क्रियाशील दिखाती है।


शमन तकनीक और मुद्दे

अब, उपरोक्त को कोड में दोहराने से वास्तव में काम नहीं चलेगा। यह एक पूर्ण उदाहरण नहीं है, और कुछ अन्य चीजें हैं जो एक हमलावर को इसे काम करने के लिए करनी होती हैं, जिन्हें हम साझा नहीं कर सकते। लेकिन स्वयं उनका अनुमान लगाना विशेष रूप से कठिन नहीं है, और यही इस हमले को इतना खतरनाक बनाता है। स्ट्रैंडहॉग 2.0 को लागू करना अपेक्षाकृत आसान है और इसे कम करना कठिन है।

शमन में केवल उपयोग करने वाले सभी ऐप्स को ब्लैकलिस्ट करना शामिल नहीं हो सकता है startActivities(), क्योंकि इसके बहुत सारे वैध उपयोग हैं। इसके लिए डिटेक्शन एल्गोरिदम को स्वचालित करना भी वास्तव में कठिन है। दुर्भावनापूर्ण डेवलपर्स स्ट्रैंडहॉग 2.0 के कार्यान्वयन को Google Play प्रोटेक्ट जैसी सेवाओं के लिए प्रभावी रूप से अदृश्य बनाने के लिए सभी प्रकार की तरकीबें अपना सकते हैं। स्ट्रैंडहॉग 1.0 के लिए हमलावर को दुर्भावनापूर्ण ऐप के AndroidManifest.xml में एक विशेषता जोड़ने की आवश्यकता थी, जिसका पता लगाना अपेक्षाकृत आसान था। दूसरी ओर, स्ट्रैंडहॉग 2.0 पूरी तरह से जावा/कोटलिन में कार्य करता है।

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

जब हमने प्रतिक्रिया के लिए Google से संपर्क किया, तो एक प्रवक्ता ने निम्नलिखित बयान दिया:

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

यह अच्छा लगता है, और उम्मीद है कि स्ट्रैंडहॉग 2.0 हमलों के खिलाफ इसका कम से कम कुछ प्रभाव होगा। हालाँकि, यह ध्यान देने योग्य है कि Google Play प्रोटेक्ट नहीं किया मैन्युअल स्कैन करने के बाद भी हमारे प्रूफ़ ऑफ़ कॉन्सेप्ट ऐप को दुर्भावनापूर्ण के रूप में पहचानें।

प्रोमोन का कहना है कि वे "स्ट्रैंडहॉग 2.0 भेद्यता का उपयोग करते हुए किसी भी वास्तविक जीवन मैलवेयर को नहीं देखा है," लेकिन इसकी कोई गारंटी नहीं है कि यह पहली बार है कि शोषण का पता चला है। इसी कारण से, प्रोमोन अनुशंसा करता है कि डेवलपर्स आगे बढ़ें और अपनी लॉन्चर गतिविधि सेट करके अपने ऐप्स की सुरक्षा करें launchMode किसी एक को ध्वजांकित करें singleTask या singleInstance. इनमें से कोई भी ध्वज कार्य इंजेक्शन को रोक देगा, जिस पर स्ट्रैंडहॉग 2.0 निर्भर करता है। हालाँकि, आपकी गतिविधि में इन झंडों में से किसी एक का उपयोग करने से कुछ ऐप प्रवाह के साथ समस्याएँ पैदा हो सकती हैं, इसलिए यह हमेशा वांछनीय नहीं है।

प्रोमोन अपने स्वयं के "इन-ऐप प्रोटेक्शन बाय प्रोमोन शील्ड" उत्पाद का भी प्रचार कर रहा है जो एक लाइब्रेरी की तरह लगता है जिसे ऐप डेवलपर आपके ऐप की प्रक्रिया में अनियमित कार्यों की जांच करने के लिए कार्यों की निगरानी के लिए लागू कर सकते हैं सम्मिलन. चूँकि वास्तव में कोई प्रभावी डेवलपर या उपयोगकर्ता शमन रणनीति नहीं है, इसलिए यह बहुत महत्वपूर्ण है कि निर्माता इस ASAP को ठीक करने के लिए पैच लागू करें।

शुक्र है, प्रोमोन ने इस शोषण को सार्वजनिक करने से पहले जिम्मेदार प्रकटीकरण दिशानिर्देशों का पालन किया (और)। यह अभी भी पूरी तरह से सार्वजनिक नहीं है—प्रोमॉन स्ट्रैंडहॉग 2.0 के बारे में पूरी तरह से खुलासा करने से पहले 90 दिनों का इंतजार कर रहा है काम करता है)। तब से Google ने इस सुविधा के लिए Android 8.0 Oreo, Android 8.1 Oreo और Android 9 Pie पर पैच को बैकपोर्ट कर दिया है। मई 2020 एंड्रॉइड सुरक्षा पैच स्तर (एसपीएल). एंड्रॉइड 10 और उससे ऊपर के उपयोगकर्ता असुरक्षित नहीं हैं, हालांकि हम पूरी तरह से निश्चित नहीं हैं कि ऐसा क्यों है। इसका संभवतः गतिविधियों को लॉन्च करने से संबंधित एंड्रॉइड 10 के नए प्रतिबंधों से कुछ लेना-देना है और Google ने इसे कार्य स्टैक में कैसे एकीकृत किया है। प्रोमोन का कहना है कि "एंड्रॉइड 10 पर हमला पूरी तरह से अप्रभावी है, और गतिविधियों को अलग-अलग कार्यों में और अलग-अलग कार्य स्टैक में विभाजित किया गया है adb shell dumpsys activity activities."

यदि आपका डिवाइस निर्माता अभी भी सुरक्षा अपडेट प्रदान कर रहा है (आप इसके बारे में अधिक पढ़ सकते हैं यहां सुरक्षा पैच प्रक्रिया कैसे काम करती है), आपको उन्हें यथाशीघ्र अपडेट के लिए प्रेरित करना चाहिए। अन्यथा, आपको बस इस बात से सावधान रहना होगा कि आप कौन से ऐप्स डाउनलोड करते हैं और चलाते हैं (हालाँकि आपको वैसे भी ऐसा करना चाहिए)।

स्ट्रैंडहॉग 2.0 के अधिक विवरण और उपयोग-मामलों के लिए, देखें प्रोमोन की वेबसाइट पर आधिकारिक घोषणा. कस्टम ROM डेवलपर्स के लिए, आप स्ट्रैंडहॉग 2.0 हमलों को रोकने के लिए प्रासंगिक AOSP कमिट पा सकते हैं यहाँ और यहाँ.


प्रकटीकरण समयरेखा

यहां वह प्रकटीकरण समयरेखा है जिसे प्रोमोन ने अपने स्टैंडहॉग 2.0 दस्तावेज़ में साझा किया है:

  • 4 दिसंबर 2019 - Google को समस्या की सूचना दी गई
  • 4 दिसंबर 2019 - Google के साथ एक PoC "दुर्भावनापूर्ण ऐप" और वीडियो साझा किया
  • 4 दिसंबर 2019 - गूगल ने रिपोर्ट मिलने की पुष्टि की
  • 9 दिसंबर 2019 - Google ने खोज की गंभीरता को "महत्वपूर्ण" के रूप में निर्धारित किया है
  • 9 दिसंबर 2019 - Google पुष्टि करता है कि वे समस्या को पुन: उत्पन्न करने में सक्षम हैं
  • 14 फरवरी 2020 - हम मार्च की शुरुआत में Google को सूचित करते हैं कि 90-दिवसीय प्रकटीकरण समाप्त होने वाला है, और उनकी ओर से स्थिति पूछते हैं
  • 14 फरवरी 2020 - गूगल ने जवाब दिया कि अप्रैल जल्द से जल्द वह समाधान पेश कर सकता है
  • 14 फरवरी 2020 - हम Google को सूचित करते हैं कि हम शमन पर काम कर रहे हैं
  • 14 फरवरी 2020 - गूगल जवाब देता है। वे सुधारों पर काम कर रहे हैं, और पूछते हैं कि क्या हम साझा कर सकते हैं कि हम किन उपायों की सिफारिश कर रहे हैं
  • फ़रवरी 17, 2020 - हम Google को सूचित करते हैं कि हम प्रकटीकरण को अप्रैल तक रोक सकते हैं। हम सीवीई नंबर का अनुरोध करते हैं
  • फ़रवरी 17, 2020 - हम अपनी शमन रणनीतियों को साझा करते हैं, साथ ही हम एक मंच शमन की परिकल्पना कैसे करते हैं
  • मार्च 23, 2020 - Google CVE ID (CVE-2020-0096) के साथ प्रतिक्रिया देता है
  • मार्च 23, 2020 - गूगल ने जवाब दिया कि एंड्रॉइड के लिए फिक्स की सामान्य उपलब्धता मई में उपलब्ध होगी
  • मार्च 23, 2020 - Google पूछता है कि क्या हम मई तक प्रकटीकरण में देरी करने पर विचार करेंगे
  • 27 मार्च 2020 - हमारा जवाब है कि हम खुलासा मई तक टाल देंगे
  • 22 अप्रैल, 2020 - Google ने हमें सूचित किया है कि मई सुरक्षा बुलेटिन में भेद्यता के लिए एक पैच शामिल होना निर्धारित है