خطأ تنفيذ المضاربة الجديد يسرب البيانات من المخازن المؤقتة الداخلية لشرائح Intel

تم الكشف لأول مرة في يناير 2018 ، وقد فتحت هجمات Meltdown و Specter بوابات الفيضان ، مما أدى إلى إجراء بحث مكثف في أجهزة تنفيذ المضاربة الموجودة في المعالجات الحديثة ، وتم نشر عدد من الهجمات الإضافية في الأشهر منذ ذلك الحين.

يرى اليوم نشر مجموعة من العيوب وثيقة الصلة تسمى مختلف RIDL ، تداعيات ، ZombieLoad ، أو أخذ العينات بيانات Microarchitectural. الأسماء الكثيرة هي نتيجة للمجموعات العديدة التي اكتشفت العيوب المختلفة. من قسم علوم الكمبيوتر في جامعة فريجي بأمستردام ومركز هلمهولتز لأمن المعلومات ، لدينا "Rogue In-Flight Data Load". من فريق يمتد إلى جامعة غراتس للتكنولوجيا ، وجامعة ميشيغان ، ومعهد وورسيستر للفنون التطبيقية ، وجامعة لو لوفين ، لدينا "تداعيات". من جامعة غراتس للتكنولوجيا ، ومعهد وورسيستر للفنون التطبيقية ، وجامعة لو لوفين ، لدينا "ZombieLoad" ، ومن جامعة غراتس للتكنولوجيا ، لدينا "نقل إلى تسرب".

تستخدم Intel اسم "أخذ عينات البيانات المصغرة المعمارية" (MDS) ، وهذا هو الاسم الذي يمكن القول إنه يقدم نظرة ثاقبة للمشكلة. تم اكتشاف المشكلات بشكل مستقل بواسطة كل من Intel ومجموعات أخرى مختلفة ، مع أول إخطار لشركة الرقائق يحدث في يونيو من العام الماضي.

خلاصة: المعالجات تخمين الكثير

جميع الهجمات تتبع مجموعة مشتركة من المبادئ. كل معالج له سلوك معماري (السلوك الموثق الذي يصف كيفية عمل التعليمات والتي يعتمد عليها المبرمجون لكتابة برامجهم) وسلوك معماري مصغر (الطريقة التي يتصرف بها التنفيذ الفعلي للعمارة). هذه يمكن أن تتباعد بطرق خفية. على سبيل المثال ، من الناحية المعمارية ، ينفذ المعالج كل تعليمة بالتتابع ، واحدة تلو الأخرى ، في انتظار معرفة جميع معاملات أي تعليمة قبل تنفيذ هذا الإرشادات. سينتظر البرنامج الذي يقوم بتحميل قيمة من عنوان معين في الذاكرة حتى يتم معرفة العنوان قبل محاولة إجراء التحميل ثم ينتظر انتهاء التحميل قبل استخدام القيمة.

مع ذلك ، قد يحاول المعالج أن يخمن المضاربة في العنوان حتى يتمكن من البدء في تحميل القيمة من الذاكرة (التي تكون بطيئة) أو قد يخمن أن الحمل سيسترد قيمة معينة. وعادة ما تستخدم قيمة من ذاكرة التخزين المؤقت أو الترجمة lookaside الترجمة لتشكيل هذا التخمين. إذا كان المعالج خاطئًا ، فسيتجاهل القيمة التي تم تخمينها ويؤدي التحميل مرة أخرى ، وهذه المرة بالعنوان الصحيح. وبالتالي يتم الحفاظ على السلوك المحدد معماريا ، كما لو كان المعالج دائما ينتظر القيم قبل استخدامها.

ولكن هذا التخمين الخاطئ سوف يزعج أجزاء أخرى من المعالج ؛ الطريقة الرئيسية هي تعديل ذاكرة التخزين المؤقت بطريقة تعتمد على القيمة المخزنة. يؤدي هذا التعديل إلى اختلافات التوقيت الدقيقة (لأنه من الأسرع قراءة البيانات الموجودة بالفعل في ذاكرة التخزين المؤقت من البيانات غير الموجودة) التي يمكن للمهاجم قياسها. من خلال هذه القياسات ، يمكن للمهاجم أن يستنتج القيمة المخزنة ، وهذا يعني أن المهاجم يمكنه استنتاج القيمة التي كانت في ذاكرة التخزين المؤقت. يمكن أن تكون هذه القيمة حساسة وذات قيمة للمهاجم.

