ثغرات أمنية في eBPF يمكنها تجاوز الحماية من هجوم Spectre 4

تم التعرف على اثنتين من نقاط الضعف في Linux kernel التي تسمح باستخدام نظام eBPF الفرعي لتجاوز الحماية ضد هجوم Spectre v4 (SSB، Speculative Store Bypass). باستخدام برنامج BPF غير المميز، يمكن للمهاجم تهيئة الظروف للتنفيذ التخميني لعمليات معينة وتحديد محتويات المناطق العشوائية من ذاكرة kernel. حصل القائمون على صيانة أنظمة eBPF الفرعية في النواة على إمكانية الوصول إلى نموذج أولي للاستغلال يوضح القدرة على تنفيذ الهجمات عمليًا. تم إصلاح المشاكل في شكل تصحيحات (1، 2)، والتي سيتم تضمينها في تحديث نواة Linux التالي. لم يتم بعد إنشاء التحديثات في مجموعات التوزيع (Debian وRHEL وSUSE وArch وFedora وUbuntu).

تعتمد طريقة هجوم Spectre 4 على استعادة البيانات المخزنة في ذاكرة التخزين المؤقت للمعالج بعد التخلص من نتيجة التنفيذ التخميني للعمليات عند معالجة عمليات الكتابة والقراءة بالتناوب باستخدام العنونة غير المباشرة. عندما تتبع عملية القراءة عملية كتابة (على سبيل المثال، mov [rbx + rcx]، 0x0؛ mov rax، [rdx + rsi])، قد تكون إزاحة عنوان القراءة معروفة بالفعل بسبب عمليات مماثلة يتم تنفيذها (عمليات القراءة هي يتم إجراؤها بشكل متكرر ويمكن إجراؤها من ذاكرة التخزين المؤقت) ويمكن للمعالج إجراء عمليات القراءة بشكل تخميني قبل الكتابة دون انتظار حساب إزاحة الكتابة غير المباشرة.

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

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

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

المصدر: opennet.ru

إضافة تعليق