
2 يناير 2018 (CVE-2017-5753 و CVE-2017-5715) "شبح" Spectre استغلال ثغرة
2 يناير 2018 (CVE-2017-5753 و CVE-2017-5715) مثال استغلال ثغرة Spectre "الشبح"
نضع النص "The Magic Words are Squeamish Ossifrage." في الذاكرة، ثم نحاول استغلال الثغرة لقراءته. إذا كان النظام عرضة للهجوم، فسترى نفس النص في المخرجات القياسية.
في هذا الكود، إذا تم تنفيذ تعليمات الترجمة في victim_function() بترتيب برنامجي صارم، فإن الدالة تقرأ فقط من array1[0..15] لأن array1 size = 16. ومع ذلك، من الممكن أن يتجاوز وقت التنفيذ وقت القراءة. تقوم دالة read_memory_byte() بتدريب victim_function() عدة مرات لجعل متوقع الفروع يتوقع قيمة صالحة لـ x، ثم تستدعي x خارج النطاق. لا يمكن توقع الفرع الشرطي، ويستخدم التنفيذ التخميني اللاحق x خارج النطاق لقراءة بايت غامض. ثم يقرأ الكود التخميني من array2[array1[x]*512]، مما يسرب قيمة array1[x] إلى الذاكرة المؤقتة. لإكمال الهجوم، يتم استخدام عملية تحديث + مسح بسيطة لتحديد أي سطر ذاكرة مؤقتة يحتوي على array2، مما يكشف محتوى الذاكرة. يتكرر الهجوم عدة مرات، لذا حتى إذا لم يكن البايت الهدف مخزنًا مؤقتًا في البداية، فإن التكرار الأول سيجلبه إلى الذاكرة المؤقتة. في i7 Surface Pro 3، تصل سرعة قراءة الكود المحسّن إلى حوالي 10 كيلوبايت/الثانية.