PolKit ۾ نازڪ ڪمزوري اڪثر لينڪس جي تقسيم تي روٽ رسائي جي اجازت ڏئي ٿي

Qualys Polkit (اڳوڻي PolicyKit) سسٽم جزو ۾ هڪ ڪمزوري (CVE-2021-4034) جي نشاندهي ڪئي آهي جيڪي تقسيم ۾ استعمال ڪيا ويا آهن غير مراعات يافته استعمال ڪندڙن کي انهن عملن کي انجام ڏيڻ جي اجازت ڏيڻ لاءِ جيڪي اعليٰ رسائي جي حقن جي ضرورت هونديون آهن. ڪمزوري هڪ غير مراعات يافته مقامي صارف کي اجازت ڏئي ٿي ته هو پنهنجي استحقاق کي روٽ ڪرڻ ۽ سسٽم تي مڪمل ڪنٽرول حاصل ڪرڻ لاءِ. مسئلو ڪوڊ نالي PwnKit هو ۽ هڪ ڪم ڪندڙ استحصال پيدا ڪرڻ لاءِ قابل ذڪر آهي جيڪو اڪثر لينڪس ڊويزنن تي ڊفالٽ ترتيب ۾ هلندو آهي.

مسئلو PolKit جي pkexec افاديت ۾ موجود آهي، جيڪو SUID روٽ پرچم سان گڏ اچي ٿو ۽ مخصوص PolKit ضابطن جي مطابق ٻئي صارف جي استحقاق سان حڪم هلائڻ لاءِ ٺهيل آهي. pkexec ڏانهن منظور ٿيل ڪمانڊ لائن دليلن جي غلط ھٿ ڪرڻ جي ڪري، ھڪڙو غير مراعات یافتہ صارف تصديق کي نظرانداز ڪري سگھي ٿو ۽ پنھنجي ڪوڊ کي روٽ طور هلائي سگھي ٿو، بغير رسائي جي مقرر ڪيل ضابطن جي. حملي لاءِ، اهو مسئلو ناهي ته PolKit ۾ ڪهڙيون سيٽنگون ۽ پابنديون بيان ڪيون ويون آهن، اهو ڪافي آهي ته SUID روٽ وصف پليجيبل فائل لاءِ pkexec افاديت سان سيٽ ڪيو ويو آهي.

Pkexec عمل کي شروع ڪرڻ وقت پاس ڪيل ڪمانڊ لائن دليل جي ڳڻپ (argc) جي صحيحيت جي جانچ نٿو ڪري. pkexec جي ڊولپرز فرض ڪيو ته آرگ وي صف ۾ پهرين داخلا هميشه پروسيس جو نالو (pkexec) تي مشتمل آهي، ۽ ٻيو يا ته هڪ NULL قدر يا pkexec ذريعي شروع ڪيل حڪم جو نالو. جيئن ته دليلن جي ڳڻپ کي صف جي اصل مواد جي خلاف نه چيڪ ڪيو ويو ۽ فرض ڪيو ويو ته هميشه 1 کان وڌيڪ آهي، جيڪڏهن هڪ عمل هڪ خالي آرگ وي سري کي منظور ڪيو ويو، جيئن ته لينڪس ايگزيڪيو فنڪشن جي اجازت ڏئي ٿي، pkexec NULL کي پهرين دليل طور علاج ڪندو ( پروسيس جو نالو) ۽ ايندڙ هڪ بفر ميموري کان ٻاهر، جهڙوڪ صف جي ايندڙ مواد وانگر. |———+———+——+———| | argv[0] | argv[1] | ... | argv[argc] | envp[0] | envp[1] | ... | envp[envc] | |—-|—-+—-|—-+——+——|——|—-|—-+—-|—-+——+——|——| VVVVVV "پروگرام" "-اختيار" NULL "قدر" "PATH = نالو" NULL

مسئلو اهو آهي ته argv array کان پوءِ ميموري ۾ هڪ envp صف آهي جنهن ۾ ماحولياتي متغير شامل آهن. اهڙيء طرح، جيڪڏهن argv صف خالي آهي، pkexec ماحول جي متغيرن سان صف جي پهرين عنصر کان بلند امتياز سان هلندڙ ڪمانڊ بابت ڊيٽا ڪڍي ٿو (argv[1] envp[0] سان هڪجهڙائي ٿي ويو)، جنهن جي مواد کي ڪنٽرول ڪري سگهجي ٿو. حملي ڪندڙ طرفان.

