🔴 گام ۱: آموزش پیشبینی کننده
حمله کننده سیستم پیشبینی پرش های پردازنده را "تمرین" میدهد تا انتظار آدرسهای حافظه خاصی را هنگام اجرای دستور return داشته باشد.
⚪️ گام ۲: اجرای فرضی
وقتی پردازنده به دستور return میرسد، به طور فرضی کدی را در آدرس پیش بینی شده اجرا میکند، حتی اگر آن آدرس حاوی دادههای قربانی باشد.
🟢 گام ۳: استخراج از طریق کش
اگرچه نتیجه اجرای فرضی کنار گذاشته میشود، دادهها در کش باقی میمانند. حملهکننده زمان دسترسی به حافظه را تحلیل کرده و اطلاعات سرقت شده را بازیابی میکند.
💢 اصلاحات امنیتی گوگل :
اکسپلویت اصلی Retbleed فقط در شرایط آزمایشگاهی کار می کرد. تیم گوگل (ماتیو ریزو و اندی نگوین) سه مشکل بحرانی را حل کردند:
⭕ دور زدن KASLR: تصادفیسازی محل کد هسته در حافظه. محققان از حملات Side-Channel میکرومعماری برای تعیین آدرس های واقعی استفاده کردند.
⭕ ساخت گجت های ایدهآل: از طریق ROP حدسی (Return Oriented Programming) آنها یاد گرفتند زنجیرهای بهینه دستورالعملها را برای نشت دادهها بسازند.
💢 عملکرد در سندباکس: اکسپلویت حتی در محیط محدود و بدون دسترسی کار می کند که آن را بسیار خطرناک می کند.
⭕ نتایج عملی:
■ سرعت نشت: حدود ۱۳ کیلوبایت بر ثانیه با دقت بالا
■ اجرا از پروسس بدون دسترسی در سندباکس
■ امکان فهرست کردن تمام پروسس ها و ماشین های مجازی در حال اجرا
■ توانایی سرقت کردن کلیدهای رمزنگاری و داده های حساس دیگر
■ اجرا از ماشین های مجازی برای سرقت کردن داده های میزبان
💢 حقایق جالب:
اکسپلویت علیه پردازندههای AMD Zen 2 که به طور گسترده در سرویس های ابری استفاده می شوند، کار میکند. این بدان معناست که یک مستأجر ابری می تواند به طور بالقوه دادههای دیگران را بخواند. به ویژه خطرناک است که حمله از ماشینهای مجازی انجام میشود مهمان می تواند دادههای میزبان را سرقت کند که اصول جداسازی در محیط های ابری را نقض میکند.
🔴 اقدامات حفاظتی:
راهکارهای موجود هزینه بر بوده و به طور قابل توجهی بر عملکرد تأثیر میگذارند:
💢 میکروکد پردازنده: AMD و Intel بهروزرسانیهای میکروکد منتشر کردهاند اما این به کاهش سرعت ۱۰ تا ۲۰ درصدی منجر می شود.
غیرفعال کردن اجرای فرضی دستورالعمل ها: اقدامی رادیکال که می تواند عملکرد را ۳۰ تا ۵۰ درصد کاهش دهد.
💢 تفکیک کردن پروسس ها: تقویت تفکیک بین پروسس ها و ماشین های مجازی.
⭕ بررسی آسیب پذیری:
# بررسی وضعیت راهکارهای Retbleed :
cat /sys/devices/system/cpu/vulnerabilities/retbleed
# بررسی نسخه میکروکد
grep microcode /proc/cpuinfo
⭕ تنظیمات کرنل :
# فعالسازی همه راهکارها (تأثیر بر عملکرد)
echo "retbleed=auto" >> /etc/default/grub
update-grub
📃 منابع:
https://bughunters.google.com/blog/6243730100977664/exploiting-retbleed-in-the-real-world
https://github.com/google/security-research/tree/master/pocs/cpus/retbleed
@TryHackBoxStory