SWAPGS - یک آسیب پذیری جدید در مکانیسم اجرای گمانه زنی CPU

محققان از Bitdefender آشکار کرد آسیب پذیری جدید (CVE-2019-1125) در مکانیسم اجرای دستورات فرضی CPU های مدرن که SWAPGS نام دارد که با نام دستورالعمل پردازنده ایجاد کننده مشکل مطابقت دارد. آسیب پذیری اجازه می دهد تا به یک مهاجم غیرمجاز اجازه می دهد تا محتوای مناطق حافظه هسته یا ماشین های مجازی در حال اجرا را تعیین کند. مسئله تایید شده در پردازنده های اینتل (x86_64) و به طور جزئی تاثیر می گذارد پردازنده های AMD که بردار حمله اصلی برای آنها ظاهر نمی شود. روش‌های قبلی برای مقابله با آسیب‌پذیری‌های Spectre و Meltdown از حمله SWAPGS هنگام استفاده از پردازنده‌های اینتل محافظت نمی‌کنند، اما اصلاحاتی قبلاً برای Linux، ChromeOS، Android و Windows ارائه شده است.

این آسیب‌پذیری متعلق به کلاس Spectre v1 است و بر اساس ایده بازیابی داده‌ها از حافظه نهان پردازنده باقی‌مانده پس از اجرای گمانه‌زنی دستورالعمل‌ها است. برای بهبود عملکرد، واحدهای پیش‌بینی شاخه‌های CPUهای مدرن از اجرای پیشگیرانه برخی دستورالعمل‌ها استفاده می‌کنند که به احتمال زیاد اجرا می‌شوند، اما بدون انتظار برای محاسبه همه عواملی که اجرای آنها را تعیین می‌کنند (مثلاً زمانی که شرایط شاخه یا پارامترهای دسترسی وجود ندارد). هنوز محاسبه شده است). اگر پیش‌بینی تأیید نشود، پردازنده نتیجه اجرای حدس‌زنی را کنار می‌گذارد، اما داده‌های پردازش شده در طول آن در حافظه پنهان پردازنده باقی می‌ماند و می‌توان با استفاده از روش‌هایی برای تعیین محتوای حافظه پنهان از طریق کانال‌های جانبی، با تجزیه و تحلیل تغییر در دسترسی، آن را بازیابی کرد. زمان برای داده های کش و غیر کش.

ویژگی حمله جدید استفاده از نشتی است که در حین اجرای گمانه زنی دستور SWAPGS رخ می دهد، که در سیستم عامل ها برای جایگزینی مقدار ثبات GS هنگام عبور کنترل از فضای کاربر به هسته سیستم عامل (GS) استفاده می شود. مقدار استفاده شده در فضای کاربر با مقدار استفاده شده در طول عملیات در هسته جایگزین می شود. در هسته لینوکس، GS یک اشاره‌گر per_cpu را که برای دسترسی به داده‌های هسته استفاده می‌شود، ذخیره می‌کند و فضای کاربر اشاره‌گرها را به TLS (ذخیره‌سازی محلی رشته) ذخیره می‌کند.

برای جلوگیری از دوبار فراخوانی دستورالعمل SWAPGS هنگام دسترسی مجدد به هسته از فضای هسته یا هنگام اجرای کدی که نیازی به تغییر رجیستر GS ندارد، قبل از دستور یک بررسی و یک شاخه شرطی انجام می شود. موتور اجرای گمانه زنی به طور پیشگیرانه با دستور SWAPGS بدون انتظار برای نتیجه بررسی اقدام به اجرای کد می کند و در صورت تایید نشدن شعبه انتخابی، نتیجه را کنار می گذارد. بنابراین، زمانی ممکن است که شاخه‌ای که اجرای SWAPGS را در بر نمی‌گیرد، به‌طور فرضی انتخاب شود، اما در حین اجرای حدسی، مقدار ثبات GS توسط دستورالعمل SWAPGS تغییر می‌کند و در عملیات حافظه وابسته که در حافظه نهان CPU ختم می‌شود، استفاده می‌شود.

