آسیب‌پذیریِ سخت‌افزاری جدید در پردازنده‌های اینتل

31 اردیبهشت 1402 آسیب‌پذیریِ سخت‌افزاری جدید در پردازنده‌های اینتل

روابط عمومی شرکت ایدکو (توزیع‌کننده‌ی محصولات کسپرسکی در ایران)؛ محققین هر دو دانشگاه مریلند آمریکا و دانشگاه چینهوا در چین مقاله علمی را منتشر کرده‌اند که در آن از متود جدید حمله کانال جانبی پرده برداشته شده است. این متود آسیب‌پذیریِ سخت‌افزاری از پیش‌شناخته‌شده را در پردازنده‌های اینتل اکسپلویت می‌کند. در ادامه یافته‌های محققین را مورد بررسی قرار خواهیم داد. با ما همراه باشید.

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

چرا مدام پیچیده‌تر می‌شود؟!

آسیب‌پذیری‌های سخت‌افزاری پردازنده مرتبط با اجرای مبهم دستورالعمل‌ها[1] مدت‌هاست که موضوع بیشتر تحقیقات هستند (چیزی بیش از 5 سال). همه حملات ارائه‌شده برای ساده‌سازی حداکثری می‌توانند اینطور خلاصه شوند: سی‌پی‌یو یک‌جورهایی مجبور می‌شود داده‌هایی را که کاربر نباید بدان‌ها دسترسی داشته باشد بخواند. این سناریوی نظری را تصور کنید: برنامه مهاجم به کلید رمزگذاری استفاده‌شده برای محافظت از داده‌های حساس دسترسی ندارد. اگر ما به سی‌پی‌یو دستور بدهیم کلید رمزگذاری را در آدرسی خاص بخواند، براحتی این دستور اجرا نمی‌شود. این کمک (برای مهاجم) از سمت اجرای مبهم دستورها که قابلیت مهم سی‌پی‌یوهای مدرن است می‌رسد. قابلیت مذکور تقریباً سه دهه هست وجود دارد: برای سرعت دادن به امور به جای صبر کردن برای تکمیل یک دستور، پردازنده بعدی را به موازات اجرا می‌کند.

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

EFLAGS یک ثبت پرچم در پردازنده اینتل است که وضعیت عملکرد CPU را پیگیری می‌کند. می‌تواند نتیجه محاسبات را ذخیره کند، به ویژه اگر برابر با صفر باشد (به اصطلاح پرچم صفر یا ZF))جادوی بعدی می‌آید: تصور کنید یکی از همکاران شما به عددی از 1 تا 10 فکر می‌کند و به او گفته می‌شود که آن را برای خود نگه دارد. شما مدام اعداد 1 تا 10 را صدا می‌زنید (به دنبال نشانه‌هایی می‌گردید که دست همکار را رو کنید)، اما او نمی‌خواهد پاسخ صحیح را با شما در میان بگذارند و هر بار با کلمه "گل داودی" پاسخ می‌دهد. با این حال، زمانی که عدد صحیح را بیان می‌کنید، در مقایسه با زمان های دیگر، گفتن «گل داودی» کمی بیشتر طول می‌کشد.

چیزی مشابه در این حمله جدید اتفاق می‌افتد: ما محاسبات متعددی را با داده‌های حساس انجام می‌دهیم. همه این محاسبات به صورت حدس و گمان انجام می‌شود. نتیجه روی پرچم ZF (برابر یا نابرابر با صفر ) نوشته می‌شود. ما نمی‌توانیم مستقیماً از وضعیت این پرچم مطلع شویم. اما سپس یک دستور JCC نسبتاً بی‌فایده را اجرا می‌کنیم (مخصوصاً دستور JZ[2])، که اگر درست حدس بزنیم کمی کندتر اجرا می‌شود! و این تاخیر قابل اندازه گیری در پاسخ است که آسیب پذیری را تشکیل می‌دهد.

هنوز مشکلی نیست

جالب‌ترین جنبه این حمله این است که به خودی خود کار نمی‌کند. برای اطمینان از امکان اجرای مبهم دستورالعمل‌های مورد نیاز، مجرمان سایبری باید از یک آسیب‌پذیری دیگر سوء استفاده کنند. مقاله مورد بحث ما از آسیب‌پذیری Meltdown استفاده می‌کند که در سال 2018 کشف شد، که خوشبختانه دسترسی به اطلاعاتی را فراهم می‌کند که برای افراد خارجی غیرمجاز است. در نتیجه، داده های حساس با قابلیت اطمینان 100 درصد در تمام CPU های قدیمی تحت تأثیر این آسیب پذیری خوانده شد (در این مطالعه از نسل ششم و هفتم اینتل Core i7 استفاده شد).

اگرچه این آزمایش بر روی پردازنده‌های نسل دهم شکست خورد، اما آنها نیز در اجرای یک دستورالعمل خاص از مجموعه JCC با تاخیر مواجه می‌شوند. در واقع، انواع حملات چندمنظوره‌تر مانند Spectre که اطلاعات را از حافظه پنهان CPU می‌دزدند، کاربرد نسبتاً محدودی دارند. با این وجود حداقل در مورد آنها بدیهی بود که باید در موردشان اقدامات صورت می‌گرفت: احتمال حمله پیشرفته با هدف قرار دادن داده‌های حیاتی غیر صفر بود. در مورد مقاله جدید، ما بیشتر با ایده‌ای سروکار داریم که اگر اصلاً کار کند، برای پردازنده‌های قدیمی‌تر اینتل کاربرد دارد.

اما این خبر به خودی خود قابل توجه است: اکنون مکانیزم کانال جانبی جدیدی برای استخراج داده‌ها با استفاده از ثبت وضعیت پرچم وجود دارد. نمی توان انکار کرد در آینده این رویکرد، همراه با برخی آسیب‌پذیری‌های دیگر، بر CPU‌های جدید نیز تأثیر می‌گذارند. یا شاید قبل از اینکه شاهد حمله جدیدی باشیم، همه چیز حل شود: در نهایت، وابستگی زمان اجرای دستورالعمل به داده‌ها یک مسئله کاملاً جدی است. زیرشاخه کامل از رمزنگاری وجود دارد که با محافظت از الگوریتم‌های رمزگذاری در برابر حملات زمان‌بندی سروکار دارد.

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

 

 

[1] speculative execution of instructions

[2] jump if zero

 

منبع: کسپرسکی آنلاین (ایدکو)

کسپرسکی اسم یکی از بزرگترین شرکتهای امنیتی و سازنده آنتی ویروس است که برخی از کاربران اشتباهاً این شرکت و محصولات آنتی ویروس آن را با عناوینی نظیر کسپرسکای،کاسپرسکی، کسپراسکای، کسپراسکای، و یا کاسپراسکای نیز می‌شناسد. همچنین لازم به ذکر است مدیرعامل این شرکت نیز یوجین کسپرسکی نام دارد.