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

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

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

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

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

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

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

المصدر: opennet.ru

شراء استضافة موثوقة للمواقع مع حماية DDoS وخوادم VPS VDS 🔥 اشترِ استضافة مواقع ويب موثوقة مع حماية من هجمات DDoS، وخوادم VPS وVDS | ProHoster