حالة سباق في أداة تجميع البيانات المهملة لـ Linux kernel والتي يمكن أن تؤدي إلى تصعيد الامتيازات

قام جان هورن من فريق Google Project Zero، الذي حدد ثغرات Spectre وMeltdown ذات مرة، بنشر تقنية لاستغلال الثغرة الأمنية (CVE-2021-4083) في مجمع البيانات المهملة Linux kernel. ترجع الثغرة الأمنية إلى حالة سباق عند تنظيف واصفات الملفات على مآخذ توصيل Unix، ومن المحتمل أن تسمح لمستخدم محلي لا يتمتع بالامتياز بتنفيذ التعليمات البرمجية الخاصة به على مستوى kernel.

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

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

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

الميزة الثانية المهمة هي استخدام المقاطعات التي تم إنشاؤها بواسطة جهاز توقيت الأجهزة لزيادة وقت حالة السباق. تم تحديد اللحظة بحيث يتم تشغيل معالج المقاطعة عند حدوث حالة سباق ومقاطعة تنفيذ التعليمات البرمجية لبعض الوقت. لمزيد من تأخير عودة التحكم، تم إنشاء حوالي 50 ألف إدخال في قائمة الانتظار باستخدام epoll، الأمر الذي يتطلب البحث من خلال معالج المقاطعة.

تم الكشف عن تقنية استغلال الثغرة الأمنية بعد فترة عدم كشف مدتها 90 يومًا. تظهر المشكلة منذ إصدار kernel 2.6.32 وتم حلها في أوائل ديسمبر. تم تضمين الإصلاح في kernel 5.16 وتم نقله أيضًا إلى فروع LTS لحزم kernel و kernel المتوفرة في التوزيعات. من الجدير بالذكر أنه تم تحديد الثغرة الأمنية أثناء تحليل مشكلة مماثلة CVE-2021-0920، والتي تتجلى في أداة تجميع البيانات المهملة عند معالجة علامة MSG_PEEK.

المصدر: opennet.ru

إضافة تعليق