پژوهشگر امنیتی کریستوفر دومس (Christopher Domas) اکسپلویتی با نام Skitter Creek Bath Salts (Skitter) معرفی کرد که با تغییر یک بیت نگاشت حافظه در برخی پردازندههای AMD امکان دسترسی به بخشهای سطح پایین مانند پردازندهٔ امنیتی پلتفرم (PSP)، میکروکد و حالت مدیریت سیستم (SMM) را فراهم میسازد. این آسیبپذیری پردازندههای خانوادهٔ 15h و 16h تولیدشده در بازهٔ حدود 2011 تا 2015 را تحتتأثیر قرار میدهد.
تراشههای آسیبپذیر
خانوادهٔ 15h شامل تراشههای دسکتاپ سری FX و برخی مدلهای Opteron است؛ خانوادهٔ 16h نیز تراشههایی مبتنی بر هستههای Jaguar و Puma را دربرمیگیرد. این معماریها در کنسولهایی مانند PlayStation 4 و Xbox One بهکار رفتهاند، بنابراین شماری از پردازندههای Athlon، Sempron و Opteron‑X میان دستگاههای تحت تأثیر قرارگرفتهاند.
چگونه یک دستور میتواند دسترسی بدهد؟
برای افزایش کارایی، پردازندهها از تکنیکی بهنام bank interleaving استفاده میکنند که نگاشت منطقی آدرسها به سلولهای فیزیکی DRAM را تنظیم میکند. در برخی تراشهها گزینهٔ BankSwizzleMode (یا "Swizzle") وجود دارد که همین نگاشت را کنترل میکند و بهطرز غیرمنتظرهای از سطح سیستمعامل قابل تغییر است.
تنظیم Swizzle تنها با یک عملیات بیتتویست قابل تغییر است. نمونهٔ دستور گزارششده توسط پژوهشگران بهصورت زیر است:
xor dword [0xf80c2094], 0x00400000
با تغییر همین بیت نگاشت میان آدرسهای منطقی و سلولهای فیزیکی DRAM جابهجا میشود و بخشهایی از حافظه که معمولاً برای سیستمعامل پنهاناند، از جمله نواحی حاوی PSP، SMM و میکروکد، قابلدسترسی میگردند.
فرایند اکسپلویت
پیشنیازها
- دسترسی سطح هسته (kernel) یا اجرای درایور با امتیازات بالا؛ بدون این سطح دسترسی اجرای اکسپلویت ممکن نیست.
مراحل کار
- نوشتن یک مقدار canary (مثلاً 0xDEADBEEF) در حافظه برای تشخیص اثر تغییر نگاشت.
- تغییر وضعیت Swizzle با دستور بیتتویست و اسکن حافظه برای یافتن انتقال canary؛ این مرحله نقشهٔ واقعی نگاشت را آشکار میکند.
- بازگرداندن Swizzle به حالت اولیه و سپس خواندن/نوشتن مستقیم به آدرسهای فیزیکی مشخصشده برای دسترسی به بخشهای محرمانه.
ارزیابی خطر
اجرای این اکسپلویت نیازمند کنترل قابلتوجهی روی سیستم است؛ یعنی مهاجم پیش از هر چیز باید توانایی اجرای کد در فضای هسته را داشته باشد. با این حال، دسترسی به PSP و میکروکد پیامدهای جدی دارد: میتواند مرزهای امنیتی سطح سختافزار را نقض کند و اجازهٔ استقرار کدهای ناخواسته در سطوح بسیار پایین سیستم را بدهد، موضوعی که اعتماد به مدلهای امضاشدهٔ فریمور را تضعیف میکند.
چرا سیستم معمولاً کرش نمیکند؟
تغییر Swizzle موقتی و کنترلشده انجام میشود؛ پژوهشگران پیش از اعمال تغییر وقفهها را غیرفعال کرده و با دقت نقشهٔ نگاشت را کشف میکنند. مرحلهٔ گسترش اولیه ممکن است ریسک کرش را افزایش دهد، اما پس از بهدستآوردن نقشه، دسترسی به آدرسهای هدف بهنسبت کمتر مخرب انجام میشود.
توضیح فنی کوتاه دربارهٔ MMIO و MMCONFIG
بخشی از فضای آدرسدهی که توسط سیستمعامل قابلدسترسی است مبتنی بر Memory-Mapped I/O است؛ یعنی خواندن و نوشتن در نواحی مشخص ممکن است بهجای دسترسی مستقیم به DRAM، با کنترلرها و ثباتهای سختافزاری تعامل کند. برای آشنایی بیشتر: Memory-mapped I/O در ویکیپدیا.
واکنش AMD و وضعیت پشتیبانی
AMD اعلام کرده تراشههای آسیبپذیر عمدتاً خارج از چرخهٔ پشتیبانی امنیتی قرار دارند. همچنین سطح دسترسی لازم برای اجرای این اکسپلویت نشان میدهد مهاجم پیشتر کنترل قابلتوجهی بر دستگاه بهدست آورده است. برای اطلاعات تکمیلی میتوان به صفحهٔ AMD Secure Processor و سایت رسمی AMD مراجعه کرد.
اقدامات پیشنهادی برای کاربران و سازمانها
- در صورت استفاده از پردازندههای خانوادهٔ 15h یا 16h، جایگزینی سختافزار با نمونههای تحت پشتیبانی و بهروزرسانیشده، امنترین گزینه است.
- نظارت دقیق بر مجوزها و کنترل دستیابی به سطح هسته؛ دسترسی در سطح kernel باید محدود و ثبتشده باشد.
- اجرای سیاستهای مدیریتی سختگیرانه برای درایورها، ایمنسازی BIOS/UEFI و استفاده از مکانیزمهای تأیید اصالت برای قطعات فریمور.
منابع و خواندنیهای مرتبط
گزارشها و پوشش خبری موضوع از جمله Tom's Hardware منتشر شدهاند. همچنین پروژهٔ Sandsifter و سایر مقالات کریستوفر دومس منابع مفیدی برای مطالعهٔ بیشتر هستند.
این رخنه یادآور آن است که اجزای سختافزاری که تا دیروز «قلمرو مطمئن» شمرده میشدند، هنوز میتوانند هدف حملات پیچیده باشند. افزایش شفافیت تولیدکنندگان، تمدید بازهٔ پشتیبانی امنیتی و تقویت مکانیزمهای حفاظتی در برابر دسترسیهای سطح هسته از ضروریات بلندمدت برای کاهش چنین خطراتی است.