التخزين المؤقت ...

تتشابه MDS على نطاق واسع ، ولكن بدلاً من تسريب القيم من ذاكرة التخزين المؤقت ، فإنه يسرب القيم من المخازن المؤقتة المختلفة داخل المعالج. يحتوي المعالج على عدد من المخازن المؤقتة المتخصصة التي يستخدمها لنقل البيانات داخلياً. على سبيل المثال ، يتم استخدام مخازن تعبئة الأسطر (LFB) لتحميل البيانات في ذاكرة التخزين المؤقت المستوى 1. عندما يقرأ المعالج من الذاكرة الرئيسية ، يقوم أولاً بفحص ذاكرة التخزين المؤقت لبيانات المستوى الأول لمعرفة ما إذا كان يعرف القيمة بالفعل. إذا لم يحدث ذلك ، فإنه يرسل طلبًا إلى الذاكرة الرئيسية لاسترداد القيمة. يتم وضع هذه القيمة في LFB قبل كتابتها إلى ذاكرة التخزين المؤقت. وبالمثل ، عند كتابة القيم على الذاكرة الرئيسية ، يتم وضعها مؤقتًا في مخازن مؤقتة. من خلال عملية تسمى إعادة توجيه التخزين من أجل التحميل ، يمكن أيضًا استخدام مخزن التخزين المؤقت لخدمة قراءة الذاكرة. وأخيرًا ، هناك هياكل تسمى منافذ التحميل ، والتي تستخدم لنسخ البيانات من الذاكرة إلى السجل.

يمكن أن تحتوي المخازن المؤقتة الثلاثة على بيانات قديمة: سوف يحتفظ المخزن المؤقت لملء السطر ببيانات من عملية جلب سابقة من الذاكرة الرئيسية أثناء انتظار الجلب الجديد ؛ يمكن أن يحتوي مخزن مؤقت على مزيج من البيانات من عمليات تخزين مختلفة (وبالتالي ، يمكن إعادة توجيه مزيج من البيانات الجديدة والقديمة إلى مخزن مؤقت للتحميل) ؛ ويمكن أن يحتوي منفذ التحميل بالمثل على بيانات قديمة أثناء انتظار البيانات الجديدة من الذاكرة.

مثلما تستخدم هجمات تنفيذ المضاربة السابقة قيمة قديمة في ذاكرة التخزين المؤقت ، فإن هجمات MDS الجديدة تؤدي تكهنات بناءً على قيمة قديمة من أحد هذه المخازن المؤقتة. يمكن استخدام الأنواع الثلاثة العازلة في مثل هذه الهجمات ، حيث يعتمد المخزن المؤقت الدقيق على رمز الهجوم الدقيق.

"أخذ العينات" في الاسم هو بسبب تعقيدات هذا النوع من الهجوم. المهاجم لديه سيطرة ضئيلة للغاية على ما هو موجود في هذه المخازن المؤقتة. على سبيل المثال ، يمكن أن يحتوي المخزن المؤقت للتخزين على بيانات قديمة من عمليات تخزين مختلفة ، لذلك في حين أن بعضها قد يكون موضع اهتمام للمهاجمين ، إلا أنه يمكن خلطه ببيانات أخرى غير ذات صلة. للحصول على بيانات قابلة للاستخدام ، يجب إجراء العديد من المحاولات لتسريب المعلومات ، لذلك يجب أخذ عينات منها عدة مرات.

من ناحية أخرى ، فإن الهجمات ، مثل هجمات Meltdown و Foreshadow ، تتجاوز مجالات الأمن الداخلي للمعالج. على سبيل المثال ، يمكن لعملية وضع المستخدم رؤية البيانات التي تم تسريبها من النواة ، أو العملية غير الآمنة يمكن أن ترى البيانات التي تسربت من داخل جيب SGX آمن. كما هو الحال مع الهجمات المماثلة السابقة ، فإن استخدام hyperthreading ، حيث يعمل كل من خيط المهاجم وخيط الضحية على نفس العنصر المادي ، يمكن أن يزيد من سهولة الاستغلال.

