تم تحديد ثغرة أمنية أخرى في معالجات AMD تسمح بهجمات Meltdown

كشف فريق من الباحثين من جامعة غراتس التقنية (النمسا) ومركز هيلمهولتز لأمن المعلومات (CISPA) عن معلومات حول ثغرة أمنية (CVE-2021-26318) في جميع معالجات AMD تتيح إمكانية تنفيذ عمليات Meltdown-class هجمات القناة الجانبية (في البداية كان من المفترض أن معالجات AMD لا تتأثر بثغرة Meltdown). من الناحية العملية، يمكن استخدام الهجوم لإنشاء قنوات اتصال سرية، أو مراقبة النشاط في النواة، أو الحصول على معلومات حول العناوين في ذاكرة النواة لتجاوز حماية KASLR أثناء استغلال الثغرات الأمنية في النواة.

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

للحماية من هذا النوع الجديد من الهجمات، أوصت AMD باستخدام تقنيات التشفير الآمنة التي تساعد في منع هجمات Meltdown، مثل استخدام تعليمات LFENCE. ويوصي الباحثون الذين حددوا المشكلة بتمكين عزل جدول صفحات الذاكرة بشكل أكثر صرامة (KPTI)، والذي كان يستخدم سابقًا فقط لمعالجات Intel.

وخلال التجربة تمكن الباحثون من تسريب معلومات من النواة إلى عملية في مساحة المستخدم بسرعة 52 بايت في الثانية، نظرا لوجود أداة في النواة تقوم بعملية “if (offset < data_len) tmp = LUT[بيانات[إزاحة] * 4096]؛" . تم اقتراح عدة طرق لاسترداد المعلومات عبر القنوات الجانبية التي تنتهي في ذاكرة التخزين المؤقت أثناء التنفيذ التأملي. تعتمد الطريقة الأولى على تحليل الانحرافات في زمن تنفيذ تعليمات المعالج “PREFETCH” (Prefetch+Time)، والثانية على تغيير التغير في استهلاك الطاقة عند تنفيذ “PREFETCH” (Prefetch+Power).

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

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

المصدر: opennet.ru

إضافة تعليق