روابط عمومی شرکت ایدکو (توزیعکنندهی محصولات کسپرسکی در ایران)؛ محقق بخش امنیت گوگل آقای تاویس اورماندی جزئیاتی در خصوص یک آسیبپذیری سختافزاری کشفشده در سیپییوهای AMD منتشر کرده است. این آسیبپذیری روی سری سیپییوهای Zen 2 که اولین بار سال 2019 ارائه شدند تأثیر گذاشته. گرچه یک سازه منسوخ بود بود اما همچنان تا اوایل 2021 در سیپییوها استفاده میشد. این خط محصول شامل سیپییوهایی مخصوص کامپیوترهای شخصی (مانند Ryzen 5 3600 معروف)، لپتاپها و از همه مهمتر سرورها (سیپییوهای AMD EPYC “Rome”) میشود. این ایراد ریشه در ترکیبی از قابلیتهای نسبتاً بیضرر AMD CPU دارد. کاشف بعمل آمده که اگر این قابلیتها ترکیب شوند تعاملی خاص با رجیسترهای سیپییو و سیستم کاملاً نرمال کد حدسی ممکن است به نشت داده امنیتی منجر شود. به طور تئوریک، سرقت با استفاده از این آسیبپذیری (شناسه منحصر به فرد CVE-2023-20593) بسیار آسان است و با سرعت زیادی هم انجام میشود: تا 30 کیلوبایت بر ثانیه برای هر یک از هستههای سیپییو. تا کنون هیچ مورد اکسپلویت واقعی گزارش نشده است. از طرفی دیگر پچها (آپدیتهای میکرو کد سیپییو) فقط برای بخشی از سیپییوهای آلوده موجود است. شرکت AMD قول داده تا آخر سال 2023 این مشکل را تماماً حل کند.
جزئیات اکسپلویت Zenbleed
همانطور که قبلاً اشاره کردیم، Zenbleed به لطف سیستم اجرای حدسی وجود دارد. پس این آسیبپذیری را نمیشود به این راحتیها توضیح داد. تاویس در این مقاله حقایق سردی را که فقط یک متخصص مجرب برنامهنویسی میتواند به انتهای آن رسیده باشد ارائه میدهد. به طور خلاصه، مجموعه دستوالعملهای اکسپلویت Zenbleed عبارتند از:
توضیح GitHub توسط تیم امنیت اطلاعات گوگل تا حدودی ماهیت مشکل را روشن میکند. در 15 سال گذشته، پردازندههای اینتل و AMD از مجموعه پسوند دستورالعمل AVX استفاده کردهاند. از جمله موارد دیگر، این دستورالعمل ها از رجیسترهای بُرداری 128 و 256 بیتی پشتیبانی میکنند. به بیان بسیار ساده، رجیسترهای CPU برای ذخیرهسازی موقت دادهها هنگام اجرای دستورالعملها استفاده میشوند. در برخی موارد، توانایی ذخیره مقادیر کافی از دادهها در رجیسترهای برداری امکان بهبود قابل ملاحظه عملکرد را فراهم میکند. رجیسترهای 128 بیتی ( XMM)و 256 بیتی YMM) ) معمولاً برای معمولترین عملیات مانند عملیاتهای مربوط به خواندن/نوشتن از/به RAM استفاده میشوند.
استفاده همزمان از رجیسترهای 128 و 256 بیتی مجموعه دیگری از مشکلات را به همراه دارد. در صورت استفاده همزمان در یک کار، رجیسترهای XMM به طور خودکار به رجیسترهای YMM تبدیل میشوند. این جایی است که صفر کردن "نیمه" بالای رجیستر YMM به طور معمول انجام می شود. دستورالعمل ویژه برای آن vzeroupper است. همه رجیسترها در فایل به اصطلاح ثبات ذخیره و به نوبت توسط برنامههای مختلف اجرا شده بر روی کامپیوتر استفاده میشوند.
وجه اشتراک بین Zenbleed وUse After Free چیست؟
اگر شرایطی را ایجاد کنید که دستور vzeroupper به صورت فرضی اجرا شود، عملیات در CPUهای AMD Zen 2 به اشتباه پایان مییابد. CPUها میتوانند دستورالعملها را بدون انتظار برای نتایج محاسبات قبلی بر اساس پیشبینی شاخه اجرا کنند. این بر سرعت کار میافزاید اما همچنین میتواند منجر به وضعیتی شود که در آن دستورالعمل ها "بیهوده" اجرا شوند، که توسط منطق برنامه مورد نیاز نیستند. اگر این اتفاق بیفتد، نتایج اجرای دستورالعمل باید به عقب برگردد. بنابراین، اگر vzeroupper "بیهوده" اجرا گردد، صفر کردن یک نیمه از ثبات YMM باید لغو شود.
اینجاست که خطای منطقی در CPU های Zen 2 رخ میدهد. ثبت در حالت به اصطلاح "تعریف نشده" باقی میماند. این بدان معناست که ممکن است همچنان حاوی تکههایی از دادههای سایر برنامههایی باشد که از فایل ثبت مشترک استفاده میکنند. در شرایط عادی، هیچ عاملی نباید به این دادهها دسترسی داشته باشد. Zenbleed شرایطی را ایجاد میکند که بدافزار میتواند اطلاعاتی را که از طریق ثباتهای برداری عبور میکند، «نظارت» کند. چنین رفتار CPU بسیار شبیه خطای نرم افزاری معمولی است که به عنوان «استفاده پس از آزاد» یا همان use after free شناخته میشود. این زمانی است که یک برنامه از یک منطقه رم خاص برای ذخیره دادههای خود استفاده کرده و سپس این منطقه رم را خالی کرده و آن را برای سایر برنامه ها در دسترس قرار میدهد. در نتیجه، برنامه سوم میتواند چنین دادههایی را بخواند، که به طور بالقوه میتواند حاوی اطلاعات مخفی باشد. اما در مورد Zenbleed، این نه یک خطای نرم افزاری بلکه یک خطای سختافزاری است.
ارزیابی اثر
در تئوری، Zenbleed اجازه خوانش مستقیم دادههای محرمانه را داده و این کار را با سرعت نسبتاً بالایی انجام میدهد. این به خودی خود معنی زیادی ندارد: چیزهایی مانند اینکه چه داده هایی را میتوان خواند، یا اینکه آیا میتوان از آنها به روشهای مضر استفاده کرد، به یک موقعیت خاص بستگی دارد. فقط برنامههایی که از XMM و YMM به طور همزمان استفاده میکنند تحت تأثیر این آسیب پذیری قرار میگیرند. اول از همه، اینها آرشیوهای سیستم لینوکس و خود هسته لینوکس، و همچنین کتابخانه های رمزنگاری و سیستم هایی مانند OpenSSL هستند. همچنین، دریافت اطلاعات مستلزم آن است که برنامه کاربردی داده فشرده باشد. برای اینکه مهاجم به چیزی واقعا مفید دست یابد، لازم است برخی از فرآیندهای رمزگذاری را بر روی رایانه آسیب دیده اجرا یا به طور فعال از مرورگر برای وبگردی استفاده کند، در غیر این صورت اکسپلویت آسیب پذیری بیهوده خواهد بود.
فقط کد آزمایشی، اثبات مفهوم، به ما نشان داده شده است. نشان دادن یک سناریوی واقعاً مضر فراتر از محدوده مطالعه بود. طبق گفته تیم Cloudflare، اکسپلویت این آسیبپذیری نسبتاً آسان است. حتی با استفاده از مرورگر میتوان این کار را انجام داد. میتوانیم تصور کنیم که مهاجمی برای قربانی خود لینکی به یک صفحه وب از پیش ساخته شده برای سرقت رمزهای عبور حسابهای حساس از حافظه پنهان ارسال میکند. غمانگیزترین بخش این است که سرقتی از این جنس، حتی هیچ ردی از خود باقی نمیگذارد. آیا می توان آن را در زندگی واقعی از بین برد؟ هنوز اطلاعاتی در این مورد در دست نیست. اما می دانیم که Zenbleed در یک محیط شرکتی میتواند خطرناکترین باشد. فقط شرایطی را تصور کنید که در آن یک اجارهدهنده سرور مجازی میتواند دادههای سرورهای دیگر و حتی هایپروایزر را بخواند، مشروط بر اینکه از همان هستههای CPU استفاده کنند. به همین دلیل است که اولین پچ منتشر شده مربوط به CPUهای سرور AMD EPYC بود.
آیندهی امنیت سختافزاری
در پایان مقاله، تاویس اورماندی بیان میکند که به لطف پدیده «فازینگ[1]» توانسته این مشکل را کشف کند. فازینگ مانند تست نرمافزاری معمولاً به معنای رساندن تغذیه به دادهها رندوم برنامه در جستجوی وضعیتی است که مجموعهای از چنین اطلاعاتی در آن باعث رفتار غیرعادی میشود. اینجا چالش، پیچیدهتر میشود: فازینگ سختافزاری (بیایید اسمش را این بگذاریم) به ایجاد برنامههایی اشاره دارد که در جستجوی پاسخ غیرعادی سیپییو از مجموعه تصاودفی از دستورالعملها استفاده میکنند. پایان ناهنجار چنین برنامهای لزوماً به معنای نشانه یک مشکل نیست. اورماندی چند روش برای شناسایی ناهنجاری ارائه میدهد: مانند اجرای همان کد روی سیپیهای مختلف- اگر برنامههای یکسان رفتار مختلفی از هم نشان دهند، تحقیقات برای اطمینان از عدم وجود خطای منطقی CPU ضروری میشود.
[1] FUZZING
منبع: کسپرسکی آنلاین (ایدکو)
کسپرسکی اسم یکی از بزرگترین شرکتهای امنیتی و سازنده آنتی ویروس است که برخی از کاربران اشتباهاً این شرکت و محصولات آنتی ویروس آن را با عناوینی نظیر کسپرسکای،کاسپرسکی، کسپراسکای، کسپراسکای، و یا کاسپراسکای نیز میشناسد. همچنین لازم به ذکر است مدیرعامل این شرکت نیز یوجین کسپرسکی نام دارد.