ثغرات أمنية في النظام الفرعي eBPF والتي تسمح بتجاوز الحماية ضد هجمات Spectre

تم التعرف على ثغرة أمنية في Linux kernel (CVE-2021-33624) تسمح باستخدام نظام eBPF الفرعي لتجاوز الحماية ضد ثغرات فئة Spectre، مما يتيح إمكانية تحديد محتويات الذاكرة نتيجة تهيئة الظروف لـ التنفيذ التأملي لبعض العمليات. يتطلب هجوم Spectre وجود تسلسل معين من الأوامر في التعليمات البرمجية المميزة التي تؤدي إلى التنفيذ التخميني للتعليمات. من خلال معالجة برامج BPF المرسلة للتنفيذ، من الممكن إنشاء تعليمات مماثلة في eBPF وتسريب محتويات ذاكرة kernel والمناطق العشوائية من الذاكرة الفعلية من خلال القنوات الجانبية.

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

لقد ظهرت المشكلة منذ إصدار النواة 4.15 وتم حلها على شكل تصحيحات (1، 2، 3، 4). تظل الثغرة الأمنية غير مثبتة في التوزيعات (Debian، RHEL، Ubuntu، Fedora، SUSE، Arch).

بالإضافة إلى ذلك، يمكنك ملاحظة الملاحظة حول تأثير أدوات الحماية من ثغرات Spectre على الأداء. تلخص الملاحظة نتائج تحسين مصحح أخطاء rr (التسجيل وإعادة التشغيل)، والذي تم إنشاؤه في Mozilla لتصحيح الأخطاء التي يصعب تكرارها في Firefox. أدى التخزين المؤقت لاستدعاءات النظام المستخدمة للتحقق من وجود الدلائل إلى تقليل عملية "مصادر rr" لمشروع الاختبار من 3 دقائق و19 ثانية إلى 36 ثانية.

قرر مؤلف التحسين التحقق من مدى تغير الأداء بعد تعطيل حماية Spectre. بعد تشغيل النظام باستخدام المعلمة "mitigations=off"، كان وقت تنفيذ "مصادر rr" بدون تحسين هو دقيقتين و2 ثوانٍ (أسرع بـ 5 مرة)، ومع التحسين كان 1.6 ثانية (33٪ أسرع). ومن المثير للاهتمام، أن تعطيل حماية Spectre لم يؤدي فقط إلى تقليل وقت تنفيذ التعليمات البرمجية على مستوى النواة بمقدار 9 مرة (من 1.4 دقيقة 2 ثانية إلى 9 دقيقة 1 ثانية)، ولكن أيضًا خفض وقت التنفيذ إلى النصف في مساحة المستخدم (من 32 دقيقة 1 ثانية إلى 9 دقيقة 0 ثانية)، ربما بسبب انخفاض كفاءة تشغيل ذاكرة التخزين المؤقت لوحدة المعالجة المركزية و TLB تتم إعادة التعيين عند تمكين حماية Spectre.

المصدر: opennet.ru

إضافة تعليق