क्या वर्चुअल मशीन में स्पेक्टर सुरक्षा भेद्यता हो सकती है?


13

क्या यह संभव है कि वर्चुअलबॉक्स जैसी वर्चुअल मशीन में सुरक्षा भेद्यता "दर्शक" हो? मुझे लगता है कि वीएम शायद आउट-ऑफ-ऑर्डर निष्पादन करता है, लेकिन मेरी राय में परिणाम पढ़ने के लिए कैश पर झांकना संभव नहीं है।

क्या कोई स्पष्टीकरण है कि आभासी सीपीयू के कैश को पढ़ना कैसे संभव है?


4
हां, एक छोटे से शोध ने पुष्टि की होगी कि VMWare ने स्पेक्टर और मेल्टडाउन को संबोधित करने के लिए पैच जारी किए हैं। अतिथि OS को वास्तविक हाइपरविजर (दोनों प्रकार) के अलावा पैच किया जाना चाहिए
रामहाउंड

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

क्या कोई स्पष्टीकरण है कि आभासी सीपीयू के कैश को पढ़ना कैसे संभव है?

1
: @jms विवरण विहित पोस्ट मैं अपने जवाब में जुड़े हुए में हैंSpectre works on a different level ... In this attack, the attacker tricks the speculative execution to predictively execute instructions erroneously. In a nutshell, the predictor is coerced to predict a specific branch result that results in asking for an out-of-bound memory access that the victim process would not normally have requested resulting in incorrect speculative execution. Then by the side-channel, retrieves the value of this memory. In this way memory belonging to the victim process is leaked to the malicious process.
Mokubai

1
@jms वर्चुअलाइजेशन केवल तेज है क्योंकि यह भौतिक सीपीयू का उपयोग यथासंभव कम अमूर्तता के साथ करता है और अलगाव और अमूर्तता प्रदान करने के लिए सीपीयू हार्डवेयर पर निर्भर करता है। जैसी चीजें qemuअनुकरण कर सकती हैं जो अधिक सुरक्षित होंगी क्योंकि यह हार्डवेयर सीपीयू नहीं है , लेकिन यह बहुत धीमी है और वर्चुअलाइजेशन से अलग है।
Mokubai

जवाबों:


14

हाँ स्पेक्टर मेजबान / अतिथि, अतिथि / मेजबान और अतिथि / अतिथि सीमाओं को पार कर सकता है क्योंकि यह एक सीपीयू स्तर की खामी है जिसका अर्थ है कि संभावित रूप से संवेदनशील जानकारी सीपीयू कोर पर चलने वाली किसी भी चीज़ में लीक हो सकती है।

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

अधिकांश बड़े प्रदाताओं को अब तक की खामियों के खिलाफ पैच करना चाहिए था, क्योंकि वे सबसे अच्छे हो सकते हैं, लेकिन यह एक ऐसी समस्या है जो कुछ समय के लिए हमारे साथ रहती है।

Security.SE के पास इस बारे में एक विहित Q & A है और इसमें VM का उल्लेख है:

मैं एक वर्चुअल मशीन / कंटेनर चला रहा हूं, मैं किस हद तक कमजोर हूं?

के अनुसार स्टीफन Ullrich के जवाब

  • मेल्टडाउन हमले VMs को पार नहीं करते हैं, केवल स्थानीय प्रक्रियाओं के लिए कर्नेल मेमोरी को लीक करते हैं।
  • स्पेक्टर VMs में काम कर सकता है।

इसके अलावा, स्टीफन से फिर से , मेल्टडाउन और स्पेक्टर कंटेनर के साथ काम करता है, क्योंकि कंटेनर मेजबान कर्नेल पर निर्भर करता है।

वीएम आपके सिस्टम में वास्तविक सीपीयू का उपयोग कुछ विशेषाधिकार प्राप्त निर्देशों के साथ करते हैं जो फंसे हुए हैं और पुनर्निर्देशित करने में सक्षम हैं। यह उन्हीं कैश और निर्देशों का उपयोग करता है जैसा होस्ट करता है। यह अनिवार्य रूप से आपके सिस्टम में भौतिक सीपीयू के भीतर सिर्फ एक और परत है।

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

से Security.se पोस्ट विहित फिर से:

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

इसलिए, क्योंकि वीएम वास्तविक सीपीयू हार्डवेयर में चलता है और इसे करने के लिए सट्टा निष्पादन इंजन को "ट्रेन" करने के लिए एक विशेष लूप चलाना पड़ता है। फिर यह मेजबान या अतिथि (या अन्य वीएम) प्रक्रिया के उपयोग के संकेत के विशेष पैटर्न के लिए कैश को देखने के लिए सटीक समय का उपयोग कर सकता है जो इसे शोषण करना चाहता है।

