مهيم - ميموري بٽ ڪرپشن جو حملو سوڊو ۽ اوپن ايس ايس ايڇ جي تصديق کي نظرانداز ڪرڻ لاءِ

Worcester Polytechnic Institute (USA) جي محققن هڪ نئين قسم جي ميهيم حملي کي متعارف ڪرايو آهي جيڪو Rowhammer dynamic random access memory bit distortion ٽيڪنيڪي استعمال ڪري ٿو ته جيئن پروگرام ۾ پرچم جي طور تي استعمال ٿيندڙ اسٽيڪ ويريبلز جي قدرن کي تبديل ڪرڻ لاءِ اهو فيصلو ڪيو وڃي ته ڇا تصديق ۽ سيڪيورٽي چيڪ آهن. گذري ويو حملي جا عملي مثال SUDO، OpenSSH ۽ MySQL ۾ تصديق کي نظرانداز ڪرڻ سان گڏوگڏ OpenSSL لائبريري ۾ سيڪيورٽي سان لاڳاپيل چيڪن جي نتيجن کي تبديل ڪرڻ لاءِ ڏيکاريا ويا آهن.

حملو انهن ايپليڪيشنن تي لاڳو ٿي سگهي ٿو جيڪي قدرن جو مقابلو ڪرڻ لاءِ چيڪ استعمال ڪن ٿيون جيڪي صفر کان مختلف آهن. خطرناڪ ڪوڊ جو مثال: int auth = 0؛ ... // تصديق ڪوڊ جيڪو ڪامياب تصديق جي صورت ۾ تصديق جي قيمت کي تبديل ڪري ٿو if(auth != 0) AUTH_SUCCESS واپسي؛ ٻيو واپس AUTH_FAILURE؛

هن مثال جي حوالي سان، هڪ ڪامياب حملي لاء اهو ڪافي آهي ته ڪنهن به بٽ کي خراب ڪرڻ لاء ميموري ۾ 32-bit auth variable سان لاڳاپيل اسٽيڪ تي. جيڪڏهن متغير ۾ ڪا به بٽ خراب ٿي وئي آهي، قيمت هاڻي صفر نه هوندي ۽ مشروط آپريٽر تصديق جي ڪامياب مڪمل ٿيڻ جو اندازو لڳائيندو. اهڙي تصديق جا نمونا ايپليڪيشنن ۾ ڪافي عام آهن ۽ مليا آهن، مثال طور، SUDO، OpenSSH، MySQL ۽ OpenSSL ۾.

مهيم - سوڊو ۽ اوپن ايس ايس ايڇ جي تصديق کي بائي پاس ڪرڻ لاءِ ميموري بٽ مينگلنگ حملو

حملي کي فارم جي مقابلي ۾ پڻ لاڳو ڪري سگھجي ٿو "if(auth == 1)"، پر هن صورت ۾ ان تي عمل درآمد وڌيڪ پيچيده ٿي ويندو آهي، ڇاڪاڻ ته اهو ضروري آهي ته 32 جي ڪنهن به بٽ کي خراب نه ڪيو وڃي، پر آخري ساٽ. اهو طريقو پروسيسر رجسٽرز ۾ متغيرن جي قدرن تي اثر انداز ڪرڻ لاءِ پڻ استعمال ڪري سگهجي ٿو، ڇو ته رجسٽرن جو مواد عارضي طور تي اسٽيڪ تي فليش ٿي سگهي ٿو جڏهن ڪو حوالو سوئچ، فنڪشن ڪال، يا سگنل هينڊلر فائر ٿئي ٿو. وقت جي عرصي دوران جڏهن رجسٽر ويل ياداشت ۾ هوندا آهن، تحريف هن ميموري ۾ متعارف ڪرائي سگھجن ٿيون ۽ تبديل ٿيل قدر کي رجسٽر ۾ بحال ڪيو ويندو.

مهيم - سوڊو ۽ اوپن ايس ايس ايڇ جي تصديق کي بائي پاس ڪرڻ لاءِ ميموري بٽ مينگلنگ حملو

بٽ کي خراب ڪرڻ لاء، RowHammer طبقي جي حملي جي تبديلين مان هڪ استعمال ڪيو ويندو آهي. جيئن ته DRAM ميموري سيلز جي هڪ ٻه طرفي صف آهي، هر هڪ ڪيپيسيٽر ۽ هڪ ٽرانزيسٽر تي مشتمل آهي، ساڳئي ميموري واري علائقي کي مسلسل پڙهڻ جي نتيجي ۾ وولٹیج جي وهڪري ۽ انوماليز جو نتيجو آهي جيڪو پاڙيسري سيلن ۾ چارج جي ننڍڙي نقصان جو سبب بڻائيندو آهي. جيڪڏهن پڙهڻ جي شدت وڌيڪ آهي، ته پوءِ پاڙيسري سيل ڪافي وڏي مقدار ۾ چارج وڃائي سگهي ٿو ۽ ايندڙ ٻيهر پيدا ٿيڻ واري چڪر کي پنهنجي اصل حالت کي بحال ڪرڻ جو وقت نه هوندو، جيڪو سيل ۾ محفوظ ڪيل ڊيٽا جي قدر ۾ تبديلي آڻيندو. . RowHammer جي خلاف بچائڻ لاء، چپ ٺاهيندڙن هڪ TRR (ٽارگٽ رو ريفريش) ميڪانيزم شامل ڪيو آهي، جيڪو خاص ڪيسن ۾ سيل ڪرپشن کي بلاڪ ڪري ٿو، پر سڀني ممڪن حملي جي مختلف حالتن جي خلاف حفاظت نٿو ڪري.

ميهيم جي حملي کان بچائڻ لاءِ، ان کي استعمال ڪرڻ جي صلاح ڏني وئي آهي مقابلي ۾ صفر کان فرق جي تشخيص يا هڪ سان اتفاق نه، پر غير صفر آڪٽٽس سان بي ترتيب ٻج جي قيمت کي استعمال ڪندي ميچ چيڪ ڪيو وڃي. انهي حالت ۾، متغير جي گهربل قيمت مقرر ڪرڻ لاء، ضروري آهي ته بٽ جي هڪ اهم تعداد کي درست طور تي مسخ ڪيو وڃي، جيڪو هڪ بٽ جي تحريف جي ابتڙ، غير حقيقي آهي. غير حملي واري ڪوڊ جو مثال: int auth = 0xbe406d1a؛ ... // تصديقي ڪوڊ جيڪو تصديق جي قيمت کي 0x23ab8701 تي سيٽ ڪري ٿو ڪامياب تصديق جي صورت ۾ جيڪڏهن (auth == 0x23ab8701) واپسي AUTH_SUCCESS؛ ٻيو واپس AUTH_FAILURE؛

مخصوص تحفظ جو طريقو اڳ ۾ ئي استعمال ڪيو ويو آهي سوڊو ڊولپرز ۽ رليز 1.9.15 ۾ شامل ڪيو ويو جيئن ته CVE-2023-42465 جي ڪمزوري جي حل لاءِ. اهي اهم نقصانڪار منصوبن کي درست ڪرڻ کان پوءِ حملي کي انجام ڏيڻ لاءِ ڪوڊ جو هڪ پروٽوٽائپ شايع ڪرڻ جو ارادو رکن ٿا.

جو ذريعو: opennet.ru

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