AMD گزارشی را منتشر کرده است که در آن امنیت فناوری بهینهسازی PSF (پیشبینیکننده فروشگاه) که در پردازندههای سری Zen 3 پیادهسازی شده است، منتشر کرده است. این مطالعه از نظر تئوری کاربرد روش حمله Spectre-STL (Spectre-v4) را که در می 2018 شناسایی شد، تأیید کرد. فناوری PSF، اما در عمل، هیچ الگوی کدی که بتواند منجر به حمله شود هنوز پیدا نشده است و خطر کلی آن ناچیز ارزیابی میشود.
بیایید به یاد بیاوریم که حمله Spectre-v4 (بای پس از فروشگاه گمانهزنی) مبتنی بر بازیابی دادههایی است که پس از کنار گذاشتن نتیجه اجرای گمانهزنی عملیات هنگام پردازش عملیات نوشتن و خواندن متناوب با استفاده از آدرسدهی غیرمستقیم، در حافظه پنهان پردازنده مستقر شدهاند. هنگامی که یک عملیات خواندن به دنبال یک عملیات نوشتن است (به عنوان مثال، mov [rbx + rcx]، 0x0؛ mov rax، [rdx + rsi])، ممکن است به دلیل انجام عملیات مشابه، افست آدرس خوانده شده از قبل مشخص باشد (عملیات خواندن عبارتند از بسیار بیشتر انجام می شود و خواندن می تواند از حافظه نهان انجام شود) و پردازنده می تواند به صورت حدس و گمان خواندن را قبل از نوشتن انجام دهد بدون اینکه منتظر محاسبه افست غیر جهت نوشتن باشد.
این ویژگی به یک دستورالعمل خواندن اجازه می دهد تا به یک مقدار قدیمی در برخی از آدرس ها دسترسی داشته باشد در حالی که عملیات ذخیره هنوز کامل نشده است. اگر خطای پیشبینی وجود داشته باشد، عملیات گمانهزنی ناموفق کنار گذاشته میشود، اما آثاری از اجرای آن در حافظه پنهان پردازنده باقی میماند و میتوان آن را با یکی از روشهای تعیین محتویات حافظه پنهان بر اساس تجزیه و تحلیل تغییرات دسترسی، بازیابی کرد. زمان برای داده های کش و غیر کش.
PSF که به پردازندههای AMD Zen 3 اضافه شده است، STLF (Store-To-Load-Forwarding) را بهینه میکند، که با پیشبینی رابطه بین عملیات خواندن و نوشتن، عملیات خواندن را به صورت فرضی انجام میدهد. هنگام استفاده از STLF کلاسیک، پردازنده یک عملیات "بار" را بر روی داده هایی که مستقیماً از دستور "store" قبلی ارسال شده است، انجام می دهد، بدون اینکه منتظر بماند تا نتیجه واقعاً در حافظه نوشته شود، اما مطمئن شود که آدرس های استفاده شده در "بار" و دستورات "store" مطابقت دارند. بهینه سازی PSF بررسی آدرس را به صورت حدس و گمان می کند و یک عملیات "بار" را قبل از محاسبه اطلاعات آدرس انجام می دهد، اگر یک جفت ذخیره/بار که قبلاً یک آدرس واحد را دستکاری می کند، اجرا شده باشد. اگر پیشبینی ناموفق باشد، وضعیت به عقب برمیگردد، اما دادهها در حافظه پنهان باقی میمانند.
حمله به PSF تنها در چارچوب یک سطح از امتیازات امکان پذیر است، تنها زمینه فرآیند فعلی را پوشش می دهد و توسط روش های جداسازی فضای آدرس یا مکانیزم های جعبه ایمنی سخت افزاری مسدود می شود. در این حالت، روش های سندباکس نرم افزاری در فرآیندها به طور بالقوه می توانند تحت تأثیر این مشکل قرار گیرند. این حمله تهدیدی برای سیستمهایی مانند مرورگرها، ماشینهای مجازی اجرای کد و JITهایی است که کد شخص ثالث را در یک فرآیند واحد اجرا میکنند (این حمله میتواند به کدهای sandbox نامعتبر اجازه دسترسی به سایر دادههای فرآیند را بدهد).
AMD تعدادی روش برای غیرفعال کردن کامل یا انتخابی PSF ارائه کرده است، اما با توجه به خطر ناچیز برای اکثر برنامه ها، توصیه کرده است که این بهینه سازی به طور پیش فرض غیرفعال نشود. برای محافظت انتخابی از فرآیندهایی که آنهایی را که کد غیرقابل اعتماد را اجرا می کنند، جدا می کنند، پیشنهاد می شود PSF را با تنظیم بیت های MSR "SSBD" و "PSFD" غیرفعال کنید، از جمله برای رشته های جداگانه. وصله هایی برای هسته لینوکس با اجرای گزینه های خط فرمان "psfd" و "nopsfd" آماده شده است که نحوه روشن و خاموش شدن PSF را کنترل می کند.
منبع: opennet.ru