क्या रास्पबेरी पाई स्पेक्टर या मेल्टडाउन शोषण के लिए असुरक्षित है?


58

दो नई गंभीर सुरक्षा खामियां हैं, स्पेक्टर और मेल्टडाउन

क्या रास्पबेरी पाई स्पेक्टर और / या मेल्टडाउन के लिए असुरक्षित है?


1
शोधकर्ताओं के अनुसार: फिलहाल यह स्पष्ट नहीं है कि एआरएम और एएमडी प्रोसेसर भी मेल्टडाउन से प्रभावित हैं या नहीं।
जंघो

1
एक उदाहरण है कि आप ब्राउज़र (क्रोम / फ़ायरफ़ॉक्स) में जावास्क्रिप्ट के साथ पासवर्ड चुरा सकते हैं।
जांघो

4
@ alex2003super: बाहर बेकार मत करो। हालांकि प्रभावित उपकरणों का पैमाना चौंका देने वाला है, लेकिन वास्तव में इस मुद्दे से प्रभावित होने की संभावनाएं बहुत कम हैं। और यहां तक ​​कि अगर वे नहीं थे, तो बाहर निकलना मदद नहीं करेगा। :)
मोनिका

1
ऐसा लगता है कि वे कमजोर नहीं हैं, यहाँ विषय raspberrypi.org/blog/…
उमर इलाबद

5
आपको यह पोस्ट रोचक लग सकती है: raspberrypi.org/blog/…
pfm

जवाबों:


61

एआरएम के अनुसार , पीआई 4 से पहले सभी मॉडलों में उपयोग किए जाने वाले प्रोसेसर कोर कमजोर नहीं होते हैं ।

अधिकांश आर्म प्रोसेसर इस साइड-चैनल अटकल तंत्र के किसी भी रूपांतर से प्रभावित नहीं होते हैं। अतिसंवेदनशील हैं आर्म-डिज़ाइन किए गए प्रोसेसर के छोटे सबसेट की एक निश्चित सूची नीचे पाई जा सकती है। [तालिका के लिए लिंक देखें]

पुराने पीएस द्वारा उपयोग किए जाने वाले प्रोसेसर कोर हैं:

उपरोक्त कोर में से कोई भी हमले के किसी भी संस्करण के लिए कमजोर के रूप में सूचीबद्ध नहीं है (वे वास्तव में सूचीबद्ध नहीं हैं, क्योंकि इन हमलों के लिए कोई ज्ञात भेद्यता नहीं है)।

रास्पबेरी Pi 4 का उपयोग करता है कॉर्टेक्स- A72 है, जो कमजोर रूप में सूचीबद्ध है और 4. वेरिएंट 1, 2, 3 ए के रूप में में कहा गया है रास्पबेरी पाई 4 स्पेक्टर कारनामे की चपेट में है? , रास्पियन में इन कमजोरियों के लिए सॉफ्टवेयर शमन हैं, इसलिए शोषण का जोखिम कम होना चाहिए। अन्य ऑपरेटिंग सिस्टम में उपयुक्त शमन नहीं हो सकता है, और जब एआरएम का कहना है कि कॉर्टेक्स-ए 72 के लिए एक हार्डवेयर शमन जारी किया गया है, यह स्पष्ट नहीं है कि क्या यह पीआई 4 पर लागू किया गया है।

ध्यान दें कि वेरिएंट 1 और 2 (CVE-2017-5753 और CVE-2017-5715) स्पेक्टर के रूप में जाने जाते हैं , और वेरिएंट 3 (CVE-2017-5754) और 3a (एआरएम द्वारा संबंधित एक संबंधित हमले) को मेल्टडाउन कहा जाता है । इसलिए, Pi 4 से पहले रास्पबेरी पाई उपकरणों में से कोई भी स्पेक्टर या मेलडाउन के लिए असुरक्षित माना जाता है।


मुझे आश्चर्य है कि अगर अन्य आर्किटेक्चर पर आवश्यक लिनक्स कर्नेल में परिवर्तन रास्पबेरी पाई पर चलने वाले लिनक्स के संस्करणों को बाहर धकेल दिया जाएगा? माना जाता है कि ये परिवर्तन सिस्टम को धीमा कर देंगे, इसलिए शायद पैच प्रभावित नहीं होने के बावजूद आरपी प्रभावित होगा।
बॉबी ड्यूरेट 22

4
कर्नेल पैच पता लगाता है कि यह किस प्रोसेसर पर चल रहा है और स्वचालित रूप से स्वयं को अक्षम कर देता है यदि यह एक प्रभावित मॉडल नहीं है। इसके अतिरिक्त रास्पबेरी पाई (और अधिकांश अन्य एकल-बोर्ड कंप्यूटर) के लिए गुठली विशेष रूप से उपलब्ध हार्डवेयर के लिए बनाई गई है, और अनुचर के पास प्रश्न में पैच को शामिल करने या सक्षम करने का कोई कारण नहीं है।
पर्किन्स

