لينڪس ڪنييل ۾ روٽ جي ڪمزوري ۽ سسٽم ڊي ۾ سروس کان انڪار

Qualys کان سيڪيورٽي محقق ٻن خطرن جا تفصيل ظاهر ڪيا آهن جيڪي لينڪس ڪنيل ۽ سسٽمڊ سسٽم مئنيجر کي متاثر ڪن ٿا. ڪرنل ۾ هڪ ڪمزوري (CVE-2021-33909) مقامي استعمال ڪندڙ کي اجازت ڏئي ٿي ته ڪوڊ ايگزيڪيوشن حاصل ڪري روٽ رائٽس سان گڏ انتهائي nested ڊاريڪٽريز جي استعمال ذريعي.

خطري جو خطرو ان حقيقت سان وڌي ويو آهي ته محقق ڪم ڪندڙ ڪارناما تيار ڪرڻ جي قابل هئا جيڪي Ubuntu 20.04/20.10/21.04، Debian 11 ۽ Fedora 34 تي ڊفالٽ ترتيب ۾ ڪم ڪن ٿا. اهو نوٽ ڪيو ويو آهي ته ٻين تقسيم جي آزمائش نه ڪئي وئي آهي، پر نظرياتي طور تي پڻ حساس آهن ۽ انهن تي حملو ڪري سگهجي ٿو. استحصال جو پورو ڪوڊ واعدو ڪيو ويو آهي شايع ٿيڻ کان پوءِ مسئلو ختم ٿيڻ کان پوءِ هر جاءِ تي، پر هن وقت تائين محدود ڪارڪردگيءَ جو هڪ پروٽوٽائپ موجود آهي، جنهن ڪري نظام خراب ٿي ويو. مسئلو جولاء 2014 کان موجود آهي ۽ 3.16 کان شروع ٿيندڙ ڪرنل رليز کي متاثر ڪري ٿو. ڪمزوري جو حل ڪميونٽي سان هموار ڪيو ويو ۽ 19 جولاءِ تي دانا ۾ قبول ڪيو ويو. مکيه تقسيم اڳ ۾ ئي ٺاهيا آهن تازه ڪاريون انهن جي ڪنييل پيڪيجز (Debian، Ubuntu، Fedora، RHEL، SUSE، Arch).

ڪمزوري سبب آهي ته نتيجو چيڪ ڪرڻ ۾ ناڪامي جي نتيجي ۾ هڪ size_t کان int تبادلي جي عمل کي انجام ڏيڻ کان اڳ seq_file ڪوڊ ۾، جيڪو رڪارڊ جي ترتيب مان فائلون ٺاهي ٿو. چيڪ ڪرڻ ۾ ناڪامي جو نتيجو ٿي سگھي ٿو ته بفر ڏانھن حد کان ٻاھر لکن ٿيون جڏھن ھڪ تمام نسٽڊ ڊاريڪٽري ڍانچي ٺاھڻ، چڙھڻ، ۽ حذف ڪرڻ (رٿ جي سائيز 1 GB کان وڌيڪ). نتيجي طور، هڪ حملو ڪندڙ هڪ 10-بائيٽ اسٽرنگ حاصل ڪري سگهي ٿو "// حذف ٿيل" جي هڪ آفسيٽ تي لکيل "-2 GB - 10 بائيٽ" مختص ٿيل بفر کان اڳ واري علائقي ڏانهن اشارو ڪندي.

تيار ڪيل استحصال کي هلائڻ لاءِ 5 GB ميموري ۽ 1 ملين مفت انوڊس جي ضرورت آهي. استحصال mkdir() کي ڪال ڪندي ڪم ڪري ٿو اٽڪل هڪ ملين ذيلي ڊائريڪٽريز جو درجو ترتيب ڏيڻ لاءِ 1 GB کان وڌيڪ فائل رستي جي سائيز حاصل ڪرڻ لاءِ. هي ڊاريڪٽري بائنڊ مائونٽ ذريعي هڪ الڳ يوزر نيمس اسپيس ۾ نصب ٿيل آهي، جنهن کان پوءِ rmdir() فنڪشن ان کي هٽائڻ لاءِ هلايو ويندو آهي. متوازي طور تي، ھڪڙو ٿريڊ ٺاھيو ويو آھي جيڪو ھڪڙو ننڍڙو اي بي پي ايف پروگرام لوڊ ڪري ٿو، جيڪو اسٽيج تي بلاڪ ڪيو ويو آھي اي بي پي ايف سيڊوڪوڊ چيڪ ڪرڻ کان پوء، پر ان جي JIT تاليف کان اڳ.

غير مراعات يافته userid namespace ۾، فائل /proc/self/mountinfo کوليو ويندو آهي ۽ بائنڊ مائونٽ ٿيل ڊاريڪٽري جو ڊگهو نالو پڙهي ويندو آهي، جنهن جي نتيجي ۾ بفر جي شروعات کان اڳ واري علائقي ڏانهن "// حذف ٿيل" اسٽرنگ لکيو ويندو آهي. لڪير لکڻ جي پوزيشن کي چونڊيو ويو آهي ته جيئن اهو اڳ ۾ ئي آزمائشي پر اڃا تائين مرتب نه ڪيو ويو اي بي پي ايف پروگرام ۾ هدايتون مٿان لکندو آهي.

