Hyper-Threading

سیستم‌عامل بر پایه امنیت BSD به نام OpenBSD با اشاره به نگرانی‌های امنیتی درمورد حملات زمان‌بندی‌شده از نوع Spectre تصمیم گرفته است که پشتیبانی از قابلیت افزایش عملکرد اینتل به نام hyper-threading را غیرفعال کند[۱].

ویژگی hyper-threading که در سال ۲۰۰۲ معرفی شد یک پیاده‌سازی توسط اینتل از Multi-Threading هم‌زمان یا SMT است که به سیستم‌عامل اجازه می‌دهد که از یک هسته مجازی برای هر هسته فیزیکی موجود در پردازنده به‌منظور افزایش عملکرد استفاده کند.

ویژگی hyper-threading به‌صورت پیش‌فرض بر روی کامپیوترها به‌منظور بهبود عملکرد آن‌ها فعال است اما در یک گزارش که در روز ۱۹ ژوئن ۲۰۱۸ منتشر شده است[۲]، Mark Kettenis یکی از سازندگان OpenBSD گفته است که چنین پیاده‌سازی‌هایی بر روی پردازنده‌ می‌تواند منجر به حملات زمان‌بندی‌شده از نوع Spectre شود.

Kettenis در این مورد گفته است: “پیاده‌سازی‌های Multithreading هم‌زمان یا SMT معمولاً کَش‌های TLB و کَش‌های L1 بین thread ها را به اشتراک می‌گذارند. این موضوع می‌تواند حملات زمان‌بندی‌شده کش را بسیار آسان‌تر کند و ما به‌شدت مشکوک شده‌ایم که چندین اشکال از نوع Spectre که قابل بهره‌برداری هستند در این پیاده‌سازی‌ها وجود دارد[۳].”

در رمزنگاری، حمله زمان‌بندی کانال جانبی به مهاجمان اجازه می‌دهد تا با تجزیه‌وتحلیل زمان انجام‌شده برای اجرای الگوریتم‌های رمزنگاری، یک سیستم را به خطر بیندازند. با اندازه‌گیری زمان دقیق برای هر عملیات، یک مهاجم می‌تواند به‌طور معکوس مقادیر ورودی را محاسبه کند تا اطلاعات محرمانه را فاش کند.

آسیب‌پذیری‌های از نوع Meltdown و Spectre که در اوایل امسال کشف شدند، نمونه‌های بسیار خوبی از حملات زمان‌بندی هستند[۴].

بنابراین، برای محافظت از کاربران سیستم‌عامل OpenBSD در برابر چنین آسیب‌پذیری‌‎های از قبل افشاشده‌ای و نیز حملات زمان‌بندی‌شده‌ی در پیش رو، پروژه OpenBSD ویژگی hyper-threading را بر روی پردازنده‌های اینتل به‌طور پیش‌فرض و به‌عنوان بخشی از hardening سیستم، غیرفعال کرده است.

عملکرد سیستم چیست؟

شما ممکن است فکر کنید، حذف این ویژگی بهینه‌سازی می‌تواند بر روی عملکرد سیستم شما تأثیر منفی بگذارد، اما OpenBSD این‌طور فکر نمی‌کند.

Kettenis معتقد است که خاموش کردن SMT بر عملکرد سیستم هیچ‌گونه تأثیر منفی نخواهد گذاشت و گفت که فعال‌سازی آن می‌تواند در اغلب موارد workload ها را در پردازنده‌های با بیش از دو هسته فیزیکی کندتر کند.

Kettenis همچنین تأکید کرد که OpenBSD در آینده به‌طور پیش‌فرض ویژگی‌ بر پایه SMT برای پردازنده‌های دیگر فروشندگان مانند AMD را نیز غیرفعال می‌کند.

Kettenis نوشت: “ما واقعاً نباید دامنه‌های مختلف امنیتی را بر روی thread های مختلف پردازنده از همان هسته اجرا کنیم.”

OpenBSD تنظیمات جدیدی را از طریق hw.smt sysctl راه‌اندازی کرده است که به‌طور پیش‌فرض، پشتیبانی از SMT را غیرفعال می‌کند و کسانی که می‌خواهند از ویژگی Multithreading استفاده کنند، می‌توانند به‌صورت دستی آن را فعال کنند.

بااین‌حال، این قابلیت تغییر وضعیت جدید تنها در دسترس برای پردازنده‌های اینتل که در حال اجرای OpenBSD/amd64 هستند در دسترس است و به‌زودی برای دیگر فروشندگان و معماری‌های سخت‌افزاری نیز گسترش خواهد یافت.

منابع

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

[۲] https://www.mail-archive.com/source-changes@openbsd.org/msg99141.html

[۳] https://apa.aut.ac.ir/?p=4474

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

[۵] https://thehackernews.com/2018/06/openbsd-hyper-threading.html


(۱) range