محققان از Bitdefender
این آسیبپذیری متعلق به کلاس Spectre v1 است و بر اساس ایده بازیابی دادهها از حافظه نهان پردازنده باقیمانده پس از اجرای گمانهزنی دستورالعملها است. برای بهبود عملکرد، واحدهای پیشبینی شاخههای CPUهای مدرن از اجرای پیشگیرانه برخی دستورالعملها استفاده میکنند که به احتمال زیاد اجرا میشوند، اما بدون انتظار برای محاسبه همه عواملی که اجرای آنها را تعیین میکنند (مثلاً زمانی که شرایط شاخه یا پارامترهای دسترسی وجود ندارد). هنوز محاسبه شده است). اگر پیشبینی تأیید نشود، پردازنده نتیجه اجرای حدسزنی را کنار میگذارد، اما دادههای پردازش شده در طول آن در حافظه پنهان پردازنده باقی میماند و میتوان با استفاده از روشهایی برای تعیین محتوای حافظه پنهان از طریق کانالهای جانبی، با تجزیه و تحلیل تغییر در دسترسی، آن را بازیابی کرد. زمان برای داده های کش و غیر کش.
ویژگی حمله جدید استفاده از نشتی است که در حین اجرای گمانه زنی دستور SWAPGS رخ می دهد، که در سیستم عامل ها برای جایگزینی مقدار ثبات GS هنگام عبور کنترل از فضای کاربر به هسته سیستم عامل (GS) استفاده می شود. مقدار استفاده شده در فضای کاربر با مقدار استفاده شده در طول عملیات در هسته جایگزین می شود. در هسته لینوکس، GS یک اشارهگر per_cpu را که برای دسترسی به دادههای هسته استفاده میشود، ذخیره میکند و فضای کاربر اشارهگرها را به TLS (ذخیرهسازی محلی رشته) ذخیره میکند.
برای جلوگیری از دوبار فراخوانی دستورالعمل SWAPGS هنگام دسترسی مجدد به هسته از فضای هسته یا هنگام اجرای کدی که نیازی به تغییر رجیستر GS ندارد، قبل از دستور یک بررسی و یک شاخه شرطی انجام می شود. موتور اجرای گمانه زنی به طور پیشگیرانه با دستور SWAPGS بدون انتظار برای نتیجه بررسی اقدام به اجرای کد می کند و در صورت تایید نشدن شعبه انتخابی، نتیجه را کنار می گذارد. بنابراین، زمانی ممکن است که شاخهای که اجرای SWAPGS را در بر نمیگیرد، بهطور فرضی انتخاب شود، اما در حین اجرای حدسی، مقدار ثبات GS توسط دستورالعمل SWAPGS تغییر میکند و در عملیات حافظه وابسته که در حافظه نهان CPU ختم میشود، استفاده میشود.
محققان دو سناریوی حمله را پیشنهاد کردهاند که نمونههای اولیه اکسپلویت برای آنها آماده شده است. سناریوی اول بر اساس وضعیتی است که دستور SWAPGS به صورت فرضی اجرا نمی شود، اگرچه در واقع در اجرا استفاده می شود، و سناریوی دوم برعکس است، زمانی که دستورالعمل SWAPGS به صورت فرضی اجرا می شود، اگرچه در واقع نباید اجرا شود. برای هر سناریو، دو گزینه برای بهره برداری وجود دارد: مهاجم می تواند مقدار را در یک آدرس خاص در ناحیه هسته تعیین کند، و مهاجم می تواند یک مقدار خاص را در آدرس های تصادفی در هسته جستجو کند. انجام یک حمله زمان زیادی می برد و ممکن است اکسپلویت چندین ساعت طول بکشد تا نشت کامل شود.
مشکلی در هسته لینوکس وجود دارد
رفع نیاز به نصب بهروزرسانی هسته در هر دو محیط سیستم میزبان و مهمان و به دنبال آن راهاندازی مجدد سیستم دارد. برای غیرفعال کردن محافظت در لینوکس، می توان از گزینه "nospectre_v1" استفاده کرد که اقدامات مربوط به مسدود کردن آسیب پذیری SWAPGS را نیز غیرفعال می کند. تعمیر به صورت موجود است
به گفته محققان Bitdefender، اینتل در آگوست سال گذشته از این مشکل مطلع شد. تصمیم گرفته شد که این مشکل به صورت برنامهنویسی برطرف شود، که توسعهدهندگان مایکروسافت، گوگل و هسته لینوکس درگیر توسعه هماهنگ یک اصلاح بودند. به دلیل عدم پشتیبانی از دستورالعمل WRGSBASE مورد استفاده در اکسپلویت، حمله به پردازنده های قدیمی اینتل، قبل از Ivy Bridge، بسیار دشوارتر است. سیستم های ARM، POWER، SPARC، MIPS و RISC-V تحت تأثیر این مشکل قرار نمی گیرند زیرا از دستورالعمل SWAPGS پشتیبانی نمی کنند.
این مشکل عمدتا بر صاحبان پردازنده های اینتل تأثیر می گذارد -
در سیستمهای AMD، تنها سناریوی حمله دوم میتواند بازتولید شود، که محدود به پردازش حدسی ارزش پایه ثبت GS است که میتواند برای جستجوی مقادیر خاص در مناطق حافظه تصادفی استفاده شود. برای مسدود کردن این گزینه حمله
منبع: opennet.ru