Plundervolt یک روش حمله جدید به پردازنده های اینتل است که بر فناوری SGX تأثیر می گذارد

اینتل منتشر شد به روز رسانی میکروکد که رفع می شود آسیب پذیری (CVE-2019-14607) ، اجازه می دهد از طریق دستکاری مکانیزم کنترل ولتاژ و فرکانس دینامیکی در CPU، آسیب به محتویات سلول های داده، از جمله در مناطقی که برای محاسبات در محاصره های جدا شده Intel SGX استفاده می شود، آغاز می شود. این حمله Plundervolt نام دارد و به طور بالقوه به یک کاربر محلی اجازه می دهد تا امتیازات خود را در سیستم افزایش دهد، باعث انکار سرویس و دسترسی به داده های حساس شود.

این حمله تنها در زمینه دستکاری با محاسبات در SGX مخاطره آمیز است، زیرا برای انجام آن به حقوق ریشه در سیستم نیاز دارد. در ساده‌ترین حالت، مهاجم می‌تواند به تحریف اطلاعات پردازش‌شده در محصور دست یابد، اما در سناریوهای پیچیده‌تر، امکان بازآفرینی کلیدهای خصوصی ذخیره‌شده در enclave مورد استفاده برای رمزگذاری با استفاده از الگوریتم‌های RSA-CRT و AES-NI وجود ندارد. مستثنی شده است. همچنین می‌توان از این تکنیک برای ایجاد خطا در الگوریتم‌های اولیه درست برای ایجاد آسیب‌پذیری هنگام کار با حافظه استفاده کرد، به عنوان مثال، برای سازمان‌دهی دسترسی به ناحیه‌ای خارج از مرز بافر اختصاص‌یافته.
کد اولیه برای انجام یک حمله منتشر شد در GitHub

ماهیت روش ایجاد شرایطی برای وقوع خرابی های غیرمنتظره داده در حین محاسبات در SGX است که استفاده از رمزگذاری و احراز هویت حافظه در محصور از آن محافظت نمی کند. برای معرفی اعوجاج، مشخص شد که می‌توان از رابط‌های نرم‌افزار استاندارد برای کنترل فرکانس و ولتاژ استفاده کرد، که معمولاً برای کاهش مصرف برق در زمان بیکاری سیستم و فعال کردن حداکثر عملکرد در طول کار فشرده استفاده می‌شود. ویژگی‌های فرکانس و ولتاژ کل تراشه را شامل می‌شود، از جمله تأثیر محاسبات در یک محصور جدا شده.

با تغییر ولتاژ می توانید شرایطی ایجاد کنید که در آن شارژ برای بازسازی سلول حافظه در داخل CPU کافی نباشد و مقدار آن تغییر کند. تفاوت اصلی با حمله RowHammer این است که RowHammer به شما اجازه می دهد تا با خواندن چرخه ای داده ها از سلول های مجاور، محتویات تک تک بیت ها را در حافظه DRAM تغییر دهید، در حالی که Plundervolt به شما اجازه می دهد زمانی که داده ها قبلاً از حافظه برای محاسبه بارگذاری شده اند، بیت های داخل CPU را تغییر دهید. این ویژگی به شما امکان می دهد مکانیسم های کنترل یکپارچگی و رمزگذاری مورد استفاده در SGX برای داده های موجود در حافظه را دور بزنید، زیرا مقادیر موجود در حافظه صحیح باقی می مانند، اما می توانند در طول عملیات با آنها قبل از اینکه نتیجه در حافظه نوشته شود، تحریف شوند.

اگر این مقدار اصلاح شده در فرآیند ضرب فرآیند رمزگذاری استفاده شود، خروجی با متن رمز نادرست رد می شود. با داشتن توانایی تماس با یک کنترل کننده در SGX برای رمزگذاری داده های آن، یک مهاجم می تواند با ایجاد خرابی، آماری در مورد تغییرات در متن رمز خروجی جمع آوری کند و در چند دقیقه ارزش کلید ذخیره شده در enclave را بازیابی کند. متن ورودی اصلی و متن رمز خروجی صحیح مشخص هستند، کلید تغییر نمی کند و خروجی یک متن رمزی نادرست نشان می دهد که مقداری بیت به مقدار مخالف تحریف شده است.

پس از تجزیه و تحلیل جفت مقادیر متن رمزنگاری صحیح و خراب انباشته شده در هنگام خرابی های مختلف، با استفاده از روش های تحلیل شکست افتراقی (DFA, تجزیه و تحلیل خطای دیفرانسیل) می توان پیش بینی کلیدهای احتمالی مورد استفاده برای رمزگذاری متقارن AES و سپس با تجزیه و تحلیل تقاطع کلیدها در مجموعه های مختلف، کلید مورد نظر را تعیین می کنند.

مدل های مختلفی از پردازنده های اینتل تحت تأثیر این مشکل قرار دارند، از جمله پردازنده های Intel Core با 6
نسل دهم، و همچنین نسل پنجم و ششم Xeon E10، نسل اول و دوم Intel Xeon Scalable، Xeon D،
Xeon W و Xeon E.

به شما یادآوری کنیم که فناوری SGX (برنامه های افزودنی محافظ نرم افزار) در نسل ششم پردازنده های Intel Core (Skylake) ظاهر شد و پیشنهادات مجموعه‌ای از دستورالعمل‌ها که به برنامه‌های سطح کاربر اجازه می‌دهد تا مناطق حافظه بسته را اختصاص دهند - محتویات آن‌ها حتی توسط هسته و کدهای در حال اجرا در حالت‌های ring0، SMM و VMM قابل خواندن یا اصلاح نیستند. انتقال کنترل به کد موجود در Enclave با استفاده از توابع پرش سنتی و دستکاری با رجیسترها و پشته غیرممکن است؛ برای انتقال کنترل به enclave، از یک دستورالعمل جدید ایجاد شده ویژه استفاده می شود که یک بررسی معتبر را انجام می دهد. در این حالت، کد قرار داده شده در enclave می تواند از روش های فراخوانی کلاسیک برای دسترسی به توابع داخل محفظه و دستورالعمل های ویژه برای فراخوانی توابع خارجی استفاده کند. رمزگذاری حافظه محصور برای محافظت در برابر حملات سخت افزاری مانند اتصال به یک ماژول DRAM استفاده می شود.

منبع: opennet.ru

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