تطبيق محدود

بشكل عام ، لدى المهاجم سيطرة ضئيلة أو معدومة على هذه المخازن المؤقتة. لا توجد طريقة سهلة لإجبار المخازن المؤقتة على احتواء معلومات حساسة ، لذلك ليس هناك ما يضمن أن البيانات المسربة ستكون مفيدة. أظهر الباحثون في VU Amsterdam هجومًا برهانًا على المفهوم حيث يكون المستعرض قادرًا على قراءة ملف كلمة المرور المظللة لنظام Linux. ومع ذلك ، لجعل هذا الهجوم يعمل ، تم تصميم نظام الضحية لتشغيل أمر passwd مرارًا وتكرارًا ، مما يضمن وجود احتمال كبير بأن تكون محتويات الملف في أحد المخازن المؤقتة. وفقاً لذلك ، تعتقد Intel أن الهجمات منخفضة أو متوسطة الخطورة.

هذا لا يعني أنهم ذهبوا غير مثبتين. اليوم سوف يتم شحن تحديث الرمز الصغير لساندي بريدج من خلال الجيل الأول من كوفي ليك ورقائق بحيرة ويسكي. بالاقتران مع دعم البرامج المناسب ، ستكون أنظمة التشغيل قادرة على مسح المخازن المؤقتة المختلفة بالقوة لضمان خلوها من البيانات الحساسة. الجيلان الأول من معالجات Coffee Lake و Whisky Lake يتمتعان بالفعل بحصانة ضد MDS باستخدام المخازن المؤقتة لملء الأحمال ، حيث تم إصلاح ذلك كجزء من علاج الخطأ النهائي من المستوى 1 وهجمات Meltdown. علاوة على ذلك ، تشتمل أحدث معالجات Coffee Lake و Whiskey Lake و Cascade Lake على إصلاحات كاملة للأجهزة لجميع المتغيرات الثلاثة.

بالنسبة للأنظمة التي تعتمد على إصلاحات الرمز الصغير ، تقول إنتل إن النفقات العامة للأداء ستكون عادة أقل من ثلاثة في المائة ، ولكن في ظل أعباء عمل معينة غير مواتية ، قد تكون أعلى إلى حد ما. كما قدمت الشركة بيانًا رسميًا:

تمت معالجة أخذ عينات البيانات المصغرة المعمارية (MDS) بالفعل على مستوى الأجهزة في العديد من معالجات Intel® Core ™ من الجيلين الثامن والتاسع ، بالإضافة إلى عائلة المعالجات Intel® Xeon® القابلة للتطوير من الجيل الثاني. بالنسبة إلى المنتجات المتأثرة الأخرى ، يتوفر التخفيف من خلال تحديثات الرمز الصغير ، بالإضافة إلى التحديثات المقابلة لنظام التشغيل وبرنامج hypervisor المتوفرة بدءًا من اليوم. لقد قدمنا ​​مزيدًا من المعلومات على موقعنا ونواصل تشجيع الجميع على تحديث أنظمتهم ، لأنها واحدة من أفضل الطرق للحفاظ على الحماية. نود أن نعرب عن شكرنا للباحثين الذين عملوا معنا ومع شركائنا في الصناعة لمساهماتهم في الكشف المنسق عن هذه القضايا.

مثل Meltdown ، يبدو أن هذه المشكلة خاصة بـ Intel. يكمن استخدام البيانات التي لا معنى لها من المخازن المؤقتة في تنفيذ عمليات المضاربة في مكان ما بين تحسين الأداء ومشكلة سهولة التنفيذ ، ولا يُعتقد أن رقائق AMD أو تصميمات ARM تعاني من نفس المشكلة. من الناحية المعمارية ، تقوم جميع معالجات Intel بالأمر الصحيح - فهم يقومون بتخمين وتراجع المضاربات الخاطئة ، كما ينبغي ، كما لو كانت البيانات السيئة لم تُستخدم مطلقًا - ولكن كما أوضحت Meltdown و Specter ، فإن هذا لا يكفي لضمان المعالج يعمل بأمان.

صورة القائمة من قبل مارينا مينكين

شاهد الفيديو: مقلب. مضاربة بالفندق ! شوفو وش صار (أبريل 2020).