عزل لائحة النواة

عزل لائحة النواة (بالإنجليزية: Kernel page-table isolation)‏ أو KPTI هي تقنية أمنية في نواة لينكس من طرف جامعة غراتس النمساوية للتكنولوجيا لحجز جزئ من الذاكرة خاصة بالنواة وعزلها عن مساحة المستخدم، وضيفة التقنية حماية النظام من الهجمات على عنوين النواة

تم دمجها في نواة لينكس النسخة 4.15، التي صدرت في أوائل عام 2018 وكما تم إضافتها في النسخة 4.14.11 الطويلة الدعم.

نبذة

عدل

في أنظمة التشغيل الحديثة تستخدم ميزات في وحدات المعالجة المركزية CPU لحماية النواة من الإختراق. هذه الحماية تشمل آليات لجعل منطقة الذاكرة الخاصة بالنواة غير قابلة لكتابة البيانات وغير قابلة لتنفيذ. هذه المناطق لا يكمن الوصول إليها باستخدام المؤشرات.و مع ذلك يمكن استخدام إجراءات غير مباشرة تعمل في حدود ذاكرة النواة للوصول إلى تلك المناطق. يمكن استغلال هذه الإجراءات الغير مباشرة من داخل حدود النواة.

عند إقلاع برنامج ما أو مهام تقوم النواة بإستعمال إدارة الذاكرة Memory management لتخصيص الذاكرة للبرنامج، وفي الذاكرة المخصص له يرى الذاكرة كقطعة واحدة كلها له، وهو ما يعرف بالذاكرة الافتراضية أو العناوين المنطقية أو الصفحة وهي خلافا للعناوين الفيزيائية المادية الحقيقية تكون متصلة وكلها خاصة بالبرنامج وحده فلا يرى ولا يصل البرنامج إلى عناوين برامج أخرى كل برنامج يظن انه وحده، في المقابل الذاكرة المادية تكون مبعثرة بين برامج مختلفة ولها صلاحيات وملكيات مختلفة.

لكن في بعض الأحيان حماية العتاد لا تكفي أو يظهر فيها عيوب تصنيع غير قابلة للإصلاح ويستلزم تغيير العتاد كليا. وبما أن الحماية هي في طبقة العتاد فمن الصعوبة إصلاح الثغرة

وهذا ما حدث حيث ظهرت علة في الية العزل في معالجات من شركة انتل، فيمكن تجاوز الصلاحيات ان كان الكود في نفس الصفحة ويعني ان على نظام التشغيل زرع نفسه في صفحة مختلفة عندما يرغب أي تطبيق في عمل أي شيء مثل ان يطلب من النواة فتح ملف فلا يكفي ان ينتقل البرنامج إلى صلاحيات النواة على نفس الصفحة بل يجب ان تنتقل إلى صفحة أخرى Full context/page switch وينتج منه اداء سيء جدا بنسبة 30% لكن نتجنب المشاكل الامنية

عزل لائحة النواة KPTI يقوم بتغيير بعض العناوين أو حتى جميع العناوين النواة عشوائيا لتكون غير قابلة التنبئ بمكانها في الذاكرة ويجعل الهجمات أكثر صعوبة.[1]

المراجع

عدل