إصدار وحدة LKRG 0.8 للحماية من استغلال الثغرات الأمنية في نواة Linux

مشروع الجدار المفتوح نشرت إصدار وحدة النواة لكرغ 0.8 (Linux Kernel Runtime Guard)، المصمم لكشف ومنع الهجمات وانتهاكات سلامة هياكل kernel. على سبيل المثال، يمكن للوحدة الحماية من التغييرات غير المصرح بها للنواة قيد التشغيل ومحاولات تغيير أذونات عمليات المستخدم (اكتشاف استخدام عمليات الاستغلال). الوحدة مناسبة لتنظيم الحماية ضد عمليات استغلال معروفة بالفعل لنواة Linux (على سبيل المثال، في المواقف التي يصعب فيها تحديث النواة في النظام)، ولمواجهة عمليات استغلال الثغرات غير المعروفة حتى الآن. رمز المشروع وزعت من خلال مرخص بموجب GPLv2.

من بين التغييرات في الإصدار الجديد:

  • تم تغيير موقع مشروع LKRG، والذي لم يعد مقسمًا إلى أنظمة فرعية منفصلة للتحقق من النزاهة وتحديد استخدام برمجيات إكسبلويت، ولكن يتم تقديمه كمنتج كامل لتحديد الهجمات وانتهاكات النزاهة المختلفة؛
  • يتم توفير التوافق مع نواة Linux من 5.3 إلى 5.7، وكذلك مع النوى المجمعة بتحسينات قوية لدول مجلس التعاون الخليجي، بدون خيارات CONFIG_USB وCONFIG_STACKTRACE أو مع خيار CONFIG_UNWINDER_ORC، وكذلك مع النوى التي لا تحتوي على وظائف مرتبطة بـ LKRG، إذا كان ذلك ممكنًا. يتم الاستغناء عنه؛
  • عند البناء، يتم التحقق من بعض إعدادات kernel CONFIG_* الإلزامية لإنشاء رسائل خطأ ذات معنى بدلاً من الأعطال الغامضة؛
  • تمت إضافة دعم لأوضاع الاستعداد (ACPI S3، التعليق على ذاكرة الوصول العشوائي) ووضع السكون (S4، التعليق على القرص)؛
  • تمت إضافة دعم DKMS إلى Makefile؛
  • تم تنفيذ الدعم التجريبي لمنصات ARM 32 بت (تم اختباره على Raspberry Pi 3 Model B). تم توسيع دعم AArch64 (ARM64) المتوفر سابقًا لتوفير التوافق مع لوحة Raspberry Pi 4؛
  • تمت إضافة خطافات جديدة، بما في ذلك معالج استدعاء قادر () لتحديد عمليات الاستغلال التي تتلاعب "قدرات"، وليس معرفات العملية (أوراق اعتماد);
  • تم اقتراح منطق جديد لاكتشاف محاولات الهروب من قيود مساحة الاسم (على سبيل المثال، من حاويات Docker)؛
  • في أنظمة x86-64، يتم فحص بت SMAP (منع الوصول إلى وضع المشرف) وتطبيقه، وهو مصمم لمنع الوصول إلى بيانات مساحة المستخدم من التعليمات البرمجية المميزة التي تعمل على مستوى kernel. تم تنفيذ حماية SMEP (منع تنفيذ وضع المشرف) مسبقًا؛
  • أثناء التشغيل، يتم وضع إعدادات LKRG في صفحة الذاكرة التي تكون عادةً للقراءة فقط؛
  • تقتصر معلومات التسجيل التي قد تكون مفيدة للغاية للهجمات (على سبيل المثال، المعلومات حول العناوين في kernel) على وضع تصحيح الأخطاء (log_level=4 والإصدارات الأحدث)، والذي يتم تعطيله افتراضيًا.
  • تمت زيادة قابلية التوسع في قاعدة بيانات تتبع العمليات - فبدلاً من شجرة RB واحدة محمية بواسطة Spinlock واحد، يتم استخدام جدول تجزئة مكون من 512 شجرة RB محمية بـ 512 قفلًا للقراءة والكتابة؛
  • تم تنفيذ الوضع وتمكينه افتراضيًا، حيث يتم غالبًا التحقق من سلامة معرفات العملية للمهمة الحالية فقط، وأيضًا بشكل اختياري للمهام المنشطة (التنشيط). بالنسبة للمهام الأخرى التي تكون في حالة سكون أو تعمل دون الوصول إلى واجهة برمجة تطبيقات kernel التي يتحكم فيها LKRG، يتم إجراء الفحص بشكل أقل تكرارًا.
  • تمت إضافة معلمات sysctl ووحدة نمطية جديدة لضبط LKRG، بالإضافة إلى اثنين من sysctl للتكوين المبسط عن طريق الاختيار من مجموعات إعدادات الضبط الدقيق (ملفات التعريف) التي أعدها المطورون؛
  • تم تغيير الإعدادات الافتراضية لتحقيق توازن أكثر توازناً بين سرعة اكتشاف المخالفات وفعالية الرد من جهة، والتأثير على الأداء ومخاطر النتائج الإيجابية الكاذبة من جهة أخرى؛
  • تمت إعادة تصميم ملف وحدة systemd لتحميل وحدة LKRG مبكرًا في التمهيد (يمكن استخدام خيار سطر أوامر kernel لتعطيل الوحدة)؛

