ضعف في آلية تنفيذ التعليمات التخمينية لمعالجات AMD

نشر مشروع Grsecurity تفاصيل وعرض توضيحي لطريقة هجوم لثغرة أمنية جديدة (CVE-2021-26341) في معالجات AMD المتعلقة بتنفيذ التعليمات التخمينية بعد عمليات القفز إلى الأمام غير المشروطة. في حالة حدوث هجوم ناجح ، تسمح الثغرة الأمنية بتحديد محتويات مناطق عشوائية من الذاكرة. على سبيل المثال ، أعد الباحثون استغلالًا يسمح لك بتحديد تخطيط العنوان وتجاوز آلية حماية KASLR (التوزيع العشوائي لذاكرة kernel) من خلال تنفيذ كود غير مميز في النظام الفرعي ePBF kernel. لا يتم استبعاد سيناريوهات الهجوم الأخرى التي يمكنها تسريب محتويات ذاكرة kernel.

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

كما هو الحال مع استغلال الثغرة الأمنية Specter-v1 ، يتطلب الهجوم وجود تسلسلات معينة من التعليمات (الأدوات) في النواة تؤدي إلى تنفيذ تخميني. في هذه الحالة ، يتمثل حظر الثغرة الأمنية في تحديد مثل هذه الأدوات في التعليمات البرمجية وإضافة تعليمات إضافية إليها تمنع التنفيذ التخميني. يمكن أيضًا إنشاء شروط التنفيذ التخميني باستخدام البرامج غير المميزة التي يتم تشغيلها في الجهاز الظاهري لـ eBPF. لمنع القدرة على إنشاء أدوات باستخدام eBPF ، يوصى بتعطيل الوصول غير المتميز إلى eBPF في النظام ("sysctl -w kernel.unprivileged_bpf_disabled = 1").

تؤثر الثغرة الأمنية على المعالجات القائمة على معمارية Zen1 و Zen2 الدقيقة ، بما في ذلك الجيل الأول والثاني من معالجات AMD EPYC و AMD Ryzen Threadripper ، بالإضافة إلى AMD Ryzen 2000/3000/4000/5000 و AMD Athlon و AMD Athlon X و AMD Ryzen Threadripper PRO وسلسلة APU A. لمنع تنفيذ التعليمات التخمينية ، يوصى باستدعاء تعليمات INT3 أو LFENCE بعد عمليات الفروع (RET ، JMP ، CALL).

المصدر: opennet.ru

إضافة تعليق