ثغرات أمنية في النظام الفرعي eBPF الخاص بنواة Linux

تم التعرف على ثغرة أمنية (CVE-2021-29154) في النظام الفرعي eBPF، والتي تسمح لك بتشغيل معالجات التتبع وتحليل تشغيل الأنظمة الفرعية وإدارة حركة المرور، والتي يتم تنفيذها داخل Linux kernel في جهاز ظاهري خاص باستخدام JIT، والذي يسمح المستخدم المحلي لتنفيذ التعليمات البرمجية الخاصة به على مستوى النواة. تظهر المشكلة حتى إصدار 5.11.12 (شاملاً) ولم يتم حلها بعد في التوزيعات (Debian، Ubuntu، RHEL، Fedora، SUSE، Arch). الإصلاح متاح كتصحيح.

وفقًا للباحثين الذين حددوا الثغرة الأمنية، فقد تمكنوا من تطوير نموذج أولي عملي للاستغلال لأنظمة 32 و64 بت x86، والتي يمكن استخدامها من قبل مستخدم غير مميز. ومع ذلك، تشير Red Hat إلى أن مدى خطورة المشكلة يعتمد على ما إذا كان يمكن للمستخدم الوصول إلى استدعاء نظام eBPF. على سبيل المثال، في RHEL ومعظم توزيعات Linux الأخرى في التكوين الافتراضي، يمكن استغلال الثغرة الأمنية إذا تم تمكين BPF JIT وكان لدى المستخدم حقوق CAP_SYS_ADMIN. كحل بديل، يوصى بتعطيل BPF JIT باستخدام الأمر: echo 0 > /proc/sys/net/core/bpf_jit_enable

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

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

سبب الثغرة الأمنية CVE-2020-27170 هو التلاعب بالمؤشر في أداة التحقق من BPF والتي تتسبب في وصول عمليات المضاربة إلى منطقة خارج حدود المخزن المؤقت. ترجع الثغرة الأمنية CVE-2020-27171 إلى خطأ في التدفق السفلي لعدد صحيح عند العمل باستخدام المؤشرات، مما يؤدي إلى الوصول التخميني إلى البيانات خارج المخزن المؤقت. لقد تم بالفعل إصلاح هذه المشكلات في إصدارات kernel 5.11.8 و5.10.25 و5.4.107 و4.19.182 و4.14.227، كما تم تضمينها أيضًا في تحديثات kernel لمعظم توزيعات Linux. أعد الباحثون نموذجًا أوليًا يسمح لمستخدم لا يتمتع بامتيازات باستخراج البيانات من ذاكرة kernel.

المصدر: opennet.ru

إضافة تعليق