Spectre

هنگامی‌که Spectre که یک گروه از آسیب‌پذیری‌های مهم و تأثیرگذار بر پردازنده‌های مدرن هستند در ژانویه ۲۰۱۸ به‌طور عمومی آشکار شد[۱]، محققان درباره‌‎ی این کشف گفتند[۲]: “ازآنجاکه رفع آن آسان نیست، برای مدتی ما را آزار می‌دهد” و به‌گونه‌ای نام‌گذاری این آسیب‌پذیری هم به معنی حملات اجرایی speculative است.

درواقع، بیش از سه سال گذشته است و Spectre همچنان در حال تأثیرگذاری روی پردازنده‌هاست.

تیمی از دانشگاه ویرجینیا و دانشگاه سان‌دیگو در کالیفرنیا، خط حمله‌ی جدیدی[۳] را کشف کرده‌اند که تمام محافظت‌های فعلی Spectre ساخته‌شده در تراشه‌ها را دور می‌زند و به‌طور بالقوه تقریباً هر سیستم ازجمله دسکتاپ، لپ‌تاپ، سرور ابری و تلفن‌های هوشمند را یک‌بار دیگر درست مثل سه سال پیش در معرض خطر قرار می‌دهد.

افشای Spectre و Meltdown انواع مختلفی[۴] از حملات را در معرض دید قرارداد[۵] به‌طوری‌که انواع بسیار مختلفی از حملات در این سال‌ها آشکار شده است[۶-۸]. حتی بااینکه سازندگان تراشه مانند اینتل، ARM و AMD به‌طور مداوم تلاش می‌کنند تا آسیب‌پذیری‌های مخرب که اجازه‌ی خواندن کلمه عبور، کلیدهای رمزگذاری و سایر اطلاعات ارزشمند را مستقیماً از یک حافظه کرنل رایانه می‌دهد را کاهش دهند.

Spectre که یک حمله‌ی کانال جانبی زمان‌بندی‌شده در هسته‌ی اصلی آن است، isolation بین برنامه‌های مختلف را از بین می‌برد و از یک روش بهینه‌سازی به نام اجرای speculative در پیاده‌سازی سخت‌افزار CPU بهره می‌برد تا برنامه‌ها را برای دسترسی به مکان‌های دلخواه در حافظه فریب دهد و بنابراین اسرار آن‌ها را فاش کند.

محققان دراین‌باره گفتند: “یک حمله Spectre پردازنده را فریب می‌دهد تا دستورالعمل‌هایی را در مسیر اشتباه اجرا کند. حتی اگر پردازنده بازیابی شود و وظیفه خود را به‌درستی به اتمام برساند، هکرها می‌توانند به داده‌های محرمانه دسترسی پیدا کنند درحالی‌که پردازنده در مسیر اشتباهی قرار دارد.”

این روش حمله‌ی جدید ازآنچه cache میکرو عملیات (معروف به micro-ops یا μops) نامیده می‌شود[۹]، بهره‌برداری می‌کند که یک جز درون تراشه است که دستورالعمل‌های دستگاه را به دستورات ساده‌تر تجزیه می‌کند و سرعت محاسبات را به‌عنوان یک کانال جانبی برای افشای اطلاعات محرمانه افزایش می‌دهد. Cache های Micro-op در دستگاه‌های مبتنی بر اینتل ساخته‌شده از سال ۲۰۱۱ به بعد وجود دارند.

Ashish Venkat استادیار دانشگاه ویرجینیا و نویسنده‌ی همکار در این پژوهش دراین‌باره می‌گوید: “دفاع پیشنهادی اینتل در برابر Spectre، که LFENCE نامیده می‌شود کدهای حساس را در یک قسمت انتظار قرار می‌دهد تا بررسی‌های امنیتی انجام شود و فقط در این صورت کد حساس مجاز به اجرا شود. اما معلوم شد که دیوارهای این منطقه‌ی انتظار، ears دارند که حمله ما از آن‌ها بهره می‌برد. ما نشان می‌دهیم که چگونه یک مهاجم می‌تواند با استفاده از آن به‌عنوان یک کانال مخفی، اسرار را از طریق حافظه cache از نوع micro-op بدزدد.”

