وصله های معرفی شده برای تصادفی کردن آدرس های پشته هسته لینوکس برای تماس های سیستمی

کیس کوک، مدیر ارشد سیستم سابق kernel.org و رهبر تیم امنیتی اوبونتو، که اکنون در گوگل بر روی ایمن‌سازی اندروید و ChromeOS کار می‌کند، مجموعه‌ای از وصله‌ها را برای تصادفی کردن آفست‌ها در پشته هسته هنگام پردازش تماس‌های سیستم منتشر کرد. وصله ها امنیت هسته را با تغییر محل قرارگیری پشته بهبود می بخشند و حملات روی پشته را بسیار دشوارتر و کمتر موفق می کنند. پیاده سازی اولیه از پردازنده های ARM64 و x86/x86_64 پشتیبانی می کند.

ایده اصلی برای پچ متعلق به پروژه PaX RANDKSTACK است. در سال 2019، Elena Reshetova، مهندس اینتل، تلاش کرد تا یک پیاده‌سازی از این ایده مناسب برای گنجاندن در هسته اصلی لینوکس ایجاد کند. بعدها، ابتکار عمل توسط Kees Cook انجام شد، که یک پیاده سازی مناسب برای نسخه اصلی هسته ارائه کرد. قرار است این وصله ها به عنوان بخشی از نسخه 5.13 گنجانده شوند. حالت به طور پیش فرض غیرفعال می شود. برای فعال کردن آن، پارامتر خط فرمان هسته "randomize_kstack_offset=on/off" و تنظیم CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT پیشنهاد شده است. سربار فعال کردن حالت تقریباً 1٪ کاهش عملکرد تخمین زده می شود.

ماهیت حفاظت پیشنهادی انتخاب یک افست پشته تصادفی برای هر تماس سیستمی است، که تعیین طرح پشته در حافظه را دشوار می کند، حتی پس از دریافت داده های آدرس، زیرا تماس سیستم بعدی آدرس پایه پشته را تغییر می دهد. برخلاف پیاده‌سازی PaX RANDKSTACK، در وصله‌های پیشنهادی برای گنجاندن در هسته، تصادفی‌سازی نه در مرحله اولیه (cpu_current_top_of_stack)، بلکه پس از تنظیم ساختار pt_regs انجام می‌شود که استفاده از روش‌های مبتنی بر ptrace را برای تعیین افست تصادفی غیرممکن می‌کند. در طول تماس سیستمی طولانی مدت

منبع: opennet.ru

اضافه کردن نظر