क्या आपने कभी सोचा है कि सुरक्षा कमजोरियाँ कैसे पाई जाती हैं? यूके स्थित फर्म ग्राफ़िक्सफ़ज़ ने बताया कि कैसे उन्हें सैमसंग गैलेक्सी S6 पर एक ग्राफ़िक्स ड्राइवर बग का पता चला, जिसका उपयोग वे Google Chrome में खुले टैब से डेटा देखने के लिए कर सकते थे।
मार्च के अंत में, GPU विश्वसनीयता के परीक्षण में विशेषज्ञता रखने वाली एक यू.के. आधारित स्टार्ट-अप फर्म ने हमसे संपर्क किया उन्होंने GPU बग खोजा जो इसका कारण बनता है क्वालकॉम स्नैपड्रैगन 845सैमसंग गैलेक्सी S9/S9+ किसी वेब पेज पर जाते समय रीबूट करना। फर्म को बुलाया गया ग्राफ़िक्सफ़ज़, ने इस मुद्दे की रिपोर्ट करने के लिए हमारे साथ काम किया क्वालकॉम और SAMSUNG. हमारे कुछ पाठक यह जानने में रुचि रखते थे कि कोई कंपनी कैसी होती है ग्राफ़िक्सफ़ज़ इन कमजोरियों को ढूंढने में सक्षम है, इसलिए हमने यह दिखाने के लिए कंपनी के साथ सहयोग किया कि उन्होंने पुरानी GPU भेद्यता की खोज कैसे की। पहले से ही पैच की गई इस भेद्यता ने एक हमलावर को इसकी सामग्री पर दूर से "जासूसी" करने की अनुमति दी गूगल क्रोम ब्राउज़र टैब पर सैमसंग गैलेक्सी S6.
यह उपयोगकर्ता दुर्भावनापूर्ण वेब पेज पर जाने से पहले अपने बैंक की वेबसाइट देख रहा था। सामग्री को कैप्चर किया गया और एक दूरस्थ सर्वर पर अपलोड किया गया। स्रोत: ग्राफ़िक्सफ़ज़.
ग्राफ़िक्सफ़ज़ जीपीयू बग्स का पता कैसे लगाता है
एक ग्राफ़िक्स ड्राइवर एक शेडर प्रोग्राम लेकर उसे निष्पादित करने के लिए GPU पर भेजकर काम करता है और इस प्रकार छवि को प्रस्तुत करता है। शेडर को GPU पर भेजने से पहले, ग्राफ़िक्स ड्राइवर इसे ऐसे रूप में अनुवादित करता है जिसे GPU समझ सके; दोषपूर्ण अनुवाद से रेंडरिंग विफलता, प्रोग्राम या डिवाइस क्रैश, गलत छवियां और यहां तक कि सुरक्षा समस्याएं भी हो सकती हैं। ग्राफ़िक्सफ़ज़ एक है स्वचालित परीक्षण सुइट जो उन्हें संदर्भ शेडर्स के सेट के आधार पर इन बगों को ढूंढने की अनुमति देता है। जब कोई उपयोगकर्ता उनका परीक्षण चलाता है, सभी परिणामी छवियां समान दिखनी चाहिए। कोई भी छवि जो अलग दिखती है इसका मतलब है कि उसमें कोई बग था।
ग्राफ़िक्सफ़ज़ परीक्षण सूट चलाने वाले कई लोकप्रिय उपकरणों के परिणाम। इन चार्ट में सैमसंग गैलेक्सी S6, सैमसंग गैलेक्सी S7 और सैमसंग गैलेक्सी S8 शामिल हैं। स्रोत: ग्राफ़िक्सफ़ज़.
सैमसंग गैलेक्सी S6 के लिए, ग्राफ़िक्सफ़ज़ पता चला कि पंक्तियों में से एक की छवियाँ वे छवियां दिखा रही थीं जो किसी अन्य तालिका में होनी चाहिए थीं। इसका मतलब यह है कि पहले के परीक्षणों की तस्वीरें बाद के परीक्षणों में लीक हो रही थीं। इसके बाद टीम ने Google Chrome में परीक्षण सूट को फिर से चलाया और पाया कि वेब पेज के कुछ हिस्से छवि में दिखाई दे रहे थे। इसके अलावा, उन्होंने पाया कि दूसरा टैब खोलने से छवि में अन्य टैब के हिस्से दिखाई देने लगे। अनिवार्य रूप से, इस बग ने एक Google Chrome टैब को दूसरे Chrome टैब के बारे में जानकारी लीक करने की अनुमति दी! पीछे टीम ग्राफ़िक्सफ़ज़ जानबूझकर सुरक्षा बग की तलाश नहीं की जा रही थी, लेकिन परीक्षण के परिणामस्वरूप उन्हें एक बग मिल ही गया। (यह ध्यान दिया जाना चाहिए कि टीम ने गैलेक्सी एस6 के साथ-साथ स्टॉक सैमसंग ब्राउज़र पर भी बग को पुन: उत्पन्न किया मोज़िला फ़ायरफ़ॉक्स.)
बग कैसे काम करता है
सैमसंग गैलेक्सी S6 पर लंबे समय से चल रहे बग को ट्रिगर करने के लिए छवि का उपयोग किया गया। स्रोत: ग्राफ़िक्सफ़ज़.
द्वारा बनाया गया "दुर्भावनापूर्ण" वेब पेज ग्राफ़िक्सफ़ज़ जैसा कि ऊपर दिखाया गया है, कैनवास के अंदर एक अंतरिक्ष दृश्य खींचने का प्रयास करने के लिए WebGL का उपयोग करता है। प्रत्येक पिक्सेल का रंग एक फ्रैगमेंट शेडर द्वारा निर्धारित किया जाता है, जो GPU पर निष्पादित करने के लिए वेब पेज द्वारा प्रदान किया गया एक प्रोग्राम है। ग्राफ़िक्सफ़ज़ फ्रेमवर्क ने फ्रैगमेंट शेडर को संशोधित किया जिसके कारण यह वास्तव में लंबे समय तक चलता रहा। जब कोई शेडर बहुत लंबे समय तक चलता है, तो ब्राउज़र या ऑपरेटिंग सिस्टम आमतौर पर रेंडरिंग बंद कर देता है। हालाँकि, जब GPU ने कुछ पिक्सेल खींचने के बाद रेंडरिंग बंद कर दी, तो GPU ड्राइवर ने Google Chrome को इसकी सूचना नहीं दी। (यदि आप लेख के शीर्ष पर कचरा वीडियो मेमोरी दिखाने वाली छवि पर एक नज़र डालते हैं, तो आप वास्तव में शीर्ष पर अंतरिक्ष दृश्य के कुछ हिस्सों को देख सकते हैं बाएं।) इसका मतलब है कि जो पिक्सेल निरस्त होने से पहले रेंडर किए गए थे उन्हें अछूता छोड़ दिया गया है, जिसका अर्थ है कि अंतिम रेंडर की गई छवि ज्यादातर कचरा वीडियो है याद। चूंकि वीडियो मेमोरी का उपयोग अन्य वेब पेजों को रेंडर करने के लिए लगातार किया जाता है, "कचरा" डेटा में वास्तव में अन्य वेब पेजों के पिछले रेंडरिंग शामिल होते हैं। इस प्रकार, अन्य वेब पेज अंततः "दुर्भावनापूर्ण" वेब पेज पर प्रदर्शित होते हैं। महत्वपूर्ण रूप से, WebGL वेब पेज को जो कुछ भी प्रस्तुत किया जा रहा है उसकी सामग्री को कैप्चर करने की अनुमति देता है; फिर यह छवि एक दूरस्थ सर्वर पर अपलोड की जाती है।
लंबे समय से चल रहे जीपीयू बग के कारण क्रोम टैब डेटा "लीक" होने की व्याख्या करने वाला आरेख। स्रोत: ग्राफ़िक्सफ़ज़.
Google Chrome कई प्रक्रियाओं का उपयोग करता है इसलिए अलग-अलग टैब अक्सर अलग-थलग हो जाते हैं, जिससे सतह पर यह शोषण असंभव लगता है। हालाँकि, Chrome एकल "GPU प्रक्रिया" का उपयोग करके GPU के साथ इंटरैक्ट करता है, जिसका अर्थ है कि सभी टैब समान GPU मेमोरी साझा करते हैं, इस प्रकार इस शोषण को काम करने की अनुमति मिलती है। ऊपर दिया गया चित्र इसे और अधिक विस्तार से दिखाता है।
इस वीडियो में पहले 22 सेकंड के दौरान बग का प्रदर्शन किया गया है। ग्राफ़िक्सफ़ज़ द्वारा पाए गए अन्य सुरक्षा मुद्दों को भी प्रदर्शित किया गया है।
सबक सीखा जाना चाहिए
एक दुर्व्यवहार करने वाला GPU Google Chrome और Android के सभी सुरक्षा उपायों को दरकिनार कर सकता है क्योंकि WebGL किसी भी दुर्भावनापूर्ण वेब पेज को निष्पादन के लिए GPU पर कोड भेजने की अनुमति देता है। Google GPU बग ठीक नहीं कर सकता चूंकि कंपनी हार्डवेयर और ड्राइवरों को नियंत्रित नहीं करती है। इस मामले में, बग को ठीक करना GPU विक्रेता (इस मामले में, ARM) पर निर्भर है और OEM जिनके डिवाइस प्रभावित हैं (इस मामले में, सैमसंग) पर निर्भर है कि वे अपडेट में फिक्स को एकीकृत करें। मिश्रण में वाहक जोड़ें और यह देखना आसान है कि इस तरह की बग को ठीक करने में वास्तव में कितना लंबा समय लग सकता है - इसमें लग गया कम से कम 5 महीने अधिकांश सैमसंग गैलेक्सी S6 उपयोगकर्ताओं के लिए पैच प्राप्त करना।
ग्राफ़िक्सफ़ज़ जीपीयू विक्रेताओं को मुश्किल से पहचाने जाने वाले बग ढूंढने में मदद मिलती है जैसे गलत संकलन बग जो जीपीयू पर गलत कोड उत्पन्न और निष्पादित करने का कारण बनते हैं। उनका स्वचालित परीक्षण ढांचा उन्हें बग ढूंढने की अनुमति देता है जैसे कि इस लेख में दिखाया गया है। "दुर्भावनापूर्ण" वेब पेज के कारण लंबे समय तक चलने वाले लूप को अन्य उपकरणों जैसे कि समस्याओं का कारण बनता दिखाया गया है एचटीसी वन M7 और हाल ही में सैमसंग गैलेक्सी S9. ग्राफ़िक्सफ़ज़ फ्लैगशिप स्मार्टफ़ोन का परीक्षण करता है और प्रकाशित करता है परिणाम तालिका जो इन उपकरणों को उनके परीक्षणों के सबसेट पर उनके प्रदर्शन के आधार पर रैंक करता है। सैकड़ों क्रैश और रेंडरिंग त्रुटियाँ उनके परीक्षण के दौरान पाए गए हैं, लेकिन अधिकांश की जांच यह देखने के लिए नहीं की जाती है कि क्या वे सुरक्षा के लिए ख़तरा हैं। हालाँकि, जैसा कि इस शोषण से पता चलता है, एक दुर्व्यवहार करने वाला GPU एक सुरक्षा जोखिम है, और यह संभव है कि एक या अधिक महत्वपूर्ण सुरक्षा कमजोरियाँ खोजी जाने की प्रतीक्षा कर रही हैं। ग्राफ़िक्सफ़ज़ आशा है कि GPU विक्रेता भविष्य में ड्राइवर गुणवत्ता में सुधार को प्राथमिकता देंगे।
ग्राफ़िक्स ड्राइवरों की तुलनात्मक विश्वसनीयता, कुल मुद्दों की संख्या के आधार पर क्रमबद्ध। स्रोत: ग्राफ़िक्सफ़ज़.
प्रकटीकरण समयरेखा
- दिसंबर 2016 में, ग्राफ़िक्सफ़ज़ को बग की सूचना दी Google क्रोमियम बग ट्रैकर क्योंकि यह क्रोम रिवॉर्ड प्रोग्राम के लिए योग्य था। ग्राफ़िक्सफ़ज़ द्वारा बग को Google क्रोमियम बग ट्रैकर में सबमिट करने के बाद, बग को Google द्वारा स्वीकार कर लिया गया और इसे पैचिंग के लिए ARM और सैमसंग को भेज दिया गया।
- गूगल रिपोर्ट आगे बढ़ा दी एआरएम और सैमसंग के संपर्कों के लिए।
- सैमसंग ने चुपचाप बग को पैच किया और 2017 के मार्च और जून के बीच जारी किए गए एंड्रॉइड 7.0 नूगट अपडेट में इसे ठीक कर दिया। हालाँकि सैमसंग, गूगल या एआरएम द्वारा कोई सीवीई नहीं बनाया गया था और न ही सैमसंग और न ही एआरएम ने पैच पर कोई जानकारी जारी की थी, ध्यान दें ग्राफ़िक्सफ़ज़ के माध्यम से बग की रिपोर्ट नहीं की उचित प्रक्रिया.
- बाद में, ग्राफ़िक्सफ़ज़ यह पुष्टि करने में सक्षम था कि सैमसंग और एआरएम दोनों ने रिपोर्ट देखी थी, और एआरएम रिपोर्ट के कारण समस्या को ठीक करने में सक्षम था।
- अगस्त 2017 में, ग्राफ़िक्सफ़ज़ बग रिपोर्ट के लिए Google द्वारा $2,000 का पुरस्कार दिया गया।
- नवंबर 2017 में, बग रिपोर्ट सार्वजनिक कर दी गई.