इस तरह इसका मतलब है कि एक मशीन हर दिशा में शोषक है। होस्ट से VM तक, VM से होस्ट करने के लिए, और VM से VM तक।

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

यदि आप "सुरक्षित" वीएम चाहते थे तो आपको यह गारंटी देनी होगी कि यह कोर अलग-थलग है। इस हमले को रोकने के एकमात्र वास्तविक तरीके मेजबान और वीएम को केवल कुछ कोर का उपयोग करने के लिए मजबूर करना होगा ताकि वे कभी भी एक ही हार्डवेयर पर न चलें लेकिन इससे लागत में प्रभावी वृद्धि होगी क्योंकि आप नहीं कर पाएंगे किसी दिए गए होस्ट पर कई VMs हैं। आप कभी भी अधिक वीएम चलाने से दूर नहीं हो पाएंगे, जहां आपके पास कोर उपलब्ध है, जो कि मुझे "कम लोड" सर्वर पर करने की उम्मीद है क्योंकि कई सिस्टम उनके जीवन के 90% के लिए बेकार बैठते हैं।


2
मुझे लगता है कि आपने इस प्रश्न की व्याख्या की है कि "यदि होस्ट सीपीयू प्रभावित होता है, तो क्या वीएम प्रभावित होगा?" जैसा कि मैंने प्रश्न को समझा है, यह पूछता है "अगर होस्ट सीपीयू प्रभावित नहीं होता है, तो क्या वीएम अभी भी प्रभावित हो सकता है?" क्या आप स्पष्ट कर सकते हैं?
आंद्रेकेआर

1
@AndreKR: वर्तमान में सभी आउट-ऑफ-ऑर्डर निष्पादन सीपीयू स्पेक्टर से प्रभावित हैं; केवल सॉफ्टवेयर वर्कअराउंड से आप सिस्टम को सुरक्षित बना सकते हैं (और इस तरह वीएम को इस बारे में परवाह करनी होगी, हालांकि एक हाइपरविजर मेहमानों को एक दूसरे से अलग कर सकता है यदि सीपीयू सुविधाएं प्रदान करता है, जैसे इंटेल का आईबीआरएस सामान)। लेकिन इन-ऑर्डर सीपीयू पर बिना किसी सट्टा निष्पादन के साथ, सॉफ्टवेयर के किसी भी दो टुकड़ों के बीच किसी भी प्रकार की कोई स्पेक्ट्रम कमजोरियां मौजूद नहीं हो सकती हैं। स्पेक्टर का सार किसी चीज़ के सट्टा निष्पादन को भड़काने वाला है जो गुप्त डेटा को माइक्रोआर्किटेक्चरल अवस्था में डाल देता है; इन-ऑर्डर सीपीयू नहीं।
पीटर कॉर्डेस

सबसे दिलचस्प बात सट्टा निष्पादन नहीं है। सबसे दिलचस्प बात यह है कि कैसे एक प्रक्रिया यह पता लगा सकती है कि कैश में क्या है - यहां तक ​​कि एक वीएम में भी।

@jms उपलब्ध साइड अटैक को सुगम बनाने और सट्टा निष्पादन द्वारा उपयोगी बनाया गया है। प्रक्रिया सीधे कैश लाइनों को पढ़ने में सक्षम नहीं हो सकती है, लेकिन सट्टा निष्पादन गणना करके जानकारी को लीक कर सकता है जो कैश में मूल्यों को डालते हैं जिन्हें टाइमिंग हमलों से पता लगाया जा सकता है या उनका अनुमान लगाया जा सकता है। : काली छाया श्वेत पत्र की धारा 4 के लिए एक अच्छा व्याख्या है spectreattack.com/spectre.pdf
Mokubai

0

gem5

यदि आप विशुद्ध रूप से अनुकरण के साथ कमजोरियों का अध्ययन / पुनरुत्पादन करने में रुचि रखते हैं, तो होस्ट सीपीयू का उपयोग किए बिना, मुझे नहीं लगता कि क्यूईएमयू उन्हें देखने के लिए पर्याप्त विस्तृत है क्योंकि यह सीपीयू पाइपलाइन का अनुकरण नहीं करता है।

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

विज़ुअलाइज़ेशन के साथ एक शांत x86_64 डेमो यहां प्रकाशित किया गया है: http://www.lowepower.com/jason/visualizing-spectre-with-gem5.html

मणि 5 का नकारात्मक पक्ष यह है कि यह QEMU की तुलना में बहुत धीमा है, सिमुलेशन अधिक विस्तृत है।

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