argv[1] جي قيمت حاصل ڪرڻ کان پوءِ، pkexec ڪوشش ڪري ٿو، PATH ۾ فائل جي رستن کي مدنظر رکندي، ايگزيڪيوٽوبل فائل جي مڪمل واٽ جو تعين ڪرڻ لاءِ ۽ argv[1] ڏانهن مڪمل رستي سان اسٽرنگ ڏانهن پوائنٽر لکي ٿو، جيڪو پهرين ماحولياتي متغير جي قيمت کي اوور رائٽنگ ڪري ٿو، ڇاڪاڻ ته argv[1] envp[0] سان هڪجهڙائي آهي. پهرين ماحولياتي متغير جي نالي کي ترتيب ڏيڻ سان، هڪ حملو ڪندڙ pkexec ۾ هڪ ٻيو ماحولياتي متغير کي متبادل ڪري سگهي ٿو، مثال طور، "LD_PRELOAD" ماحولياتي متغير کي متبادل بڻايو وڃي، جنهن کي سوڊ پروگرامن ۾ اجازت نه آهي، ۽ انهن جي گڏيل لائبريري کي لوڊ ڪرڻ لاء ترتيب ڏيو. عمل.

ڪم ڪندڙ استحصال ۾ شامل آهي GCONV_PATH متغير کي متبادل ڪرڻ، جيڪو استعمال ڪيو ويندو آهي رستي جو تعين ڪرڻ لاءِ علامت ٽرانسڪوڊنگ لائبريري، متحرڪ طور تي لوڊ ڪيو ويندو آهي جڏهن ڪال ڪري رهيو آهي g_printerr() فنڪشن، جنهن جو ڪوڊ استعمال ڪري ٿو iconv_open(). GCONV_PATH ۾ رستي کي ٻيهر بيان ڪندي، هڪ حملو ڪندڙ پڪ ڪري سگهي ٿو ته اها معياري iconv لائبريري نه آهي جيڪا لوڊ ڪئي وئي آهي، پر ان جي پنهنجي لائبريري، جن مان هينڊلر ان تي عمل ڪيو ويندو جڏهن اسٽيج تي هڪ غلطي پيغام ظاهر ٿيندو جڏهن pkexec اڃا تائين هلندڙ آهي. روٽ حق ۽ لانچ جي اجازتن کان پهريان چيڪ ٿيل آهن.

اهو نوٽ ڪيو ويو آهي ته ان حقيقت جي باوجود ته مسئلو ياداشت جي بدعنواني جي سبب آهي، اهو استعمال ٿيل هارڊويئر فن تعمير جي بغير قابل اعتماد ۽ بار بار استحصال ڪري سگهجي ٿو. تيار ڪيل استحصال Ubuntu، Debian، Fedora ۽ CentOS تي ڪاميابيءَ سان آزمايو ويو آھي، پر ٻين تقسيم تي پڻ استعمال ڪري سگھجي ٿو. اصل استحصال اڃا تائين عام طور تي دستياب ناهي، اهو ظاهر ڪري ٿو ته اهو ننڍڙو آهي ۽ ٻين محققن طرفان آساني سان ٻيهر ٺاهي سگهجي ٿو، تنهنڪري اهو ضروري آهي ته پيچ اپڊيٽ کي جلدي ممڪن طور تي ملائي يوزر سسٽم تي نصب ڪيو وڃي. Polkit BSD سسٽم ۽ سولاريس لاء پڻ دستياب آهي، پر انهن تي استعمال لاء اڀياس نه ڪيو ويو آهي. ڇا معلوم ٿئي ٿو ته حملو OpenBSD تي نه ٿو ڪري سگهجي، ڇاڪاڻ ته OpenBSD ڪنيال هڪ null argc ويل کي پاس ڪرڻ جي اجازت نه ڏيندو آهي جڏهن execve() سڏيو ويندو آهي.

مسئلو مئي 2009 کان وٺي موجود آهي، pkexec ڪمانڊ جي اضافي کان وٺي. PolKit جي ڪمزوري لاءِ حل في الحال هڪ پيچ جي طور تي دستياب آهي (ڪو به پيچ رليز نه ڪيو ويو آهي)، پر جڏهن کان ڊولپر ڊولپرز کي اڳ ۾ ئي مسئلي جي اطلاع ڏني وئي هئي، اڪثر تقسيم هڪ ئي وقت ۾ نقصان جي باري ۾ معلومات جي ظاهر ڪرڻ سان گڏ تازه ڪاري شايع ڪئي. مسئلو حل ڪيو ويو آهي RHEL 6/7/8، Debian، Ubuntu، openSUSE، SUSE، Fedora، ALT Linux، ROSA، Gentoo، Void Linux، Arch Linux ۽ Manjaro. خطري کي بلاڪ ڪرڻ لاءِ عارضي ماپ جي طور تي، توهان /usr/bin/pkexec پروگرام ("chmod 0755 /usr/bin/pkexec") مان SUID روٽ پرچم کي هٽائي سگهو ٿا.



جو ذريعو: opennet.ru

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