تلقت نواة Linux 5.4 تصحيحات لتقييد وصول الجذر إلى الأجزاء الداخلية للنواة

لينوس تورفالدس أخذت يتضمن الإصدار القادم من Linux 5.4 kernel مجموعة من التصحيحات "تأمين" المقترح ديفيد هاولز (ريد هات) وماثيو غاريت (ماثيو جاريت، يعمل في Google) لتقييد وصول المستخدم الجذر إلى النواة. يتم تضمين الوظائف المتعلقة بالتأمين في وحدة LSM المحملة اختياريًا (وحدة أمان Linux)، الذي يضع حاجزًا بين UID 0 والنواة، مما يقيد بعض الوظائف ذات المستوى المنخفض.

إذا نجح المهاجم في تنفيذ التعليمات البرمجية باستخدام حقوق الجذر، فيمكنه تنفيذ التعليمات البرمجية الخاصة به على مستوى النواة، على سبيل المثال، عن طريق استبدال النواة باستخدام kexec أو ذاكرة القراءة/الكتابة عبر /dev/kmem. قد تكون النتيجة الأكثر وضوحا لمثل هذا النشاط تجاوز التمهيد الآمن لـ UEFI أو استرداد البيانات الحساسة المخزنة على مستوى kernel.

في البداية، تم تطوير وظائف تقييد الجذر في سياق تعزيز حماية التمهيد الذي تم التحقق منه، وكانت التوزيعات تستخدم تصحيحات الطرف الثالث لمنع تجاوز التمهيد الآمن لـ UEFI لبعض الوقت. في الوقت نفسه، لم يتم تضمين هذه القيود في التكوين الرئيسي للنواة بسبب الخلافات في تنفيذها والمخاوف من تعطيل الأنظمة القائمة. استوعبت وحدة "التأمين" التصحيحات المستخدمة بالفعل في التوزيعات، والتي أعيد تصميمها في شكل نظام فرعي منفصل غير مرتبط بـ UEFI Secure Boot.

وضع التأمين يقيد الوصول إلى /dev/mem، /dev/kmem، /dev/port، /proc/kcore، debugfs، kprobes debug mode، mmiotrace، Tracefs، BPF، PCMCIA CIS (بنية معلومات البطاقة)، ​​وبعض واجهات ACPI ووحدة المعالجة المركزية يتم حظر تسجيلات MSR، ومكالمات kexec_file وkexec_load، ويحظر وضع السكون، ويقتصر استخدام DMA لأجهزة PCI، ويحظر استيراد كود ACPI من متغيرات EFI،
لا يُسمح بالتلاعب بمنافذ الإدخال/الإخراج، بما في ذلك تغيير رقم المقاطعة ومنفذ الإدخال/الإخراج للمنفذ التسلسلي.

بشكل افتراضي، وحدة التأمين غير نشطة، ويتم إنشاؤها عند تحديد خيار SECURITY_LOCKDOWN_LSM في kconfig ويتم تنشيطها من خلال معلمة kernel "lockdown ="، أو ملف التحكم "/sys/kernel/security/lockdown" أو خيارات التجميع LOCK_DOWN_KERNEL_FORCE_*والتي يمكن أن تأخذ قيمتي "النزاهة" و"السرية". في الحالة الأولى، يتم حظر الميزات التي تسمح بإجراء تغييرات على النواة قيد التشغيل من مساحة المستخدم، وفي الحالة الثانية، يتم أيضًا تعطيل الوظيفة التي يمكن استخدامها لاستخراج المعلومات الحساسة من النواة.

من المهم ملاحظة أن الإغلاق يحد فقط من الوصول القياسي إلى النواة، لكنه لا يحمي من التعديلات نتيجة استغلال الثغرات الأمنية. لمنع التغييرات على النواة قيد التشغيل عند استخدام عمليات الاستغلال بواسطة مشروع Openwall هذا تطوير وحدة منفصلة LKRG (حارس وقت تشغيل Linux Kernel).

المصدر: opennet.ru

إضافة تعليق