الضعف في cgroups v1 يسمح بالخروج من الحاوية المعزولة

تم الكشف عن تفاصيل ثغرة أمنية (CVE-2022-0492) في تنفيذ آلية تحديد موارد cgroups v1 في النواة. Linuxوالتي يمكن استخدامها للهروب من الحاويات المعزولة. تظهر المشكلة بدءًا من نواة النظام. Linux تم إصلاح هذه المشكلة في الإصدار 2.6.24 وفي إصدارات النواة 5.16.12 و5.15.26 و5.10.97 و5.4.177 و4.19.229 و4.14.266 و4.9.301. يمكنك متابعة إصدارات تحديثات الحزم في التوزيعات على هذه الصفحات: Debian، SUSE ، UbuntuRHEL، فيدورا، جنتو، آرتش Linux.

ترجع الثغرة الأمنية إلى خطأ منطقي في معالج ملف Release_agent الذي يفشل في إجراء الفحوصات المناسبة عند تشغيل المعالج بامتيازات كاملة. يتم استخدام ملف Release_agent لتحديد البرنامج الذي سيتم تنفيذه بواسطة kernel عند إنهاء عملية في مجموعة cgroup. يعمل هذا البرنامج كجذر وبكل "الإمكانيات" الموجودة في مساحة الاسم الجذر. كان من المفترض أن المسؤول فقط لديه حق الوصول إلى إعداد Release_agent، ولكن في الواقع اقتصرت عمليات التحقق على منح حق الوصول للمستخدم الجذر، وهو ما لم يستبعد تغيير الإعداد من الحاوية أو بواسطة مستخدم جذر بدون حقوق المسؤول (CAP_SYS_ADMIN ).

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

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

الضعف في cgroups v1 يسمح بالخروج من الحاوية المعزولة

يمكن تنفيذ الهجوم باستخدام صلاحيات الجذر في حاوية معزولة أو عند تشغيل حاوية بدون علامة no_new_privs، التي تمنع منح صلاحيات إضافية. يجب تفعيل مساحات أسماء المستخدمين على النظام (مفعلة افتراضيًا في Ubuntu وفيدورا، ولكن لم يتم تفعيلها في Debian (وRHEL) والوصول إلى مجموعة التحكم الجذرية v1 (على سبيل المثال، يقوم Docker بتشغيل الحاويات في مجموعة التحكم الجذرية RDMA). كما يمكن تنفيذ الهجوم باستخدام صلاحيات CAP_SYS_ADMIN، وفي هذه الحالة لا يلزم دعم مساحة اسم المستخدم أو الوصول إلى التسلسل الهرمي لمجموعة التحكم الجذرية v1.

بالإضافة إلى الهروب من حاوية معزولة، تسمح الثغرة الأمنية أيضًا بتشغيل العمليات بواسطة مستخدم جذر بدون "إمكانيات" أو أي مستخدم لديه حقوق CAP_DAC_OVERRIDE (يتطلب الهجوم الوصول إلى الملف /sys/fs/cgroup/*/release_agent، وهو مملوكة للجذر) للوصول إلى جميع "الإمكانيات" النظامية.

تجدر الإشارة إلى أنه لا يمكن استغلال هذه الثغرة الأمنية عند استخدام آليات الحماية Seccomp أو AppArmor أو SE.Linux لزيادة عزل الحاويات، حيث أن Seccomp يحظر استدعاء دالة النظام unshare()، و AppArmor و SELinux لا تسمح بتثبيت نظام الملفات cgroupfs في وضع الكتابة.

المصدر: opennet.ru

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