ثغرة أمنية في Polkit تسمح لك بتصعيد امتيازاتك في النظام

تم التعرف على ثغرة أمنية (CVE-2021-3560) في مكون Polkit، والذي يتم استخدامه في التوزيعات للسماح للمستخدمين غير المميزين بتنفيذ إجراءات تتطلب حقوق وصول مرتفعة (على سبيل المثال، تركيب محرك أقراص USB)، مما يسمح للمستخدم المحلي الحصول على حقوق الجذر في النظام. تم إصلاح الثغرة الأمنية في الإصدار 0.119 من Polkit.

كانت المشكلة موجودة منذ الإصدار 0.113، لكن العديد من التوزيعات، بما في ذلك RHEL وUbuntu وDebian وSUSE، قامت بنقل الوظائف المتأثرة إلى حزم تعتمد على إصدارات Polkit الأقدم (تتوفر إصلاحات الحزم بالفعل في التوزيعات).

تتجلى المشكلة في وظيفة polkit_system_bus_name_get_creds_sync()، التي تحصل على المعرفات (uid وpid) للعملية التي تطلب رفع الامتياز. يتم تعريف العملية بواسطة Polkit عن طريق تعيين اسم فريد في DBus، والذي يتم استخدامه بعد ذلك للتحقق من الامتيازات. إذا تم قطع اتصال العملية بـ dbus-daemon قبل بدء معالج polkit_system_bus_name_get_creds_sync مباشرةً، يتلقى المعالج رمز خطأ بدلاً من اسم فريد.

سبب الثغرة الأمنية هو أن رمز الخطأ الذي تم إرجاعه لم تتم معالجته بشكل صحيح وأن وظيفة polkit_system_bus_name_get_creds_sync() ترجع TRUE بدلاً من FALSE، على الرغم من الفشل في مطابقة العملية مع uid/pid والتحقق من الامتيازات المطلوبة للعملية. يفترض الكود الذي تم استدعاء وظيفة polkit_system_bus_name_get_creds_sync() منه أن عملية التحقق كانت ناجحة وأن طلب تصعيد الامتيازات جاء من الجذر وليس من مستخدم لا يتمتع بالامتيازات، مما يجعل من الممكن تنفيذ إجراءات مميزة دون مصادقة إضافية والتحقق من بيانات الاعتماد.

المصدر: opennet.ru

إضافة تعليق