دو حمله به مکانیسم پیشبینی کانال کش در پردازندههای AMD
گروهی از محققان دانشگاه فنی گراتس (اتریش) که قبلاً به دلیل توسعه روش های حمله شناخته شده بودند MDS, NetSpectre, چکش پرتابی и ZombieLoad، تحقیقاتی را در مورد بهینه سازی سخت افزاری خاص پردازنده های AMD و گسترش یافته دو روش جدید حملات کانال جانبی که نشت داده ها را در حین عملکرد مکانیسم پیش بینی کانال کش LXNUMX پردازنده های AMD دستکاری می کنند. این تکنیکها را میتوان برای کاهش اثربخشی حفاظت ASLR، بازیابی کلیدها در پیادهسازیهای آسیبپذیر AES و افزایش اثربخشی حمله Spectre استفاده کرد.
مشکلات در اجرای مکانیسم پیشبینی کانال (پیشبینیکننده راه) در حافظه پنهان داده سطح اول CPU (L1D) شناسایی شد، که برای پیشبینی اینکه کدام کانال کش حاوی یک آدرس حافظه خاص است، استفاده میشود. بهینه سازی مورد استفاده در پردازنده های AMD بر اساس بررسی μ-tag (μTag) است. μTag با اعمال یک تابع هش خاص به آدرس مجازی محاسبه می شود. در حین کار، موتور پیش بینی کانال از μTag برای تعیین کانال کش از جدول استفاده می کند. بنابراین، μTag به پردازنده اجازه می دهد تا خود را به دسترسی به یک کانال خاص، بدون جستجو در میان گزینه ها، محدود کند، که مصرف انرژی CPU را به میزان قابل توجهی کاهش می دهد.
در طی مهندسی معکوس اجرای سیستم پیشبینی کانال در نسلهای مختلف پردازندههای AMD که از سال 2011 تا 2019 عرضه شدند، دو تکنیک جدید حمله کانال جانبی شناسایی شد:
Collide+Probe - به مهاجم اجازه می دهد تا دسترسی به حافظه را برای فرآیندهایی که روی همان هسته منطقی CPU اجرا می شوند ردیابی کند. ماهیت روش استفاده از آدرس های مجازی است که باعث برخورد در تابع هش می شود که برای محاسبه μTag برای ردیابی دسترسی به حافظه استفاده می شود. برخلاف حملات Flush+Reload و Prime+Probe که در پردازندههای اینتل استفاده میشوند، Collide+Probe از حافظه مشترک استفاده نمیکند و بدون اطلاع از آدرسهای فیزیکی کار میکند.
Load+Reload - به شما این امکان را می دهد تا ردیابی های دسترسی به حافظه را در همان هسته فیزیکی CPU به دقت تعیین کنید. این روش مبتنی بر این واقعیت است که یک سلول حافظه فیزیکی فقط یک بار می تواند در حافظه نهان L1D باشد. آن ها دسترسی به سلول حافظه مشابه در یک آدرس مجازی دیگر باعث می شود سلول از حافظه نهان L1D خارج شود و امکان ردیابی دسترسی حافظه را فراهم می کند. اگرچه حمله به حافظه مشترک متکی است، اما خطوط کش را پاک نمیکند و به حملات مخفیانه اجازه میدهد که دادهها را از حافظه پنهان سطح آخر خارج نمیکنند.
بر اساس تکنیکهای Collide+Probe و Load+Reload، محققان چندین سناریو حمله کانال جانبی را نشان دادهاند:
امکان استفاده از روشهایی برای سازماندهی یک کانال ارتباطی غیرمستقیم پنهان بین دو فرآیند، که امکان انتقال دادهها را تا سرعت ۵۸۸ کیلوبایت در ثانیه فراهم میکند، نشان داده شده است.
با استفاده از برخورد در μTag، کاهش آنتروپی برای انواع مختلف ASLR (تصادفی سازی طرح بندی فضای آدرس) و دور زدن حفاظت ASLR در هسته در یک سیستم لینوکس کاملاً به روز شده امکان پذیر شد. امکان انجام یک حمله برای کاهش آنتروپی ASLR هم از برنامه های کاربر و هم با استفاده از کد جاوا اسکریپت اجرا شده در یک محیط سندباکس و کد در حال اجرا در محیط مهمان دیگر نشان داده شده است.
بر اساس روش Collide+Probe، یک حمله برای بازیابی کلید رمزگذاری از یک پیاده سازی آسیب پذیر (بر اساس تی میز) رمزگذاری AES.
با استفاده از روش Collide+Probe به عنوان کانال جمع آوری داده، حمله Spectre قادر به استخراج داده های خصوصی از هسته بدون استفاده از حافظه مشترک بود.
این آسیب پذیری در پردازنده های AMD بر اساس ریزمعماری رخ می دهد
بولدوزر، Piledriver، Steamroller، Zen (Ryzen، Epic)، Zen+ و Zen2.
AMD در 23 آگوست 2019 از این مشکل مطلع شد، اما تاکنون گزارش را منتشر نکرد با اطلاعاتی در مورد مسدود کردن آسیب پذیری. به گفته محققان، این مشکل را می توان در سطح به روز رسانی میکروکد با ارائه بیت های MSR برای غیرفعال کردن انتخابی سیستم پیش بینی کانال، مشابه کاری که اینتل برای کنترل غیرفعال کردن مکانیسم های پیش بینی شاخه انجام داد، مسدود کرد.