محققان دراین‌باره توضیح دادند، در ریز معماری‌های AMD Zen، می‌توان از افشای اولیه micro-ops برای دستیابی به یک کانال انتقال داده پنهان با پهنای باند ۲۵۰ کیلوبیت در ثانیه با نرخ خطای ۵٫۵۹ درصد یا ۱۶۸٫۵۸ کیلوبیت در ثانیه با تصحیح خطا بهره برد.

اینتل، در رهنمودهای خود[۱۰] برای مقابله با حملات زمان‌بندی[۱۱] علیه پیاده‌سازی رمزنگاری، رعایت اصول برنامه‌نویسی در زمان ثابت را توصیه می‌کند، عملی که گفتن آن آسان‌تر از انجام آن است و این نشان می‌دهد که تغییرات نرم‌افزار به‌تنهایی نمی‌تواند تهدیدات ناشی از اجرای speculative را کاهش دهد.

Venkat در بیانیه به اشتراک گذاشته‌شده با The Hacker News دراین‌باره گفت: “برنامه‌نویسی با زمان ثابت نه‌تنها ازنظر برنامه‌نویس دشوار است، بلکه مستلزم کارآیی بالا و چالش‌های استقرار قابل‌توجهی در رابطه با وصله کردن تمام نرم‌افزارهای حساس است. درصدی از کد که با استفاده از اصول زمان ثابت نوشته می‌شود درواقع بسیار کم است. اتکا به این امر خطرناک خواهد بود. به همین دلیل هنوز هم باید از سخت‌افزار محافظت کنیم.”

نکته‌ی کلیدی اینجا این است که بهره‌برداری از آسیب‌پذیری‌های Spectre دشوار است. برای محافظت در برابر یک حمله جدید، محققان پیشنهاد می‌کنند که حافظه cache از نوع micro-ops را flush کنید، این روشی است که مزایای عملکردی را که با استفاده از cache به‌دست‌آمده را در وهله‌ی اول خنثی می‌کند، شمارنده‌های عملکرد را برای تشخیص ناهنجاری‌ها در cache از نوع micro-op استفاده می‌کند و آن را بر اساس میزان سطح دسترسی اختصاص‌یافته به کد تقسیم‌بندی کرده و از کسب سطح دسترسی بالاتر توسط کد غیرمجاز جلوگیری کند.

محققان دراین‌باره گفتند: “cache از نوع micro-op به‌عنوان یک کانال جانبی چندین پیامد خطرناک دارد. اول، این cache تمام روش‌هایی که cache ها را به‌عنوان کانال‌های جانبی محدود می‌کند، دور می‌زند. دوم، این حملات توسط هیچ حمله یا پروفایل دژافزار موجود شناسایی نمی‌شوند. سوم، با توجه به اینکه chache از نوع micro-op در جلوی pipeline  قرار دارد، قبل از اجرا، دفاع‌های به خصوصی که توسط محدود کردن به‌روزرسانی‌های cache از نوع speculative از Spectre و سایر حملات اجرای گذرا جلوگیری می‌کردند، همچنان در برابر حملات cache از نوع  micro-op آسیب‌پذیر هستند.

منابع

[۱] https://apa.aut.ac.ir/?p=3397

[۲] https://meltdownattack.com

[۳] https://www.cs.virginia.edu/~av6ds/papers/isca2021a.pdf

[۴] https://blog.trailofbits.com/2018/01/30/an-accessible-overview-of-meltdown-and-spectre-part-1

[۵] https://transient.fail

[۶] https://apa.aut.ac.ir/?p=5651

[۷] https://thehackernews.com/2020/08/foreshadow-processor-vulnerability.html

[۸] https://thehackernews.com/2021/03/new-bugs-could-let-hackers-bypass.html

[۹] https://en.wikipedia.org/wiki/Micro-operation

[۱۰] https://thehackernews.com/2021/03/malware-can-exploit-new-flaw-in-intel.html

[۱۱] https://thehackernews.com/2020/07/http2-timing-side-channel-attacks.html

[۱۲] https://thehackernews.com/2021/04/cybercriminals-widely-abusing-excel-40.html