محققان موسسه فناوری ماساچوست (MIT) تکنیک حمله TONTOU (زمان خنثیسازی تا زمان استفاده) را شناسایی کردهاند که روش جدیدی برای سوءاستفاده از آسیبپذیریهای ریزمعماری در کلاس Spectre v2 ارائه میدهد. این آسیبپذیری اجازه میدهد تا محتویات حافظه هسته هنگام اجرای یک بهرهبرداری در فضای کاربر تعیین شود. کدی برای جلوگیری از سوءاستفاده از این آسیبپذیری در هسته ادغام شده است. Linux ۵ آگوست و در نسخههای ۷.۱.۷، ۶.۱۸.۴۳، ۶.۱۲.۱۰۲، ۶.۶.۱۴۹، ۶.۱.۱۸۱، ۵.۱۵.۲۱۴ و ۵.۱۰.۲۶۳ گنجانده شده است.
محققان امکانسنجی یک حمله محلی و بدون امتیاز را برای تعیین هش رمز عبور کاربر ریشه که در فایل /etc/shadow ذخیره شده و در حین احراز هویت سیستم در حافظه بارگذاری شده است، نشان دادند. محققان با موفقیت دادهها را از حافظه هسته با سرعت ۵.۴۷ بایت در ثانیه و دقت ۹۱.۹۷٪ نشت دادند. از ۱۰ اجرای آزمایشی این بهرهبرداری که به طور متوسط ۱۸ دقیقه طول کشید، نیمی از زمان با موفقیت وجود فایل /etc/shadow را در حافظه تشخیص داده و محتویات آن را استخراج کردند.
این سوءاستفاده روی سیستمهایی با پردازندههای AMD نشان داده شده است و میتواند روی پردازندههای AMD خانوادههای Zen 1-4 نیز مورد استفاده قرار گیرد. این حمله روی سیستمهای اینتل نیز امکانپذیر است، اما سوءاستفاده از آن پیچیدهتر است. برای محافظت در برابر سرریزهای پشته بازگشتی و مسدود کردن آسیبپذیری SRSO (Speculative Return Stack Overflow)، پردازندههای AMD از مکانیسم حفاظتی Safe-RET استفاده میکنند که پس از هر بار استفاده، بافر پیشبینی شاخه را پاک میکند و پنجره حمله را به دو دستورالعمل اجرا شده در عرض چند ده نانوثانیه محدود میکند.
برای دور زدن این محافظت و گسترش پنجره حمله، یک تکنیک کاهش سرعت CPU پیادهسازی شد که امکان جایگزینی وقفه در لحظه مناسب را برای تغییر مسیر جریان اجرا در هسته و استفاده از یک کنترلکننده وقفه برای خراب کردن ورودیها در بافر پیشبینی شاخه فراهم میکند. برای سوءاستفاده از آسیبپذیری SRSO، یک مهاجم میتواند شرایطی ایجاد کند که واحد پیشبینی شاخه به صورت گمانهزنی تعداد زیادی از فراخوانیهای CALL نادرست پیشبینیشده را اجرا کند، که برای سرریز پشته آدرس برگشت و بازنویسی نقاط برگشت درست پیشبینیشده واقع در ابتدای پشته کافی است. در نتیجه، عناصر پشته اولیه میتوانند با مقادیر انتخابشده توسط مهاجم بازنویسی شوند، که متعاقباً منجر به استفاده از این مقادیر جایگزینشده در طول اجرای گمانهزنی یک دستورالعمل RET در متن فرآیند دیگری میشود.
پردازنده تشخیص میدهد که پیشبینی انشعاب نادرست بوده و عملیات را به حالت اولیه برمیگرداند، اما دادههای پردازششده در طول اجرای حدسی در حافظه پنهان و بافرهای ریزمعماری باقی میمانند. اگر بلوکی که به اشتباه اجرا شده است به حافظه دسترسی پیدا کند، اجرای حدسی آن نیز منجر به باقی ماندن دادههای خواندهشده از حافظه در حافظه پنهان مشترک میشود. برای بازیابی اطلاعات از حافظه پنهان، میتوان از روشی برای تعیین محتوای حافظه پنهان بر اساس تجزیه و تحلیل تغییرات در زمانهای دسترسی برای دادههای ذخیرهشده و ذخیرهنشده استفاده کرد.
منبع: opennet.ru
