انتشار ماژول LKRG 0.8 برای محافظت در برابر سوء استفاده از آسیب پذیری ها در هسته لینوکس

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

از جمله تغییرات نسخه جدید:

  • موقعیت پروژه LKRG تغییر کرده است که دیگر به زیرسیستم های جداگانه برای بررسی یکپارچگی و تعیین استفاده از اکسپلویت ها تقسیم نمی شود، بلکه به عنوان یک محصول کامل برای شناسایی حملات و نقض های مختلف یکپارچگی ارائه می شود.
  • سازگاری با هسته‌های لینوکس از 5.3 تا 5.7، و همچنین با هسته‌های کامپایل‌شده با بهینه‌سازی‌های تهاجمی GCC، بدون گزینه‌های CONFIG_USB و CONFIG_STACKTRACE یا با گزینه CONFIG_UNWINDER_ORC، و همچنین با هسته‌هایی که عملکرد LKRG ندارند، ارائه می‌شود. کنار گذاشته شود؛
  • هنگام ساخت، برخی از تنظیمات اجباری هسته CONFIG_* برای ایجاد پیام های خطای معنی دار به جای خرابی های مبهم بررسی می شوند.
  • اضافه شدن پشتیبانی از حالت های آماده به کار (ACPI S3، تعلیق در RAM) و حالت خواب (S4، تعلیق روی دیسک).
  • پشتیبانی از DKMS به Makefile اضافه شد.
  • پشتیبانی آزمایشی برای پلتفرم های 32 بیتی ARM پیاده سازی شده است (تست شده روی Raspberry Pi 3 Model B). پشتیبانی قبلی از AArch64 (ARM64) برای ارائه سازگاری با برد Raspberry Pi 4 گسترش یافته است.
  • قلاب‌های جدیدی اضافه شده‌اند، از جمله یک کنترل کننده تماس با قابلیت () برای شناسایی بهتر اکسپلویت‌هایی که دستکاری می‌کنند.قابلیت های"، نه شناسه های پردازش (مدارک تحصیلی);
  • منطق جدیدی برای شناسایی تلاش‌ها برای فرار از محدودیت‌های فضای نام (به عنوان مثال، از کانتینرهای Docker) پیشنهاد شده است.
  • در سیستم‌های x86-64، بیت SMAP (Supervisor Mode Access Prevention) بررسی و اعمال می‌شود، که برای مسدود کردن دسترسی به داده‌های فضای کاربر از کدهای ممتاز در حال اجرا در سطح هسته طراحی شده است. حفاظت SMEP (Supervisor Mode Execution Prevention) قبلاً اجرا شده بود.
  • در حین کار، تنظیمات LKRG در یک صفحه حافظه قرار می گیرد که معمولاً فقط خواندنی است.
  • ثبت اطلاعاتی که ممکن است برای حملات بسیار مفید باشد (به عنوان مثال، اطلاعات مربوط به آدرس‌ها در هسته) به حالت اشکال‌زدایی (log_level=4 و بالاتر) محدود می‌شود که به طور پیش‌فرض غیرفعال است.
  • مقیاس پذیری پایگاه داده ردیابی فرآیند افزایش یافته است - به جای یک درخت RB محافظت شده توسط یک spinlock، یک جدول هش از 512 درخت RB محافظت شده توسط 512 قفل خواندن و نوشتن استفاده می شود.
  • حالتی به طور پیش‌فرض پیاده‌سازی و فعال شده است که در آن یکپارچگی شناسه‌های فرآیند اغلب فقط برای کار فعلی و همچنین به صورت اختیاری برای وظایف فعال شده (بیدار شدن) بررسی می‌شود. برای کارهای دیگری که در حالت خواب هستند یا بدون دسترسی به API هسته کنترل شده توسط LKRG کار می کنند، بررسی کمتر انجام می شود.
  • افزودن پارامترهای sysctl و ماژول جدید برای تنظیم دقیق LKRG، و همچنین دو sysctl برای پیکربندی ساده شده با انتخاب از مجموعه تنظیمات تنظیم دقیق (پروفایل) که توسط توسعه دهندگان تهیه شده است.
  • تنظیمات پیش‌فرض برای دستیابی به تعادل متعادل‌تر بین سرعت تشخیص تخلفات و اثربخشی پاسخ از یک سو و تأثیر بر عملکرد و خطر مثبت کاذب از سوی دیگر تغییر کرده‌اند.
  • فایل واحد systemd برای بارگیری ماژول LKRG در ابتدای راه‌اندازی مجدد طراحی شده است (از گزینه خط فرمان هسته می‌توان برای غیرفعال کردن ماژول استفاده کرد).

با در نظر گرفتن بهینه‌سازی‌های پیشنهادی در نسخه جدید، کاهش عملکرد هنگام استفاده از LKRG 0.8 در حالت پیش‌فرض ("سنگین") 2.5٪ و در حالت سبک ("سبک") 2٪ برآورد می‌شود.

در اخیرا برگزار شد تحقیق اثربخشی بسته ها برای شناسایی روت کیت های LKRG نشان داد بهترین نتایج، شناسایی 8 روت کیت از 9 روت کیت آزمایش شده که در سطح هسته کار می‌کنند و بدون مثبت کاذب کار می‌کنند (روت کیت‌های Diamorphine، Honey Pot Bears، LilyOfTheValley، Nuk3 Gh0st، Puszek، Reptile، Rootfoo Linux Rootkit و Sutekh شناسایی شدند، اما Keysniffer، که یک Keysniffer است، ماژول، با یک کی لاگر، نه یک روت کیت به معنای تحت اللفظی از دست رفته است). برای مقایسه، بسته های AIDE، OSSEC و Rootkit Hunter 2 مورد از 9 روت کیت را شناسایی کردند، در حالی که Chkrootkit هیچ کدام را شناسایی نکرد. در عین حال، LKRG از شناسایی روت کیت های واقع در فضای کاربر پشتیبانی نمی کند، بنابراین بیشترین کارایی هنگام استفاده از ترکیبی از AIDE و LKRG حاصل می شود که شناسایی 14 از 15 روت کیت از همه نوع را ممکن می سازد.

علاوه بر این، می توان اشاره کرد که توسعه دهنده توزیع Whonix آغاز شد شکل دادن بسته های آماده با DKMS برای Debian، Whonix، Qubes و Kicksecure و یک بسته برای قوس لینوکس قبلا به نسخه 0.8 آپدیت شده است. بسته های LKRG به زبان روسی نیز موجود است ALT لینوکس и AstraLinux.

بررسی یکپارچگی در LKRG با مقایسه کد و داده‌های واقعی هسته و ماژول‌ها، برخی از ساختارهای داده مهم و تنظیمات CPU با هش‌های ذخیره‌شده یا کپی‌هایی از مناطق حافظه، ساختارهای داده یا ثبات‌های مربوطه انجام می‌شود. چک ها هم به صورت دوره ای توسط تایمر و هم در صورت وقوع رویدادهای مختلف فعال می شوند.

تعیین استفاده احتمالی از اکسپلویت ها و حملات مسدود کردن در مرحله قبل از دسترسی هسته به منابع (به عنوان مثال، قبل از باز کردن یک فایل)، اما پس از دریافت مجوزهای غیرمجاز فرآیند (به عنوان مثال، تغییر UID) انجام می شود. هنگامی که رفتار غیرمجاز شناسایی می شود، فرآیندها به طور پیش فرض مجبور به خاتمه می شوند که برای مسدود کردن بسیاری از سوء استفاده ها کافی است.

منبع: opennet.ru

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