SWAPGS

مایکروسافت و Red Hat هشدار داده‌اند که نوع جدیدی از آسیب‌پذیری کانال جانبی[۱] یعنی Spectre نوع ۱ کشف شده است که از اجرای احتمالی(۱) برای داشتن بیشترین بازدهی استفاده می‌کند و روی تمام پردازنده‌های مدرن اینتل[۲] و احتمالاً برخی پردازنده‌های AMD نیز تأثیر می‌گذارد.

این آسیب‌پذیری با عنوان CVE-2019-1125 شناخته می‌شود و به مهاجمین محلی با دسترسی معمولی اجازه می‌دهد تا بتوانند به اطلاعات حساس ذخیره‌شده در حافظه کرنل سیستم‌عامل ازجمله رمزهای عبور، tokenها و کلیدهای رمزگذاری دسترسی پیدا کنند که در غیر این صورت غیرقابل دسترسی خواهند بود.

اجرای احتمالی یکی از اجزای اصلی طراحی ریزپردازنده مدرن است که به‌صورت احتمالی دستورالعمل‌های مبتنی بر فرضیاتی را اجرا می‌کند که به نظر می‌رسد درست باشند. اگر فرضیه‌ها معتبر باشند، اجرا ادامه می‌یابد، در غیر این صورت رد می‌شود.

چنین اجراهای احتمالی دارای عوارض جانبی نیز هستند که درصورتی‌که حالت پردازنده ناگسستنی(۲) باشد، بازیابی نمی‌شوند و منجر به افشای اطلاعات می‌شوند که پس‌ازآن با استفاده از حملات کانال جانبی قابل‌دستیابی هستند [۳].

مایکروسافت[۴] بدون سروصدا برای این آسیب‌پذیری‌های جدید اجرای احتمالی در به‌روزرسانی امنیتی ژوئیه ۲۰۱۹ خود وصله‌هایی را منتشر کرد که این آسیب‌پذیری‌ها توسط محققان شرکت امنیتی Bitdefender کشف و مسئولانه گزارش شده بودند[۵].

طبق توصیه امنیتی که در تاریخ ۶ اوت توسط RedHat منتشر شد[۶]، این حمله به اجرای احتمالی دستورالعمل‌های SWAPGS ناخواسته(۳) پس‌ازاینکه یک شاخه(۴) درست پیش‌بینی نشود(۵)، متکی است[۷].

دستورالعمل SWAPGS یک دستورالعمل دارای سطح بالای سیستمی است که مقادیر موجود در رجیستر GS را با مقادیر MSR مبادله می‌کند و فقط در دستگاه‌هایی با معماری x86-64 در دسترس است.

محققان دراین‌باره می‌گویند: “ازآنجاکه SWAPGS می‌تواند به‌صورت احتمالی در حالت کاربر اجرا شود، یک مهاجم می‌تواند آدرس داده‌های مربوط به هر پردازنده را که معمولاً فقط برای هسته در دسترس هست، نشت دهد.”

اینتل تصدیق کرد که حمله SWAPGS باعث شکسته شدن KPTI ارائه‌شده توسط پردازنده‌های مدرن می‌شود و می‌تواند برای نشت حافظه هسته حساس از حالت کاربرِ دارای دسترسی عادی استفاده شود.

به گفته محققان Bitdefender، حمله جدید همه سدهای دفاعی شناخته‌شده را که پس از کشف آسیب‌پذیری‌های Spectre و Meltdown در اوایل سال ۲۰۱۸ پیاده‌سازی شدند، دور می‌زند که عملاً هر رایانه‌ای در جهان را در معرض خطر قرار می‌دهد.

اگرچه کرنل لینوکس همچنین دارای ابزاری است که می‌تواند برای حمله به سیستم‌های لینوکس مورد بهره‌برداری قرار گیرد[۸]، محققان معتقدند بهره‌برداری از سیستم‌عامل‌های لینوکس می‌تواند اندکی سخت‌تر از رایانه‌های دارای ویندوز باشد.

ازآنجاکه این حمله نمی‌تواند از راه دور انجام شود، بعید است که باعث ایجاد آلودگی به دژ افزارهای گسترده شود، مانند EternalBlue که برای WannaCry استفاده شد. در عوض می‌تواند به‌عنوان بخشی از یک حمله بسیار هدفمند مورد بهره‌برداری قرار بگیرد.

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

در همین حال، گوگل[۹] همچنین یک وصله را برای رفع این آسیب‌پذیری در ChromeOS  نسخه ۴٫۱۹ خود با یک به‌روزرسانی زودتر از موعد منتشرشده، برطرف کرده است و این نقص در اینجا توضیح داده شده است:

“یک مهاجم می‌تواند پیش‌بینی کننده(۶) شاخه را آموزش دهد تا به‌صورت احتمالی(۷) مسیر swapgs را برای یک تداخل(۸) یا استثنا(۹) در نظر نگیرد. اگر آن‌ها یک رجیستر GS را با یک مقدار user-space تنظیم(۱۰) کنند، اگر swapgs به‌صورت احتمالی در نظر گرفته نشود، دسترسی‌های متعاقب percpu مربوط به GS در پنجره احتمال، توسط مقدار کنترل‌شده توسط مهاجم انجام می‌شود. این می‌تواند باعث دسترسی و نشت حافظه با سطح دسترسی بالا شود.”

AMD در بیانیه‌ای گفت[۱۰]:

“بر اساس آنالیز خارجی و داخلی، AMD معتقد است که در برابر حملات نوع SWAPGS آسیب‌پذیر نیست زیرا محصولات AMD به‌گونه‌ای طراحی‌شده‌اند که به دنبال یک SWAPGS احتمالی، مقدار جدید GS را حدس نزنند. برای حملاتی که از نوع SWAPGS نیستند، نحوه جلوگیری از این آسیب‌پذیری‌ها، پیاده‌سازی پیشنهاد‌های داده‌شده برای Spectre نوع ۱ است.

 

منابع

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

[۲] https://apa.aut.ac.ir/?p=6158

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

[۴] https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2019-1125

[۵] https://labs.bitdefender.com/2019/08/bypassing-kpti-using-the-speculative-behavior-of-the-swapgs-instruction

[۶] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=18ec54fdd6d18d92025af097cd042a75cf0ea24c

[۷] https://youtu.be/S-m7XVBzusU

[۸] https://software.intel.com/security-software-guidance/insights/more-information-swapgs-and-speculative-only-segment-loads

[۹] https://chromium.googlesource.com/chromiumos/third_party/kernel/+/cc4c818b2219c58af5f0ca59f3e9f02c48bc0b65/Documentation/admin-guide/hw-vuln/spectre.rst

[۱۰] https://www.amd.com/en/corporate/product-security

[۱۱] https://thehackernews.com/2019/08/swapgs-speculative-execution.html


(۱) Speculative Execution
(۲) unwound
(۳) unexpected
(۴) branch
(۵) mispredicted
(۶) predictor
(۷) speculatively
(۸) interrupt
(۹) exception
(۱۰) initialize