
تحليل فني لـ CVE-2021-3493، وهو ثغرة تصعيد امتيازات محلية في Ubuntu OverlayFS، بما في ذلك شرح السبب الجذري والإصدارات المتأثرة.
TL;DR
اكتشف كيف تسمح ثغرة أمنية في OverlayFS للمستخدمين المحليين في Ubuntu بالحصول على صلاحيات الجذر.
ملخص الثغرة
مشكلة خاصة بـ Ubuntu في نظام الملفات overlayfs في نواة Linux حيث لم يقم بالتحقق بشكل صحيح من تطبيق قدرات نظام الملفات فيما يتعلق بمساحات أسماء المستخدمين. يمكن لمهاجم محلي استخدام هذا للحصول على صلاحيات مرتفعة، بسبب تصحيح تم تنفيذه في Ubuntu للسماح بتركيبات overlayfs غير ممتازة.
CVE-2021-3493
الإسناد
أبلغ باحث أمني مستقل عن هذه الثغرة إلى برنامج SSD Secure Disclosure.
الإصدارات المتأثرة
استجابة البائع
“نشرنا تنبيهات أمنية لهذه المشكلة اليوم في
https://ubuntu.com/security/notices/USN-4915-1 https://ubuntu.com/security/notices/USN-4916-1 https://ubuntu.com/security/notices/USN-4917-1
بالإضافة إلى نشر المشكلة في متعقب CVE الخاص بنا:
https://ubuntu.com/security/CVE-2021-3493
فيما يلي محتوى الرسالة التي تم إرسالها إلى قائمة oss-security: https://www.openwall.com/lists/oss-security/2021/04/16/1
تحليل الثغرة
يدعم Linux قدرات الملفات المخزنة في سمات الملفات الموسعة التي تعمل بشكل مشابه لـ setuid-bit، ولكن يمكن أن تكون أكثر دقة. الإجراء المبسط لتعيين قدرات الملفات في شبه الكود يبدو كالتالي: setxattr(...): if cap_convert_nscap(...) is not OK: then fail vfs_setxattr(...)
الاستدعاء المهم هو cap_convert_nscap، الذي يتحقق من الأذونات فيما يتعلق بمساحات الأسماء.
إذا قمنا بتعيين قدرات الملفات من مساحة الأسماء الخاصة بنا وعلى نظام التحميل الخاص بنا، فلا توجد مشكلة ولدينا الإذن للقيام بذلك. المشكلة هي أنه عندما يقوم OverlayFS بتوجيه هذه العملية إلى نظام الملفات الأساسي، فإنه يستدعي فقط vfs_setxattr ويتجاوز الفحوصات في cap_convert_nscap.
يسمح هذا بتعيين قدرات عشوائية على الملفات في مساحة الأسماء/نظام التحميل الخارجي، حيث سيتم تطبيقها أيضًا أثناء التنفيذ.
في Linux 5.11، تم نقل استدعاء cap_convert_nscap إلى vfs_setxattr، لذلك لم يعد عرضة للخطر.