Android के लिए Google Chrome: UXSS भेद्यता और क्रेडेंशियल प्रकटीकरण

तो चलिए शुरू करते हैं। जुलाई 2011 में, आईबीएम रिसर्च ग्रुप के रोए हेय और यैर अमित ने डिफ़ॉल्ट एंड्रॉइड ब्राउज़र में यूएक्सएसएस भेद्यता की खोज की। यह त्रुटि एक दुर्भावनापूर्ण एप्लिकेशन को एक अनियंत्रित डोमेन के संदर्भ में जावास्क्रिप्ट कोड को इंजेक्ट करने और कुकीज़ पर कब्जा करने या अन्य दुर्भावनापूर्ण कार्यों को करने की अनुमति देती है। यह भेद्यता Android संस्करण 2.3.5 में तय की गई थी।

21 जून 2012 को, Google Chrome Android के लिए जारी किया गया था। मुझे इसमें बहुत दिलचस्प त्रुटियाँ मिल सकती हैं। अपने लिए देख लो।

UXSS भेद्यता


जैसा कि अपेक्षित था, यह भेद्यता "मुख्य" क्रोम गतिविधि को प्रभावित नहीं करती है। हालाँकि, Chrome.apk से AndroidManifest.xml फ़ाइल देखें।



जाहिर है, यदि <आशय-फ़िल्टर> निर्देश इसमें घोषित किया गया है, तो com.google.android.apps.chrome.SimpleChromeActivity वर्ग को किसी अन्य एप्लिकेशन से कॉल किया जा सकता है।

Decompile classes.dex को एपीके से और SimpleChromeActivity क्लास पर एक नज़र डालें।



ऊपर प्रस्तुत ऑनक्रिट विधि में, आप देखेंगे कि नया URL वर्तमान में लोड किया जाएगा, न कि नया टैब।

इस गतिविधि को ट्रिगर करने के दो तरीके हैं: Android API या गतिविधि प्रबंधक के माध्यम से। Android API से कॉल थोड़ा जटिल है, इसलिए मैंने adb शेल से "am" कमांड का उपयोग किया।

shell@android:/ $ am start -n com.android.chrome/com.google.android.apps.chrome.SimpleChromeActivity -d 'http://www.google.ru' 




मुझे ऐसा लगता है कि सामग्री प्रदर्शित करने के साथ यह समस्या सुरक्षा से संबंधित नहीं है। शीर्षक से देखते हुए, Chrome ने www.google.com को Main के बजाय SimpleChromeActivity पर अपलोड किया और इस गतिविधि की पहुंच Chrome में कुकीज़ डेटाबेस तक है। अगला चरण जावास्क्रिप्ट कोड का कार्यान्वयन होगा।

 shell@android:/ $ am start -n com.android.chrome/com.google.android.apps.chrome.SimpleChromeActivity -d 'javascript:alert(document.cookie)' 




यह सब, जावास्क्रिप्ट www.google.com डोमेन के संदर्भ में निष्पादित किया गया था।

क्रेडेंशियल प्रकटीकरण


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



केवल क्रोम ऐप ही इन फ़ाइलों (जैसे कुकीज़, इतिहास, आदि) को पढ़ सकता है। यह सुरक्षित दिखता है। फ़ाइल का उपयोग करके Chrome लॉन्च करने का प्रयास करें: // आवरण और कुकी खोलना।

 shell@android:/ $ am start -n com.android.chrome/com.android.chrome.Main -d 'file:///data/data/com.android.chrome/app_chrome/Default/Cookies' 




ब्राउज़र को लॉन्च करने के बाद, कुकीज़ को /sdcard/Downloads/Cookies.bin पर डाउनलोड / कॉपी किया जाएगा , और सिस्टम में कोई भी एप्लिकेशन उन्हें पढ़ने में सक्षम होगा।

मैंने क्रोमियम सुरक्षा टीम को विस्तृत जानकारी प्रदान की, और ये त्रुटियां 18.0.1025308 संस्करण में तय की गईं।

संदर्भ:
http://code.google.com/p/chromium/issues/detail?id=138035
http://code.google.com/p/chromium/issues/detail?id=138210

लेखक: आर्टेम चैकिन ( आर्टेमचायकिन )।

Source: https://habr.com/ru/post/In158485/


All Articles