intel
۵ اردیبهشت ۱۳۹۷

آسیب‌پذیری BranchScope بر روی پردازنده‌های اینتل

با توجه به حملات meltdown ،spectre وAMT که در ماه­های اخیر روی پردازنده­های اینتل صورت گرفته حساسیت روی این پردازنده­ها بیشتر از قبل شده است. با وجود اینکه هنوز آسیب پذیری­های گذشته به طور کامل وصله نشده­اند یک آسیب پذیری جدید تحت عنوان branchscope روی  این پردارنده­ها کشف شده است.
intel
پردازنده­ها با تکیه بر روی واحدهای پیش بینی کننده انشعاب(BPU)، از آن برای اجرای بدون وقفه دستورات در خط لوله استفاده می­کنند. زمانی که چندین فرآیند­ بر روی هسته فیزیکی مشابه اجرا می­شوند آن­ها یک واحد  پیش بینی کننده انشعاب را به اشتراک می­گذارند. در این آسیب پذیری حمله کننده با استفاده از  دستکاری BPU به اشتراک گذاشته شده، یک حمله کانال جانبی انجام می دهد. در این حمله اگر پیش بینی صورت گرفته باشد، آدرس انشعاب از ساختاری که به آن بافر هدف انشعاب (BTB) می­گویند به دست می­آید. مشابه نگاشت مستقیم کش است و آخرین آدرس یک انشعاب که در هر ورودی BTB نگاشت شده است  را به دست می­آورد. حملات کانال جانبی روی این BTB صورت می­گیرد. توانایی­های مهاجم حمله حاکی از وجود قربانی و برنامه­های جاسوسی است. برنامه قربانی حاوی اطلاعات مخفی است، برنامه جاسوسی تلاش می­کند بدون داشتن قدرت نتیجه بگیرد. برای دسترسی مستقیم به این اطلاعات، مدل تهدید سه فرضیه اصلی را ایجاد می­کند:۱- اقدامات دائم: فرض بر این است که برنامه جاسوسی و قربانی از همان لحظه که BPU به اشتراک گذاشته شده، وجود داشته­اند.۲-کاهش سرعت قربانی: در حوزه انشعابات با سرعت بالا صورت می­گیرد به این صورت که توانایی شناسایی رفتار یک اجرای منحصر به فرد را دارد، و به این ترتیب فرآیند قربانی کندتر خواهد شد. این حمله می­تواند توسط سیستم عامل صورت بگیرد، در یک سیستم عامل مخرب مدل تهدید به این صورت است که به قسمت SGX حمله  می­شود و سیستم عامل می­تواند کنترل را به دست گیرد و سرعت را کم کند.۳- راه اندازی کد قربانی: می­تواند قربانی را مجبور کند در هر زمان که بخواهد عمل مخرب را انجام دهد. برای بسیاری از برنامه­های کاربردی، مثلا در یک سرور باعث می­شود با ارسال یک کد مخرب از طرف مهاجم به داده­های رمز شده برسد. فرض بر این شده که مهاجم قادر به مشاهده پاسخ از طرف قربانی نیست. شناخت حمله هر جدول تاریخچه پیش بینی(PHT) دارای یک ماشین حالت چهار تایی است. که حمله بر اساس آن صورت گرفته است. این حمله شامل سه مرحله است.۱- در ابتدا دستورات انشعاب را سه بار به اولویت اضافه می­کنیم و ورودی PHT در یکی از حالات ST و یا SN قرار می­گیرد ۲- سپس انشعابات مشابه را بیشتر از یک بار  با هر دو نتایج taken  و not-taken اجرا می­شوند. ۳-در نهایت، همان شاخه را اجرا می­کنند دو بار دیگر اشتباهات پیش بینی تشخیص داده شده (که آن را گام جستجو نامیده‌اند) .در این مرحله  همچنین دقت پیش بینی برای هر دو جستجو انشعاب را ثبت می­کنند. مهاجم با استفاده از اینها باید قادر به شناسایی مسیر قربانی باشد و با استفاده از آن انشعاب را پیش بینی کند.
راه حل ها برای مقابله با این حمله راه­حل­های سخت افزاری و نرم افزاری به کار برده می­شود.

توضیحات تصویر ۱not-taken , T:taken, N:not-taken SN: strongly

نرم افزاری: یکی از روشها، کاهش تدریجی استفاده از روش­هایی که به صورت الگوریتمی هستند و حذف وابستگی­ نتایج انشعاب­ها بر داده­های مخفی است. با این حال، در اندازه بزرگ چنین حفاظتی را اعمال کردن، یک چالش بسیار بزرگ است. بدین ترتیب این مکانیزم تنها می­تواند محدود به بخش­های کلیدی برنامه­هایی باشد که با داده های حساس کار می­کنند. یکی دیگر از رویکردهای احتمالی که کاربردهای وسیع تری دارد حذف شاخه­های شرطی از برنامه­های هدف است. این تکنیک، یک بهینه سازی کامپایلر است که انشعابات شرطی را به کد ترتیبی تبدیل می­کند، با استفاده از دستورالعمل­های شرطی مانند cmov، به طور موثر وابستگی­های کنترل به وابستگی­های داده ها تبدیل میشود. همچنین می­توان طراحی مکانیزم پیش ببنی انشعاب را دوباره انجام داد . سخت افزاری
  • تصادفی انتخاب کردن از PHT : در branch scope لازم است توانایی ایجاد برخورد قابل پیش بینی در PHT (مبتنی بر آدرس مجازی) را داشته باشد. برای مقابله با چنین برخوردی تابع ایندکس PHT می­تواند به عنوان برخی از داده­ها ورودی منحصر به ورودی­های نرم افزار، اصلاح شود. برای مثال می­تواند قسمتی از سخت افزار SGX و یا به صورت ساده تر اعداد رندم تولید شده توسط فرآیند باشد.  جستجوی تصادفی که PHT را یکی یکی برسی می­کند تا زمانی که یک برخورد پیدا نکند ممکن است خطرناک باشد. این مسئله شبیه به تصادفی بودن نقشه کش است.
  • تقسیم بندی BPU: در این روش با بخش بندی کردن BPU، امکان به اشتراک گذاشتن ساختار مشابه بین مهاجم و برنامه قربانی از بین می­رود و مهاجم توانایی برخورد با قربانی را از دست می­دهد.
  • از بین بردن توانایی محاسبه نتیجه انشعاب: با استفاده از حذف یا اضافه کردن نویز به شمارنده یا زمان شمار می­توان جلوی مهاجم را گرفت. یا با استفاده از عوض کردن ماشین حالت پیش بینی توانایی مهاجم برای هدایت اشعاب را از بین می‌برد.
حملات کانال جانبی که اشاره شد با درصد خطای بسیار پایین در پردازنده­های اینتل صورت گرفته است و مهاجم با دانش اندک و خطای ناچیز به داده­های محرمانه دسترسی پیدا می­کند، نکته­ی بد در مورد این حمله این است که قابل گسترش است و مهاجم می­تواند از طریق آن به حملات بیشتری دست یابد.

منابع

[۱] Evtyushkin, Dmitry, Ryan Riley, Nael CSE Abu-Ghazaleh, and Dmitry Ponomarev. “BranchScope: A New Side-Channel Attack on Directional Branch Predictor.” In Proceedings of the Twenty-Third International Conference on Architectural Support for Programming Languages and Operating Systems, pp. 693-707. ACM, 2018.