ثغرة أمنية في النظام الفرعي Linux Netfilter kernel

تم التعرف على ثغرة أمنية (CVE-2021-22555) في Netfilter، وهو نظام فرعي من Linux kernel يستخدم لتصفية وتعديل حزم الشبكة، والذي يسمح للمستخدم المحلي بالحصول على امتيازات الجذر على النظام، بما في ذلك أثناء وجوده في حاوية معزولة. تم إعداد نموذج أولي عملي لاستغلال يتجاوز آليات حماية KASLR وSMAP وSMEP للاختبار. حصل الباحث الذي اكتشف الثغرة الأمنية على مكافأة قدرها 20 ألف دولار من Google لتحديد طريقة لتجاوز عزل حاويات Kubernetes في مجموعة kCTF.

كانت المشكلة موجودة منذ إصدار kernel 2.6.19، الذي تم إصداره قبل 15 عامًا، وتسببها خطأ في معالجات IPT_SO_SET_REPLACE وIP6T_SO_SET_REPLACE التي تتسبب في تجاوز سعة المخزن المؤقت عند إرسال معلمات منسقة بشكل خاص عبر استدعاء setockopt في وضع التوافق. في ظل الظروف العادية، يمكن للمستخدم الجذر فقط إجراء اتصال بـ compat_setsockopt()، ولكن يمكن أيضًا الحصول على الامتيازات المطلوبة لتنفيذ الهجوم بواسطة مستخدم لا يتمتع بالامتيازات على الأنظمة التي تم تمكين دعم مساحات أسماء المستخدمين لها.

يمكن للمستخدم إنشاء حاوية مع مستخدم جذر منفصل واستغلال الثغرة الأمنية من هناك. على سبيل المثال، يتم تمكين "مساحات أسماء المستخدمين" افتراضيًا على Ubuntu وFedora، ولكن لا يتم تمكينها على Debian وRHEL. تم اعتماد التصحيح الذي يصلح الثغرة الأمنية في نواة Linux في 13 أبريل. لقد تم بالفعل إنشاء تحديثات الحزمة بواسطة مشاريع Debian وArch Linux وFedora. في Ubuntu وRHEL وSUSE، التحديثات قيد الإعداد.

تحدث المشكلة في الدالة xt_compat_target_from_user() بسبب حساب غير صحيح لحجم الذاكرة عند حفظ بنيات kernel بعد التحويل من تمثيل 32 بت إلى 64 بت. يسمح الخطأ بكتابة أربع بايتات فارغة في أي موضع خارج المخزن المؤقت المخصص المحدود بالإزاحة 0x4C. تبين أن هذه الميزة كافية لإنشاء استغلال يسمح للمرء بالحصول على حقوق الجذر - عن طريق مسح m_list->المؤشر التالي في بنية msg_msg، تم إنشاء شروط للوصول إلى البيانات بعد تحرير الذاكرة (الاستخدام بعد الحرة)، والتي ثم تم استخدامه للحصول على معلومات حول العناوين والتغييرات في الهياكل الأخرى من خلال معالجة استدعاء النظام msgsnd().

المصدر: opennet.ru

إضافة تعليق