هسته لینوکس 5.4 وصله هایی برای محدود کردن دسترسی ریشه به داخلی هسته دریافت کرد

لینوس توروالدز پذیرفته شده موجود در نسخه آتی هسته لینوکس 5.4 مجموعه ای از وصله ها است "مستند« پیشنهاد شده دیوید هاولز (کلاه قرمزی) و متیو گرت (متیو گرت، در گوگل کار می کند) برای محدود کردن دسترسی کاربر ریشه به هسته. عملکرد مربوط به قفل در یک ماژول LSM که به صورت اختیاری بارگذاری شده است (ماژول امنیتی لینوکس) که یک مانع بین UID 0 و هسته قرار می دهد و عملکردهای سطح پایین خاصی را محدود می کند.

اگر یک مهاجم به اجرای کد با حقوق ریشه دست یابد، می تواند کد خود را در سطح هسته اجرا کند، به عنوان مثال، با جایگزین کردن هسته با استفاده از kexec یا خواندن/نوشتن حافظه از طریق /dev/kmem. واضح ترین پیامد چنین فعالیتی ممکن است انحراف UEFI Secure Boot یا بازیابی اطلاعات حساس ذخیره شده در سطح هسته.

در ابتدا، توابع محدودیت ریشه در زمینه تقویت حفاظت از بوت تایید شده توسعه یافتند، و توزیع‌ها برای مدتی طولانی از وصله‌های شخص ثالث برای مسدود کردن دور زدن بوت امن UEFI استفاده می‌کردند. در همان زمان، چنین محدودیت هایی در ترکیب اصلی هسته به دلیل وجود نداشت اختلاف نظرها در اجرای آنها و ترس از اختلال در سیستم های موجود. ماژول «قفل کردن» وصله‌هایی را که قبلاً در توزیع‌ها استفاده می‌شد، جذب کرد، که به شکل یک زیرسیستم جداگانه طراحی شده‌اند که به UEFI Secure Boot متصل نشده بود.

حالت Lockdown دسترسی به /dev/mem، /dev/kmem، /dev/port، /proc/kcore، debugfs، حالت اشکال زدایی kprobes، mmiotrace، tracefs، BPF، PCMCIA CIS (ساختار اطلاعات کارت)، برخی از رابط های ACPI و CPU را محدود می کند. ثبت‌های MSR، تماس‌های kexec_file و kexec_load مسدود شده‌اند، حالت خواب ممنوع است، استفاده از DMA برای دستگاه‌های PCI محدود است، وارد کردن کد ACPI از متغیرهای EFI ممنوع است،
دستکاری با پورت های ورودی/خروجی از جمله تغییر شماره وقفه و پورت ورودی/خروجی برای پورت سریال مجاز نیست.

به طور پیش فرض، ماژول قفل فعال نیست، زمانی ساخته می شود که گزینه SECURITY_LOCKDOWN_LSM در kconfig مشخص شده باشد و از طریق پارامتر هسته "lockdown="، فایل کنترلی "/sys/kernel/security/lockdown" یا گزینه های اسمبلی فعال شود. LOCK_DOWN_KERNEL_FORCE_*، که می تواند مقادیر "یکپارچگی" و "محرمانه بودن" را بگیرد. در حالت اول، ویژگی هایی که اجازه می دهد تغییراتی در هسته در حال اجرا از فضای کاربر ایجاد شود مسدود می شوند و در حالت دوم، عملکردی که می توان برای استخراج اطلاعات حساس از هسته استفاده کرد نیز غیرفعال می شود.

مهم است که توجه داشته باشید که قفل کردن فقط دسترسی استاندارد به هسته را محدود می کند، اما در برابر تغییرات در نتیجه سوء استفاده از آسیب پذیری ها محافظت نمی کند. برای جلوگیری از تغییرات هسته در حال اجرا در هنگام استفاده از اکسپلویت توسط پروژه Openwall در حال توسعه است ماژول جداگانه LKRG (Linux Kernel Runtime Guard).

منبع: opennet.ru

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