میهیم - د سوډو او اوپن ایس ایس ایچ تصدیق بای پاس کولو لپاره د حافظې بټ فساد برید

د Worcester پولی تخنیک انسټیټیوټ (USA) څیړونکو د میهیم برید نوی ډول معرفي کړی چې د Rowhammer متحرک تصادفي لاسرسي حافظې بټ تحریف تخنیک کاروي ترڅو په برنامه کې د بیرغونو په توګه کارول شوي سټیک متغیرونو ارزښتونه بدل کړي ترڅو پریکړه وکړي چې ایا تصدیق او امنیت چیکونه لري. تېر شو د برید عملي مثالونه ښودل شوي چې په SUDO، OpenSSH او MySQL کې د تصدیق کولو مخه ونیسي، او همدارنګه د OpenSSL کتابتون کې د امنیت اړوند چکونو پایلې بدل کړي.

برید په غوښتنلیکونو کې پلي کیدی شي چې د ارزښتونو پرتله کولو لپاره چکونه کاروي چې له صفر څخه توپیر لري. د زیان منونکي کوډ بیلګه: int auth = 0; ... // د تایید کوډ چې د بریالي تصدیق په صورت کې د اعتبار ارزښت بدلوي که (auth!= 0) بیرته راګرځي AUTH_SUCCESS؛ نور بیرته AUTH_FAILURE؛

د دې مثال په شرایطو کې ، د بریالي برید لپاره دا کافي دی چې په سټیک کې د 32-bit auth متغیر سره تړلي حافظه کې کوم بټ فاسد کړي. که چیرې په متغیر کې کوم بټ فاسد وي، نو ارزښت به نور صفر نه وي او مشروط آپریټر به د تصدیق بریالي بشپړیدل وټاکي. دا ډول تایید نمونې په غوښتنلیکونو کې خورا عام دي او موندل کیږي، د بیلګې په توګه، په SUDO، OpenSSH، MySQL او OpenSSL کې.

میهیم - د سوډو او اوپن ایس ایس ایچ تصدیق بای پاس کولو لپاره د حافظې بټ فساد برید

برید د "if(auth == 1)" فورمې پرتله کولو لپاره هم پلي کیدی شي ، مګر پدې حالت کې پلي کول خورا پیچلي کیږي ، ځکه چې دا اړینه ده چې د 32 بټ نه ، مګر وروستی بټ تحریف کړئ. دا میتود د پروسیسر راجسترونو کې د متغیرونو ارزښتونو اغیزه کولو لپاره هم کارول کیدی شي ، ځکه چې د راجستر مینځپانګې په موقتي ډول په سټیک کې فلش کیدی شي کله چې د شرایطو سویچ ، فنکشن کال ، یا سیګنال هینډلر ډزې کوي. د وخت په جریان کې پداسې حال کې چې د راجسټر ارزښتونه په حافظه کې وي ، تحریفونه پدې حافظه کې معرفي کیدی شي او بدل شوی ارزښت به راجسټر ته بیرته راستون شي.

میهیم - د سوډو او اوپن ایس ایس ایچ تصدیق بای پاس کولو لپاره د حافظې بټ فساد برید

د بټونو مسخ کولو لپاره، د RowHammer ټولګي برید یو له تعدیلاتو څخه کارول کیږي. څرنګه چې د DRAM حافظه د حجرو دوه اړخیزه لړۍ ده، هر یو د کیپسیټر او ټرانزیسټور څخه جوړ دی، د ورته حافظې سیمې په دوامداره توګه لوستل ترسره کول د ولتاژ بدلونونو او انډولیزونو پایله لري چې په ګاونډیو حجرو کې د لږ چارج د ضایع کیدو لامل کیږي. که د لوستلو شدت لوړ وي، نو ګاونډی حجره ممکن په کافي اندازه لوی چارج له لاسه ورکړي او د بیا تولید راتلونکی دوره به د خپل اصلي حالت بیرته راګرځولو لپاره وخت ونلري، چې دا به په حجره کې د ذخیره شوي معلوماتو ارزښت کې د بدلون لامل شي. . د RowHammer په وړاندې د ساتنې لپاره، د چپ جوړونکو د TRR (Target Row Refresh) میکانیزم اضافه کړی، کوم چې په ځانګړو قضیو کې د سیل فساد مخه نیسي، مګر د ټولو احتمالي برید توپیرونو په وړاندې ساتنه نه کوي.

د میهیم برید په وړاندې د ساتنې لپاره، دا سپارښتنه کیږي چې په پرتله کولو کې وکارول شي د صفر څخه د توپیرونو ارزونه یا د یو سره تصادف نه بلکه د غیر صفر اوکټیټ سره د تصادفي تخم ارزښت په کارولو سره د میچ چیک. په دې حالت کې، د متغیر مطلوب ارزښت ټاکلو لپاره، دا اړینه ده چې د پام وړ شمیر بټونه په سمه توګه تحریف کړي، کوم چې غیر واقعیت لري، د یو بټ تحریف برعکس. د نه برید کوډ بیلګه: int auth = 0xbe406d1a; ... // د تایید کوډ چې د اعتبار ارزښت 0x23ab8701 ته ټاکي د بریالي تصدیق په صورت کې که (auth == 0x23ab8701) بیرته راشي AUTH_SUCCESS؛ نور بیرته AUTH_FAILURE؛

د محافظت مشخص شوی میتود دمخه د سوډو پراختیا کونکو لخوا کارول شوی او د CVE-1.9.15-2023 زیان مننې لپاره د حل په توګه په 42465 خوشې کولو کې شامل شوی. دوی پلان لري چې د برید ترسره کولو لپاره د کوډ پروټوټایپ خپور کړي وروسته له دې چې اصلي زیان منونکو پروژو ته اصلاحات ورکړل شي.

سرچینه: opennet.ru

Add a comment