محققان دو سناریوی حمله را پیشنهاد کرده‌اند که نمونه‌های اولیه اکسپلویت برای آن‌ها آماده شده است. سناریوی اول بر اساس وضعیتی است که دستور SWAPGS به صورت فرضی اجرا نمی شود، اگرچه در واقع در اجرا استفاده می شود، و سناریوی دوم برعکس است، زمانی که دستورالعمل SWAPGS به صورت فرضی اجرا می شود، اگرچه در واقع نباید اجرا شود. برای هر سناریو، دو گزینه برای بهره برداری وجود دارد: مهاجم می تواند مقدار را در یک آدرس خاص در ناحیه هسته تعیین کند، و مهاجم می تواند یک مقدار خاص را در آدرس های تصادفی در هسته جستجو کند. انجام یک حمله زمان زیادی می برد و ممکن است اکسپلویت چندین ساعت طول بکشد تا نشت کامل شود.

مشکلی در هسته لینوکس وجود دارد حذف شده است با تغییر منطق فراخوانی دستور SWAPGS (مسدود کردن اجرای گمانه‌زنی)، مشابه اصلاح سایر آسیب‌پذیری‌های کلاس Spectre v1. انتظار می رود حفاظت اضافه شده حداقل تاثیری بر عملکرد بارهای کاری معمولی داشته باشد. تأخیر در طول فاز سوئیچینگ بین کاربر و فضای هسته رخ می‌دهد، که می‌تواند منجر به عملکرد ضعیف شود، به عنوان مثال، زمانی که سیستم تماس سنگینی از برنامه وجود دارد یا تولید مکرر NMI و وقفه وجود دارد.

رفع نیاز به نصب به‌روزرسانی هسته در هر دو محیط سیستم میزبان و مهمان و به دنبال آن راه‌اندازی مجدد سیستم دارد. برای غیرفعال کردن محافظت در لینوکس، می توان از گزینه "nospectre_v1" استفاده کرد که اقدامات مربوط به مسدود کردن آسیب پذیری SWAPGS را نیز غیرفعال می کند. تعمیر به صورت موجود است پچ برای هسته لینوکس، که قبلاً در نسخه ها گنجانده شده است 4.19.65, 5.2.7، 4.14.137، 4.9.188 و 4.4.188. به روز رسانی برای توزیع های لینوکس هنوز منتشر نشده است (دبیان, ریل, کلاه نمدی مردانه, قوس لینوکس, SUSE/openSUSE, اوبونتو). در ویندوز، مشکل بی سر و صدا حل شد به روز رسانی جولای. شرکت گوگل تهیه شده رفع مشکل هسته 4.19 با سیستم عامل Chrome و آندروید.

به گفته محققان Bitdefender، اینتل در آگوست سال گذشته از این مشکل مطلع شد. تصمیم گرفته شد که این مشکل به صورت برنامه‌نویسی برطرف شود، که توسعه‌دهندگان مایکروسافت، گوگل و هسته لینوکس درگیر توسعه هماهنگ یک اصلاح بودند. به دلیل عدم پشتیبانی از دستورالعمل WRGSBASE مورد استفاده در اکسپلویت، حمله به پردازنده های قدیمی اینتل، قبل از Ivy Bridge، بسیار دشوارتر است. سیستم های ARM، POWER، SPARC، MIPS و RISC-V تحت تأثیر این مشکل قرار نمی گیرند زیرا از دستورالعمل SWAPGS پشتیبانی نمی کنند.

این مشکل عمدتا بر صاحبان پردازنده های اینتل تأثیر می گذارد -
در سیستم‌های AMD، تنها سناریوی حمله دوم می‌تواند بازتولید شود، که محدود به پردازش حدسی ارزش پایه ثبت GS است که می‌تواند برای جستجوی مقادیر خاص در مناطق حافظه تصادفی استفاده شود. برای مسدود کردن این گزینه حمله کافی است روش های موجود حفاظت در برابر Spectre v1.

منبع: opennet.ru

اضافه کردن نظر