1
@BobbyDurrett, कर्नेल के लिए मेल्टडाउन परिवर्तन कोडबेस के x86- विशिष्ट अनुभाग में बैठे हैं। स्पेक्टर-संबंधित परिवर्तन सभी जगह हैं, लेकिन उनमें से अधिकांश कोड के प्रोसेसर-विशिष्ट वर्गों में हैं, या संकलक द्वारा नियंत्रित किए जाते हैं। कुछ बिट्स, जैसे नेटवर्किंग कोड में संरचनात्मक परिवर्तन, पाई में रिसाव हो सकता है, लेकिन उनमें से अधिकांश नहीं होंगे।
मार्क

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

22

पाई (सभी संस्करण) असुरक्षित नहीं है।

स्पेक्टर और मेल्टडाउन दोनों को आउट-ऑफ-ऑर्डर निष्पादन की आवश्यकता होती है। कॉर्टेक्स- ए 7 जल्दी पाई 2 और में इस्तेमाल किया कॉर्टेक्स A53 बाद में पाई 2 और पी 3 में इस्तेमाल एक सख्ती से इन-आदेश वास्तुकला है। ARM11 पाई 1 में इस्तेमाल एक तरीका है कि स्पेक्टर या मेल्टडाउन परमिट काम करने के लिए आंशिक रूप से बाहर के आदेश है, लेकिन नहीं है।

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


10

मैं इस पर अपना अलग ऑफर देना चाहता हूं।

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

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

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

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

विश्वास मत करो सब कुछ एआरएम कहते हैं। एआरएम का मतलब यह है कि संभवतः Google ने इन एआरएम सीपीयू पर काम नहीं किया है। इसका मतलब यह नहीं है कि वे स्पेक्टर के लिए अयोग्य होंगे। कुछ और तरह के कारनामे काम कर सकते हैं।

यह प्रश्न देखें: https://security.stackexchange.com/questions/176678/is-branch-predictor-flush-instruction-a-complete-spectre-fix और इसके उत्तर के निहितार्थ को समझें। आपके ब्राउज़र में चल रहा एक दुष्ट जावास्क्रिप्ट कोड स्पेक्टर माप के कारण हो सकता है कि प्रक्रिया में अन्य शाखाएं किस तरह से चली गई हैं। यहां तक ​​कि एक शाखा भविष्यवक्ता फ्लश निर्देश इस दुष्ट जावास्क्रिप्ट समस्या को ठीक नहीं करेगा, जब तक कि ब्राउज़र सक्रिय रूप से शाखा कोडक को अविश्वसनीय कोड चलाने से पहले फ्लश न कर दे।

स्पेक्टर हमारे लिए एक बहुत, बहुत लंबे समय तक रहेगा, क्योंकि 14 बिट्स इंडेक्स के रूप में ब्रांच प्रेडिक्टर एक 32-बिट एड्रेस स्पेस के शेष 18 बिट्स के साथ टैग नहीं किया जाता है, क्योंकि तब उसे 20 बिट्स (2 बिट्स सैचुरेटिंग काउंटर की आवश्यकता होगी) , 18 बिट्स टैग) के बजाय सिर्फ 2 बिट्स। यह शाखा भविष्यवक्ता के आकार को दस से गुणा करेगा! मैं सीपीयू निर्माताओं से एक शाखा प्रेडिक्टर फ्लश इंस्ट्रक्शन जोड़ने की अपेक्षा कर रहा हूं जो विशेष स्पेसिफिकेशंस के बिना यूजर स्पेस में भी काम करता है और कॉन्ट्रैक्ट स्विचिंग के समय इसे इस्तेमाल करने के लिए कर्नेल और बिना स्पेसिफाइड JIT कोड चलाते समय यूजर स्पेस का इस्तेमाल करता है। यह व्यवहार में अधिकांश स्पेक्टर समस्याओं को ठीक करेगा, लेकिन सिद्धांत रूप में, उन सभी को नहीं।


" अब, अगर दो शाखाएं एक ही भविष्यवक्ता की स्थिति को साझा करती हैं, तो आप यह माप सकते हैं कि किसी विशेष शाखा ने हाल के दिनों में किस तरह का कदम उठाया है। " आप यह कैसे सट्टा निष्पादन के बिना करते हैं?
पीटर टेलर

@PeterTaylor इन ARM CPUs में ब्रांच प्रेडिक्टर हैं, और इसलिए, इनका सट्टा निष्पादन होता है। वे जो याद कर रहे हैं वह आउट ऑफ ऑर्डर निष्पादन है।
जूही

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

यहां तक ​​कि सट्टा लाने के लिए पर्याप्त हो सकता है, क्योंकि एक मामूली लेकिन औसत दर्जे का विलंबता अंतर होगा।
जूहीस्ट

लिनक्स पहले से ही कर्नेल एड्रेस रैंडमाइजेशन जोड़ रहा था; आप किसी शाखा के पते का अनुमान नहीं लगा सकते।
मसलक ters
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.