اڳيون، eBPF پروگرام جي سطح تي، غير ڪنٽرول ٿيل آئوٽ آف بفر لکڻ جي ڪنٽرول قابليت ۾ تبديل ٿي ويندي آهي پڙهڻ ۽ لکڻ جي ٻين ڪنييل ڍانچي کي Btf ۽ map_push_elem جي جوڙجڪ جي ذريعي. نتيجي طور، استحصال modprobe_path[] بفر جي جڳھ کي ڪرنل ميموري ۾ طئي ڪري ٿو ۽ ان ۾ "/sbin/modprobe" رستي کي مٿي ڪري ٿو، جيڪو توهان کي اجازت ڏئي ٿو ته ڪنهن به قابل عمل فائل جي شروعات کي روٽ حقن سان شروع ڪرڻ جي صورت ۾. request_module() ڪال، جنهن تي عمل ڪيو ويو آهي، مثال طور، جڏهن نيٽ لنڪ ساکٽ ٺاهي.

محقق ڪيترن ئي حل فراهم ڪن ٿا جيڪي صرف هڪ مخصوص استحصال لاءِ اثرائتو آهن، پر مسئلو پاڻ کي ختم نٿا ڪن. اها سفارش ڪئي وئي آهي ته "/proc/sys/kernel/unprivileged_userns_clone" کي 0 تي سيٽ ڪرڻ لاءِ هڪ الڳ يوزر ID جي نالي واري جاءِ ۾ چڙهندڙ ڊائريڪٽري کي غير فعال ڪرڻ لاءِ، ۽ "/proc/sys/kernel/unprivileged_bpf_disabled" کي 1 تي اي بي پي ايف پروگرامن کي ڪرنل ۾ لوڊ ڪرڻ کي غير فعال ڪرڻ لاءِ.

اهو قابل ذڪر آهي ته هڪ متبادل حملي جو تجزيو ڪرڻ دوران هڪ وڏي ڊاريڪٽري کي نصب ڪرڻ لاء بائنڊ مائونڊ جي بدران FUSE ميڪانيزم جو استعمال شامل آهي، محقق هڪ ٻئي خطري ۾ آيا (CVE-2021-33910) سسٽم مئنيجر کي متاثر ڪندي. اهو ظاهر ٿيو ته جڏهن FUSE ذريعي 8 MB کان وڌيڪ رستي جي سائيز سان ڊاريڪٽري کي نصب ڪرڻ جي ڪوشش ڪئي وئي، ڪنٽرول شروعاتي عمل (PID1) اسٽيڪ ميموري ۽ حادثن کان ٻاهر هلندو آهي، جيڪو سسٽم کي "خوف" حالت ۾ رکندو آهي.

مسئلو اهو آهي ته سسٽم /proc/self/mountinfo جي مواد کي ٽريڪ ۽ پارس ڪري ٿو، ۽ يونٽ_name_path_escape() فنڪشن ۾ هر ماؤنٽ پوائنٽ کي پروسيس ڪري ٿو، جيڪو هڪ strdupa() آپريشن ڪري ٿو جيڪو ڊيٽا کي اسٽيڪ تي رکي ٿو بلڪه متحرڪ طور تي مختص ڪيل ميموري ۾. . جيئن ته وڌ ۾ وڌ اسٽيڪ سائيز RLIMIT_STACK جي ذريعي محدود آهي، پروسيسنگ تمام وڏي رستي تي مائونٽ پوائنٽ تائين پهچڻ سبب PID1 پروسيس ڪري ٿي ۽ سسٽم کي بند ڪري ٿو. حملي لاءِ، توهان استعمال ڪري سگهو ٿا آسان ترين FUSE ماڊل استعمال ڪرڻ سان گڏ هڪ انتهائي nested ڊاريڪٽري کي مائونٽ پوائنٽ جي طور تي، جنهن جي رستي جي ماپ 8 MB کان وڌيڪ آهي.

مسئلو سسٽم ڊي 220 (اپريل 2015) کان وٺي ظاهر ٿي رهيو آهي، اڳ ۾ ئي مکيه سسٽمڊ مخزن ۾ مقرر ڪيو ويو آهي ۽ تقسيم ۾ مقرر ڪيو ويو آهي (Debian، Ubuntu، Fedora، RHEL، SUSE، Arch). خاص طور تي، سسٽمڊ رليز 248 ۾ استحصال ڪم نه ڪندو آهي سسٽمڊ ڪوڊ ۾ هڪ بگ جي ڪري جيڪو /proc/self/mountinfo جي پروسيسنگ کي ناڪام بڻائي ٿو. اهو پڻ دلچسپ آهي ته 2018 ۾، هڪ اهڙي صورتحال پيدا ٿي ۽ جڏهن لکڻ جي ڪوشش ڪئي ته CVE-2018-14634 لينڪس ڪنيل ۾ ڪمزورين جي استحصال لاء، Qualys محقق سسٽم ڊي ۾ ٽن نازڪ خطرات ۾ آيا.

جو ذريعو: opennet.ru

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