مع الأخذ في الاعتبار التحسينات المقترحة في الإصدار الجديد، يُقدر انخفاض الأداء عند استخدام LKRG 0.8 بنسبة 2.5% في الوضع الافتراضي ("ثقيل") و2% في الوضع الخفيف ("خفيف").

في عقد مؤخرا دراسة فعالية الحزم للكشف عن الجذور الخفية LKRG وأظهر أفضل النتائج، تحديد 8 من أصل 9 برامج rootkit التي تم اختبارها والتي تعمل على مستوى النواة دون نتائج إيجابية كاذبة (rootkits Diamorphine، Honey Pot Bears، LilyOfTheValley، Nuk3 Gh0st، Puszek، Reptile، Rootfoo Linux Rootkit وSutekh، ولكن Keysniffer، وهي نواة) الوحدة النمطية، تم تفويتها باستخدام برنامج Keylogger، وليس برنامج rootkit بالمعنى الحرفي). للمقارنة، اكتشفت حزم AIDE وOSSEC وRootkit Hunter 2 من أصل 9 برامج rootkit، بينما لم تكتشف Chkrootkit أيًا منها. في الوقت نفسه، لا يدعم LKRG اكتشاف الجذور الخفية الموجودة في مساحة المستخدم، لذلك يتم تحقيق أكبر قدر من الكفاءة عند استخدام مزيج من AIDE وLKRG، مما جعل من الممكن تحديد 14 من أصل 15 مجموعة من الجذور الخفية من جميع الأنواع.

بالإضافة إلى ذلك، يمكن الإشارة إلى أن مطور التوزيع Whonix التي تشكيل حزم جاهزة مع DKMS لـ Debian وWhonix وQubes وKicksecure وحزمة لـ قوس لينكس تم تحديثه بالفعل إلى الإصدار 0.8. الحزم مع LKRG متوفرة أيضًا باللغة الروسية ALT Linux и أسترا لينكس.

يتم إجراء التحقق من التكامل في LKRG من خلال مقارنة الكود والبيانات الفعلية للنواة والوحدات النمطية، وبعض هياكل البيانات المهمة وإعدادات وحدة المعالجة المركزية مع التجزئة المخزنة أو نسخ مناطق الذاكرة المقابلة، أو هياكل البيانات أو السجلات. يتم تنشيط الشيكات بشكل دوري عن طريق المؤقت وعند وقوع أحداث مختلفة.

يتم تحديد الاستخدام المحتمل للثغرات وهجمات الحظر في المرحلة التي تسبق أن توفر النواة الوصول إلى الموارد (على سبيل المثال، قبل فتح ملف)، ولكن بعد أن تتلقى العملية أذونات غير مصرح بها (على سبيل المثال، تغيير UID). عند اكتشاف سلوك غير مصرح به، تُجبر العمليات على الإنهاء افتراضيًا، وهو ما يكفي لمنع العديد من عمليات استغلال الثغرات.

المصدر: opennet.ru

إضافة تعليق