محققان مرکز امنیت اطلاعات هلمهولتز (CISPA) یک روش جدید حمله CacheWarp را برای به خطر انداختن مکانیسم امنیتی AMD SEV (مجازی رمزگذاری شده امن) مورد استفاده در سیستم های مجازی سازی برای محافظت از ماشین های مجازی در برابر تداخل هایپروایزر یا مدیر سیستم میزبان منتشر کرده اند. روش پیشنهادی به یک مهاجم با دسترسی به هایپروایزر اجازه می دهد تا کد شخص ثالث را اجرا کند و امتیازات را در یک ماشین مجازی محافظت شده با استفاده از AMD SEV افزایش دهد.
این حمله بر اساس استفاده از یک آسیب پذیری (CVE-2023-20592) ناشی از عملکرد نادرست حافظه پنهان در هنگام اجرای دستورالعمل پردازنده INVD است که با کمک آن می توان به عدم تطابق داده ها در حافظه و حافظه پنهان دست یافت. و مکانیسم های دور زدن برای حفظ یکپارچگی حافظه ماشین مجازی، بر اساس پسوندهای SEV-ES و SEV-SNP پیاده سازی شده است. این آسیب پذیری پردازنده های AMD EPYC را از نسل اول تا سوم تحت تاثیر قرار می دهد.
برای پردازندههای نسل سوم AMD EPYC (Zen 3)، این مشکل در بهروزرسانی میکروکد ماه نوامبر که دیروز توسط AMD منتشر شد، برطرف شد (این اصلاحیه منجر به کاهش عملکرد نمیشود). برای پردازندههای نسل اول و دوم AMD EPYC (Zen 1 و Zen 2)، این محافظت ارائه نمیشود، زیرا این پردازندهها فاقد پشتیبانی از افزونه SEV-SNP هستند که نظارت بر یکپارچگی را فراهم میکند. ماشینهای مجازینسل چهارم پردازندههای AMD EPYC "Genoa" مبتنی بر ریزمعماری "Zen 4" آسیبپذیر نیستند.
فناوری AMD SEV برای جداسازی ماشین مجازی توسط ارائه دهندگان ابری مانند Amazon Web Services (AWS)، Google Cloud، Microsoft Azure و Oracle Compute Infrastructure (OCI) استفاده میشود. محافظت AMD SEV از طریق رمزگذاری سطح سختافزاری حافظه ماشین مجازی پیادهسازی میشود. علاوه بر این، افزونه SEV-ES (Encrypted State) از رجیسترهای CPU محافظت میکند. فقط سیستم مهمان فعلی به دادههای رمزگشایی شده دسترسی دارد، در حالی که سایر سیستمها میتوانند به آن دسترسی داشته باشند. ماشینهای مجازی و هایپروایزر، هنگام تلاش برای دسترسی به این حافظه، مجموعهای از دادههای رمزگذاری شده را دریافت میکند.
نسل سوم پردازنده های AMD EPYC یک افزونه اضافی به نام SEV-SNP (Secure Nested Paging) معرفی کرد که عملکرد ایمن جداول صفحه حافظه تودرتو را تضمین می کند. علاوه بر رمزگذاری کلی حافظه و جداسازی ثبت، SEV-SNP اقدامات اضافی را برای محافظت از یکپارچگی حافظه با جلوگیری از تغییرات VM توسط Hypervisor اجرا می کند. کلیدهای رمزگذاری در کنار یک پردازنده جداگانه PSP (پردازنده امنیت پلتفرم) که در تراشه تعبیه شده است، مدیریت می شوند که بر اساس معماری ARM پیاده سازی شده است.
ماهیت روش حمله پیشنهادی استفاده از دستورالعمل INVD برای باطل کردن بلوکها (خطوط) در حافظه پنهان صفحات کثیف بدون ریختن دادههای انباشته شده در حافظه پنهان به حافظه است (نوشتن بک). بنابراین، این روش به شما امکان می دهد تا داده های تغییر یافته را بدون تغییر وضعیت حافظه از حافظه پنهان خارج کنید. برای انجام یک حمله، پیشنهاد می شود از استثناهای نرم افزاری (تزریق خطا) برای قطع عملکرد ماشین مجازی در دو مکان استفاده شود: در وهله اول، مهاجم دستورالعمل "wbnoinvd" را برای بازنشانی تمام عملیات نوشتن حافظه انباشته شده در آن فراخوانی می کند. حافظه نهان، و در وهله دوم دستور "invd" را برای برگرداندن عملیات نوشتنی که در حافظه منعکس نشده اند به حالت قبلی فراخوانی می کند.
برای بررسی سیستمهای شما از نظر آسیبپذیری، یک نمونه اولیه بهرهبرداری منتشر شده است که به شما امکان میدهد یک استثنا را در یک ماشین مجازی محافظت شده از طریق AMD SEV وارد کنید و تغییرات VM را که به حافظه بازنشانی نشدهاند، برگردانید. بازگشت یک تغییر را می توان برای تغییر جریان یک برنامه با بازگرداندن یک آدرس بازگشتی قدیمی در پشته یا برای استفاده از پارامترهای ورود به سیستم یک جلسه قدیمی که قبلاً با بازگرداندن مقدار مشخصه احراز هویت احراز هویت شده است، استفاده کرد.
برای مثال، محققان امکان استفاده از روش CacheWarp را برای انجام حمله Bellcore به پیادهسازی الگوریتم RSA-CRT در کتابخانه ipp-crypto نشان دادند که امکان بازیابی کلید خصوصی را با جایگزینی خطاها در طول محاسبه امضای دیجیتال فراهم میکند. آنها همچنین نشان دادند که چگونه میتوان پارامترهای تأیید جلسه OpenSSH را در طول اتصال از راه دور به یک سیستم مهمان جعل کرد و سپس هنگام اجرای ابزار sudo، وضعیت تأیید را تغییر داد تا امتیازات ریشه را در ... به دست آورد. Ubuntu ۲۰ آوریل. این اکسپلویت روی سیستمهایی با پردازندههای AMD EPYC 7252، ۷۳۱۳P و ۷۴۴۳ آزمایش شده است.
منبع: opennet.ru
