cgroups v1 ۾ ڪمزوري جيڪا هڪ الڳ ڪنٽينر کان فرار ٿيڻ جي اجازت ڏئي ٿي

لينڪس ڪنٽينل ۾ cgroups v2022 وسيلن کي محدود ڪرڻ واري ميڪانيزم جي عمل ۾ هڪ ڪمزوري (CVE-0492-1) جا تفصيل، جيڪي الڳ ٿيل ڪنٽينرز کان بچڻ لاءِ استعمال ٿي سگهن ٿا، ظاهر ڪيا ويا آهن. مسئلو لينڪس ڪنيل 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، Ubuntu، RHEL، Fedora، Gentoo، Arch Linux.

خطري جو سبب آهي هڪ منطقي غلطي جي ڪري release_agent فائل هينڊلر جيڪو صحيح چڪاس ڪرڻ ۾ ناڪام ٿئي ٿو جڏهن هينڊلر کي مڪمل استحقاق سان هلائي رهيو آهي. ریلیز_ايجنٽ فائل استعمال ڪيو ويندو آهي پروگرام کي بيان ڪرڻ لاءِ جيڪو ڪنيل پاران عمل ڪيو وڃي جڏهن هڪ سي گروپ ۾ هڪ عمل ختم ڪيو وڃي. هي پروگرام روٽ جي طور تي هلندو آهي ۽ سڀني "صلاحيتن" سان روٽ نالي جي جڳهه ۾. اهو فرض ڪيو ويو هو ته صرف ايڊمنسٽريٽر کي رسائي_لائيز_ايجنٽ سيٽنگ تائين رسائي هئي، پر حقيقت ۾ چيڪ صرف روٽ يوزر تائين پهچ ڏيڻ تائين محدود هئا، جيڪي ڪنٽينر يا روٽ استعمال ڪندڙ طرفان ايڊمنسٽريٽر جي حقن کان سواءِ سيٽنگ کي تبديل ڪرڻ کي خارج نه ڪندا هئا (CAP_SYS_ADMIN ).

اڳي، اهڙي خصوصيت کي خطري جي طور تي نه سمجهيو ويندو هو، پر صارف جي نالي جي جڳهه (يوزر نيم اسپيس) جي اچڻ سان صورتحال تبديل ٿي وئي آهي، جيڪا توهان کي ڪنٽينرز ۾ الڳ روٽ استعمال ڪندڙ ٺاهڻ جي اجازت ڏئي ٿي جيڪي روٽ استعمال ڪندڙ جي روٽ استعمال ڪندڙ سان اوورليپ نه ڪندا آهن. مکيه ماحول. ان مطابق، حملي لاءِ، اهو ڪافي آهي ته توهان جي release_agent هينڊلر کي ڪنٽينر ۾ ڳنڍڻ لاءِ جنهن جو پنهنجو روٽ يوزر آهي الڳ يوزر آئي ڊي اسپيس ۾، جيڪو عمل مڪمل ڪرڻ کان پوءِ، مکيه ماحول جي مڪمل استحقاق سان عمل ڪيو ويندو.

ڊفالٽ طور، cgroupfs هڪ ڪنٽينر ۾ صرف پڙهڻ واري موڊ ۾ نصب ٿيل آهي، پر جيڪڏهن توهان وٽ CAP_SYS_ADMIN حق آهن يا اڻ شيئر سسٽم ڪال استعمال ڪندي هڪ الڳ يوزر نيمس اسپيس سان هڪ نسٽڊ ڪنٽينر ٺاهي، لکڻ جي موڊ ۾ هن pseudofs کي ٻيهر نصب ڪرڻ ۾ ڪو مسئلو ناهي، جنهن ۾ CAP_SYS_ADMIN حق موجود آهن ٺاهيل ڪنٽينر لاءِ.

cgroups v1 ۾ ڪمزوري جيڪا هڪ الڳ ڪنٽينر کان فرار ٿيڻ جي اجازت ڏئي ٿي

حملو ٿي سگهي ٿو جيڪڏهن توهان وٽ روٽ مراعات آهن هڪ الڳ ڪنٽينر ۾ يا جڏهن ڪو ڪنٽينر هلائي رهيا آهيو بغير no_new_privs پرچم، جيڪو اضافي استحقاق حاصل ڪرڻ کان منع ڪري ٿو. سسٽم کي لازمي طور تي صارف جي نالي جي جڳهن لاءِ سپورٽ هجڻ گهرجي فعال (Ubuntu ۽ Fedora ۾ ڊفالٽ طور تي، پر Debian ۽ RHEL ۾ چالو نه آهي) ۽ روٽ cgroup v1 تائين رسائي حاصل ڪرڻ گهرجي (مثال طور، Docker روٽ RDMA cgroup ۾ ڪنٽينرز هلائي ٿو). حملو پڻ ممڪن آهي جيڪڏهن توهان وٽ CAP_SYS_ADMIN استحقاق آهن، انهي صورت ۾ صارف جي نالن جي جڳهن لاءِ مدد ۽ cgroup v1 روٽ وارين درجي تائين رسائي گهربل نه آهي.

هڪ الڳ ٿيل ڪنٽينر کان فرار ٿيڻ کان علاوه، ڪمزوري پڻ روٽ استعمال ڪندڙ طرفان شروع ڪيل عملن جي اجازت ڏئي ٿي بغير "قابليت" يا CAP_DAC_OVERRIDE حقن سان گڏ ڪنهن به صارف (حملي کي فائل تائين رسائي جي ضرورت آهي /sys/fs/cgroup/*/release_agent، جيڪو آهي روٽ جي ملڪيت) سڀني سسٽماتي "صلاحيتن" تائين رسائي حاصل ڪرڻ لاء.

اهو نوٽ ڪيو وڃي ٿو ته نقصان جو استحصال نه ٿو ڪري سگهجي جڏهن Seccomp، AppArmor يا SELinux تحفظ واري ميڪانيزم کي ڪنٽينرز جي اضافي ڌار ڪرڻ لاءِ استعمال ڪيو وڃي ٿو، ڇو ته Seccomp unshare() سسٽم ڪال تائين رسائي کي روڪي ٿو، ۽ AppArmor ۽ SELinux لکڻ جي موڊ ۾ cgroupfs کي لڳائڻ جي اجازت نٿا ڏين.

جو ذريعو: opennet.ru

تبصرو شامل ڪريو