آسیب پذیری در مکانیسم MMIO پردازنده های اینتل

اینتل اطلاعات مربوط به دسته جدیدی از نشت داده ها را از طریق ساختارهای ریزمعماری پردازنده ها فاش کرده است، که از طریق دستکاری مکانیسم MMIO (خروجی ورودی نقشه برداری حافظه) امکان تعیین اطلاعات پردازش شده روی دیگر هسته های CPU را فراهم می کند. به عنوان مثال، آسیب‌پذیری‌ها به داده‌ها اجازه می‌دهند تا از فرآیندهای دیگر، محصورات Intel SGX یا ماشین‌های مجازی استخراج شوند. این آسیب‌پذیری‌ها فقط مختص پردازنده‌های اینتل هستند؛ پردازنده‌های تولیدکنندگان دیگر تحت تأثیر این آسیب‌پذیری قرار نمی‌گیرند.

این آسیب‌پذیری‌ها در پردازنده‌های مختلف اینتل، از جمله پردازنده‌های مبتنی بر ریزمعماری Haswell، Skylake، IceLake، Broadwell، Lakefield، Kabylake، Cometlake و Rocketlake و همچنین Xeon EP/EX، Scalable و برخی از پردازنده‌های سرور Atom ظاهر می‌شوند. برای انجام یک حمله، دسترسی به MMIO مورد نیاز است که به عنوان مثال، می توان آن را در سیستم های مجازی سازی که امکان دسترسی به MMIO را برای سیستم های مهمان کنترل شده توسط مهاجم فراهم می کند، به دست آورد. همچنین ممکن است برای سیستم‌هایی که از انکلاوهای ایزوله Intel SGX (برنامه‌های گارد نرم‌افزار) استفاده می‌کنند، اصلاحی لازم باشد.

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

در سمت میکروکد، تغییرات لازم برای اجرای حفاظت در به‌روزرسانی میکروکد می برای CPUهای اینتل (IPU 2022.1) پیشنهاد شد. در هسته لینوکس، محافظت در برابر دسته جدیدی از حملات در نسخه های 5.18.5، 5.15.48، 5.10.123، 5.4.199، 4.19.248، 4.14.284 و 4.9.319 گنجانده شده است. برای بررسی قرار گرفتن سیستم در معرض آسیب‌پذیری‌ها در MMIO و ارزیابی فعالیت مکانیسم‌های حفاظتی خاص، فایل “/sys/devices/system/cpu/vulnerabilities/mmio_stale_data” به هسته لینوکس اضافه شده است. برای کنترل گنجاندن حفاظت، پارامتر بوت هسته "mmio_stale_data" پیاده سازی شده است که می تواند مقادیر "full" را بگیرد (پاکسازی بافرها را هنگام انتقال به فضای کاربر و در ماشین مجازی فعال می کند)، "full,nosmt" ( به عنوان "کامل" + علاوه بر این SMT/Hyper-Treads را غیرفعال می کند) و "خاموش" (حفاظت غیرفعال است). اصلاحات جداگانه برای هایپروایزر Xen و سیستم عامل Qubes ارائه شده است.

ماهیت دسته آسیب‌پذیری شناسایی‌شده این است که برخی از عملیات منجر به کپی یا انتقال داده‌های باقی‌مانده پس از اجرا در دیگر هسته‌های CPU از یک بافر ریزمعماری به دیگری می‌شود. آسیب‌پذیری‌ها در MMIO به این داده‌های باقی‌مانده اجازه می‌دهند که از بافرهای ریزمعماری جدا شده به ثبات‌های قابل مشاهده برنامه یا بافرهای CPU منتقل شوند. سه روش برای استخراج داده های باقیمانده از طریق MMIO شناسایی شده است:

  • DRPW (Device Register Partial Write، CVE-2022-21166) یک مشکل در مدیریت نادرست نوشتن در برخی از رجیسترهای MMIO است. اگر اندازه داده های نوشته شده کمتر از اندازه ثبات باشد، اطلاعات باقیمانده از بافرهای پر نیز در رجیستر کپی می شود. در نتیجه، فرآیندی که عملیات نوشتن ناقص در رجیستر MMIO را آغاز می‌کند، می‌تواند داده‌های باقی‌مانده در بافرهای ریزمعماری را از عملیات‌های انجام‌شده روی دیگر هسته‌های CPU بدست آورد.
  • SBDS (نمونه‌گیری داده‌های بافر مشترک، CVE-2022-21125) نشت داده‌های باقی‌مانده از بافر پرکننده محدود به هسته است که ناشی از حرکت از بافرهای میانی مشترک برای همه هسته‌ها است.
  • SBDR (Shared Buffers Data Read, CVE-2022-21123) - مشکل مشابه SBDS است، اما از این جهت متفاوت است که داده های باقیمانده می توانند در ساختارهای CPU قابل مشاهده برای برنامه ها باشند. مشکلات SBDS و SBDR فقط در پردازنده‌های سیستم‌های مشتری و در خانواده سرور Intel Xeon E3 ظاهر می‌شوند.

آسیب پذیری در مکانیسم MMIO پردازنده های اینتل


منبع: opennet.ru

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