يعد Retbleed هجومًا جديدًا على آلية التنفيذ التخمينية لوحدات المعالجة المركزية Intel و AMD

حددت مجموعة من الباحثين من ETH Zurich هجومًا جديدًا على آلية التنفيذ التخميني للقفزات غير المباشرة في وحدة المعالجة المركزية ، والتي تتيح لك استخراج المعلومات من ذاكرة kernel أو تنظيم هجوم على النظام المضيف من الأجهزة الافتراضية. تم تسمية الثغرات الأمنية باسم Retbleed (CVE-2022-29900 ، CVE-2022-29901) وهي مشابهة في طبيعتها لهجمات Specter-v2. يرجع الاختلاف إلى تنظيم التنفيذ التخميني للكود العشوائي عند معالجة تعليمة "ret" (العودة) ، والتي تسترد العنوان للقفز من المكدس ، بدلاً من القفز بشكل غير مباشر باستخدام تعليمة "jmp" ، وتحميل العنوان من الذاكرة أو سجل وحدة المعالجة المركزية.

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

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

للحماية من الهجمات الكلاسيكية لفئة Specter ، التي تستخدم تعليمات فرع شرطية وغير مباشرة ، تستخدم معظم أنظمة التشغيل تقنية "retpoline" ، استنادًا إلى استبدال عمليات الفروع غير المباشرة بتعليمات "ret" ، والتي تكون كتلة توقع حالة المكدس المنفصلة لها المستخدمة في المعالجات ، لا تستخدم كتلة توقع فرع. عند تقديم retpoline في عام 2018 ، كان يُعتقد أن التلاعب بالعناوين المشابه لـ Specter لم يكن عمليًا للقفز التخميني باستخدام تعليمات "ret".

أظهر الباحثون الذين طوروا طريقة هجوم Retbleed إمكانية إنشاء ظروف معمارية دقيقة لبدء انتقال تخميني باستخدام تعليمات "ret" ونشروا مجموعة أدوات جاهزة لتحديد تسلسل التعليمات (الأدوات) المناسبة لاستغلال الثغرة الأمنية في Linux kernel ، التي تظهر فيها مثل هذه الظروف.

في سياق الدراسة ، تم إعداد ثغرة عملية تسمح ، على الأنظمة المزودة بوحدات معالجة مركزية Intel ، من عملية غير مميزة في مساحة المستخدم لاستخراج البيانات التعسفية من ذاكرة kernel بسرعة 219 بايت في الثانية ودقة 98٪. في معالجات AMD ، تكون كفاءة الاستغلال أعلى بكثير - معدل التسرب هو 3.9 كيلوبايت في الثانية. كمثال عملي ، يوضح كيفية استخدام الاستغلال المقترح لتحديد محتويات ملف / etc / shadow. على الأنظمة المزودة بوحدات معالجة مركزية Intel ، تم تنفيذ هجوم لتحديد تجزئة كلمة مرور الجذر في 28 دقيقة ، وعلى الأنظمة التي تحتوي على وحدات معالجة مركزية AMD ، في 6 دقائق.

تم تأكيد الهجوم لمدة 6-8 أجيال من معالجات Intel التي تم إصدارها قبل الربع الثالث من عام 3 (بما في ذلك Skylake) ، ومعالجات AMD القائمة على معماريات Zen 2019 و Zen 1+ و Zen 1 التي تم إصدارها قبل الربع الثاني من عام 2. في طرز المعالجات الأحدث ، مثل AMD Zen2021 و Intel Alder Lake ، وكذلك في معالجات ARM ، يتم حظر المشكلة بواسطة آليات الحماية الحالية. على سبيل المثال ، يساعد استخدام إرشادات IBRS (المضاربة المقيدة بالفرع غير المباشر) على الحماية من أي هجوم.

تم إعداد مجموعة من التغييرات لنواة Linux و Xen Hypervisor ، والتي تمنع المشكلة برمجيًا على وحدات المعالجة المركزية القديمة. يعدل التصحيح المقترح لـ Linux kernel 68 ملفًا ويضيف 1783 سطرًا ويزيل 387 سطرًا. لسوء الحظ ، تؤدي الحماية إلى تكاليف عامة كبيرة - في النصوص التي يتم إجراؤها على معالجات AMD و Intel ، يقدر تدهور الأداء من 14٪ إلى 39٪. من الأفضل استخدام الحماية بناءً على تعليمات IBRS ، والمتوفرة في الأجيال الجديدة من وحدات المعالجة المركزية Intel والمدعومة منذ نواة Linux 4.19.

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

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

بالإضافة إلى ذلك ، تواجه وحدات المعالجة المركزية AMD أيضًا مشكلة أخرى (CVE-2022-23825 ، ارتباك نوع الفرع) تتعلق بتنفيذ الفروع الوهمية - يمكن أن تحدث شروط التنبؤ بالفرع حتى بدون تعليمات الفرع الضرورية ، مما يسمح لك بالتأثير على المخزن المؤقت للتنبؤ بالفرع بدون تعليمات "إعادة". تعمل هذه الميزة على تعقيد تنفيذ الحماية بشكل كبير وتتطلب مسحًا أكثر نشاطًا للمخزن المؤقت للتنبؤ بالفرع. من المتوقع أن تؤدي إضافة الحماية الكاملة إلى القلب إلى زيادة النفقات العامة بنسبة 209٪.

المصدر: opennet.ru

إضافة تعليق