شرکت AMD از کلاس جدیدی از حملات ریزمعماری به پردازندههای خود با نام TSA (حمله زمانبندی گذرا) رونمایی کرده است. این حمله به مهاجم اجازه میدهد تا مکانیسمهای جداسازی CPU را دور بزند و دادههای پردازششده در زمینههای دیگر را تعیین کند، مانند تعیین اطلاعات پردازششده در سطح هسته از فضای کاربر، یا دریافت دادههای استفادهشده در مهمان دیگر از یک مهمان.
این آسیبپذیریها در حین توسعهی ابزاری که توسط محققان مایکروسافت و ETH زوریخ برای تست استرس جداسازی ریزمعماری بین مناطق امنیتی مختلف مانند هسته، ماشینهای مجازی و فرآیندها ایجاد شده بود، کشف شدند.
روش حمله مبتنی بر وابستگی زمان اجرای برخی دستورالعملها به وضعیت ساختارهای ریزمعماری است. هنگامی که پردازنده انتظار تکمیل سریع دستورالعمل خواندن دادهها از حافظه را دارد (برای مثال، با فرض اینکه دادهها در حافظه نهان L1 هستند)، اما در دریافت موفقیتآمیز دادهها شکست میخورد، حالت "تکمیل نادرست" دستورالعمل رخ میدهد. در این حالت، حتی قبل از تعیین این حالت، پردازنده میتواند اجرای حدسی سایر عملیاتهایی را که به نتیجه اجرای دستورالعمل بارگیری از حافظه بستگی دارند، برنامهریزی کند.
از آنجایی که بارگذاری کامل نشده است، دادههای مرتبط با آن توسط پردازنده نامعتبر میشوند و عملیات بارگذاری بعداً تکرار میشود. عملیات وابسته نیز هنگامی که دادههای صحیح آماده باشند، دوباره اجرا میشوند. با این حال، پاکسازی خط لوله پس از اجرای دستورالعملی که شرط "تکمیل نادرست" برای آن ثابت شده است، انجام نمیشود و دادههای نادرست میتوانند به عملیات وابسته هدایت شوند.
اجرای چنین عملیاتی وضعیت حافظه پنهان و TLB (Translation Lookaside Buffer) را تغییر نمیدهد، یعنی دادهها را نمیتوان با استفاده از روشهای سنتی تعیین وضعیت حافظه پنهان بازیابی کرد. اما این دادهها بر زمان اجرای سایر دستورالعملها تأثیر میگذارند. تجزیه و تحلیل زمان اجرا میتواند به عنوان منبع نشت اطلاعات از ساختارهای ریزمعماری باقی مانده پس از اجرای احتمالی سایر عملیات مورد استفاده قرار گیرد.
بسته به منبع استخراج دادههای باقیمانده، دو آسیبپذیری شناسایی میشوند:
- CVE-2024-36350 (TSA-SQ — صف ذخیره TSA) — نشتی از بافر ذخیرهسازی موقت عملیات نوشتن (صف ذخیره) که امکان تعیین نتیجه نوشتن دستورالعملها در حافظه را فراهم میکند.
- CVE-2024-36357 (TSA-L1 — حافظه نهان داده TSA L1) — نشت از طریق حافظه نهان L1D.
این آسیبپذیریها در خانواده پردازندههای AMD (Fam19h) مبتنی بر ریزمعماریهای Zen 3 و Zen 4 ظاهر میشوند. برای مثال، این مشکل در سری پردازندههای AMD Ryzen 5000/6000/7000/8000، AMD EPYC Milan/Milan-X/Genoa/Genoa-X/Bergamo/Siena، AMD Instinct MI300A، AMD Ryzen Threadripper PRO 7000 WX، AMD EPYC Embedded 7003/8004/9004/97X4، AMD Ryzen Embedded 5000/7000/V3000 وجود دارد.
تغییرات مورد نیاز برای جلوگیری از این آسیبپذیری در بهروزرسانی میکروکد ماه دسامبر و میانافزار مقداردهی اولیه پلتفرم (PI) که برای تولیدکنندگان اصلی تجهیزات (OEM) منتشر شد، گنجانده شده است. وصلههایی برای محافظت در برابر این آسیبپذیری برای گنجاندن در هسته ارائه شدهاند. Linux (گزینه خط فرمان هسته "tsa=off" برای غیرفعال کردن محافظتی که بر عملکرد تأثیر منفی میگذارد، ارائه شده است.) همچنین یک اصلاحیه به هایپروایزر Xen اضافه شده است. مسدود کردن این آسیبپذیری نیازمند بهروزرسانی میکروکد و فعال کردن حالت محافظت در سطح هسته یا هایپروایزر است.
منبع: opennet.ru
