
प्रकट "Spectre" शोषण (CVE-2017-5753 और CVE-2017-5715) का उपयोग करने का उदाहरण
2 जनवरी 2018 (CVE-2017-5753 और CVE-2017-5715) से उजागर "स्पेक्टर" शोषण का उपयोग करने का उदाहरण
स्पेक्टर विभिन्न अनुप्रयोगों के बीच अलगाव को तोड़ता है। यह एक हमलावर को त्रुटि-मुक्त प्रोग्रामों को धोखा देने की अनुमति देता है, जो सर्वोत्तम प्रथाओं का पालन करते हैं, उनके रहस्यों को लीक करने के लिए। वास्तव में, उक्त सर्वोत्तम प्रथाओं की सुरक्षा जांच वास्तव में हमले की सतह को बढ़ाती है और अनुप्रयोगों को स्पेक्टर के प्रति अधिक संवेदनशील बना सकती है।
C, लाइब्रेरी का उपयोग करता है:
हम टेक्स्ट "The Magic Words are Squeamish Ossifrage." को मेमोरी में डाल रहे हैं और फिर हम इसे शोषण का उपयोग करके पढ़ने का प्रयास कर रहे हैं। यदि सिस्टम कमजोर है, तो आप आउटपुट में वही टेक्स्ट देखेंगे, जो मेमोरी से पढ़ा गया है।
इस कोड में, यदि victim_function() में संकलित निर्देशों को सख्त प्रोग्राम क्रम में निष्पादित किया गया, तो फ़ंक्शन केवल array1[0..15] से पढ़ेगा क्योंकि array1 का आकार = 16 है। हालांकि, जब अनुमानित रूप से निष्पादित किया जाता है, तो सीमा से बाहर पढ़ना संभव है। readMemoryByte() फ़ंक्शन शाखा भविष्यवक्ता को x के लिए वैध मानों की अपेक्षा करने के लिए को कई प्रशिक्षण कॉल करता है, फिर सीमा से बाहर x के साथ कॉल करता है। सशर्त शाखा गलत भविष्यवाणी करती है, और परिणामी अनुमानित निष्पादन सीमा से बाहर x का उपयोग करके एक गुप्त बाइट पढ़ता है। फिर अनुमानित कोड से पढ़ता है, जिससे का मान कैश स्थिति में लीक हो जाता है। हमले को पूरा करने के लिए, एक सरल फ्लश+प्रोब का उपयोग यह पहचानने के लिए किया जाता है कि में कौन सी कैश लाइन लोड की गई थी, जो मेमोरी सामग्री को प्रकट करता है। हमले को कई बार दोहराया जाता है, इसलिए भले ही लक्ष्य बाइट शुरू में कैश न की गई हो, पहली पुनरावृत्ति इसे कैश में लाएगी।
victim_function()array2[array1[x] * 512]array1[x]array2अनुकूलित न किया गया कोड एक i7 Surface Pro 3 पर लगभग 10KB/सेकंड पढ़ता है।