Python ۾ ڪمزوري جيڪا اجازت ڏئي ٿي ته سسٽم ڪمانڊ کي الڳ ٿيل اسڪرپٽ مان سڏڻ جي

پٿون ۾ الڳ ٿيل ڪوڊ ايگزيڪيوشن سسٽم کي بائي پاس ڪرڻ لاءِ هڪ طريقو شايع ڪيو ويو آهي، هڪ ڊگھي ڄاتل بگ جي استعمال جي بنياد تي جيڪو پٿون 2.7 ۾ ظاهر ٿيو، 2012 ۾ سڃاڻپ ڪيو ويو ۽ اڃا تائين پٿون 3 ۾ درست نه ڪيو ويو آهي. بگ خاص طور تي ڳنڍيل استعمال ڪرڻ جي اجازت ڏئي ٿو. پٿون ڪوڊ ڪال شروع ڪرڻ لاءِ اڳ ۾ ئي آزاد ٿيل ميموري (استعمال کان پوءِ-مفت) پٿون ۾. شروعات ۾، اهو فرض ڪيو ويو هو ته غلطي هڪ سيڪيورٽي خطرو پيدا نه ڪيو آهي ۽ صرف تمام نادر ڪيسن ۾، عام طور تي مصنوعي طور تي ٺاهيل، رسم الخط جي غير معمولي ختم ٿيڻ جي ڪري سگھي ٿي.

تخلص kn32 جي تحت هڪ سيڪيورٽي محقق هن مسئلي ۾ دلچسپي ورتي ۽ هڪ ڪم ڪندڙ استحصال تيار ڪرڻ جو انتظام ڪيو جيڪو ڪنهن به سسٽم ڪمانڊ کي ڪال ڪرڻ ممڪن بڻائي ٿو بغير طريقن جهڙوڪ os.system. استحصال خالص پٿون ۾ لاڳو ڪيو ويو آهي ۽ ڪم ڪري ٿو بغير ٻاهرين لائبريرين کي درآمد ڪرڻ ۽ انسٽال ڪرڻ کان سواءِ “ڪوڊ.__نيو__” هينڊلر. ٿلهن مان، صرف "builtin.__id__" استعمال ڪيو ويندو آهي، جيڪو عام طور تي منع ٿيل ناهي. عملي پاسي، تجويز ڪيل ڪوڊ مختلف خدمتن ۽ ماحولن (مثال طور، سکيا واري ماحول ۾، آن لائن شيلز، بلٽ ان هينڊلر وغيره) ۾ آئسوليشن ميڪنزم کي نظرانداز ڪرڻ لاءِ استعمال ڪري سگھجي ٿو، جيڪي پٿون ڪوڊ جي عمل جي اجازت ڏين ٿا، پر ان کي محدود ڪن ٿا. دستياب ڪالز ۽ ڪال طريقن جي اجازت نه ڏيو جهڙوڪ os.system.

تجويز ڪيل ڪوڊ os.system ڪال جو هڪ اينالاگ آهي، جيڪو ڪم ڪري ٿو CPython ۾ ڪمزوريءَ جو استحصال ڪندي. استحصال Python 3 جي سڀني نسخن سان سسٽم تي x86-64 آرڪيٽيڪچر سان ڪم ڪري ٿو ۽ Ubuntu 22.04 تي مستحڪم آپريشن کي ظاهر ڪري ٿو، جيتوڻيڪ جڏهن PIE، RELRO ۽ CET تحفظ جا طريقا فعال آهن. ڪم هيٺ اچي ٿو پٿون ڪوڊ مان معلومات حاصل ڪرڻ لاءِ ايگزيڪيوٽوبل CPython ڪوڊ ۾ هڪ فنڪشن جي ايڊريس بابت. هن ايڊريس جي بنياد تي، ميموري ۾ CPython جو بنيادي پتو ۽ ميموري ۾ لوڊ ٿيل libc مثال ۾ سسٽم() فنڪشن جو پتو حساب ڪيو ويو آهي. آخر ۾، هڪ مخصوص سسٽم ايڊريس ڏانهن سڌي منتقلي شروع ڪئي وئي آهي پوائنٽر جي متبادل سان پهرين دليل جي ليڪ ڏانهن "/bin/sh".

Python ۾ ڪمزوري جيڪا اجازت ڏئي ٿي ته سسٽم ڪمانڊ کي الڳ ٿيل اسڪرپٽ مان سڏڻ جي


جو ذريعو: opennet.ru

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