منع الوصول إلى وضع المشرف

يُعدّ منع الوصول إلى وضع المشرف ( SMAP ) ميزةً في بعض تطبيقات وحدة المعالجة المركزية ، مثل بنية Intel Broadwell الدقيقة، تسمح لبرامج وضع المشرف بتعيين خرائط ذاكرة مساحة المستخدم اختياريًا ، بحيث يؤدي الوصول إلى هذه الخرائط من وضع المشرف إلى حدوث خطأ. وهذا يُصعّب على البرامج الخبيثة خداع النواة لاستخدام تعليمات أو بيانات من برنامج في مساحة المستخدم. [ 1 ] [ 2 ]

تاريخ

صُممت آلية منع الوصول إلى وضع المشرف لتكملة آلية منع التنفيذ في وضع المشرف (SMEP)، التي طُرحت سابقًا. يمكن استخدام SMEP لمنع وضع المشرف من تنفيذ التعليمات البرمجية في مساحة المستخدم عن غير قصد. وتُوسّع SMAP نطاق هذه الحماية ليشمل عمليات القراءة والكتابة. [ 2 ]

فوائد

بدون منع الوصول في وضع المشرف، يتمتع رمز المشرف عادةً بصلاحيات قراءة وكتابة كاملة لخرائط ذاكرة مساحة المستخدم (أو لديه القدرة على الحصول على صلاحيات كاملة). وقد أدى ذلك إلى ظهور العديد من الثغرات الأمنية، بما في ذلك ثغرات تصعيد الامتيازات ، والتي تعمل عن طريق إجبار النواة على الوصول إلى ذاكرة مساحة المستخدم دون قصد. [ 3 ] يمكن لأنظمة التشغيل حظر هذه الثغرات باستخدام SMAP لإجبار عمليات الوصول غير المقصودة إلى ذاكرة مساحة المستخدم على التسبب في أخطاء الصفحات . بالإضافة إلى ذلك، يمكن لـ SMAP كشف رمز النواة المعيب الذي لا يتبع الإجراءات المقصودة للوصول إلى ذاكرة مساحة المستخدم. [ 1 ]

مع ذلك، قد يؤدي استخدام SMAP في نظام التشغيل إلى زيادة حجم النواة وبطء الوصول إلى ذاكرة مساحة المستخدم من قِبل رمز المشرف، لأن SMAP يجب تعطيله مؤقتًا في كل مرة ينوي فيها رمز المشرف الوصول إلى ذاكرة مساحة المستخدم. [ 4 ]

التفاصيل الفنية

تشير المعالجات إلى دعمها لوضع المشرف ومنع الوصول من خلال ورقة CPUID للميزات الموسعة .

يتم تفعيل SMAP عند تفعيل ترحيل صفحات الذاكرة وتعيين بت SMAP في سجل التحكم CR4 . يمكن تعطيل SMAP مؤقتًا للوصول الصريح إلى الذاكرة عن طريق تعيين علامة EFLAGS.AC (فحص المحاذاة). يمكن استخدام تعليمات stac(تعيين علامة AC) و clac(مسح علامة AC) لتعيين العلامة أو مسحها بسهولة. [ 5 ]

عند ضبط بت SMAP في سجل CR4، ستؤدي عمليات قراءة وكتابة الذاكرة الصريحة إلى صفحات وضع المستخدم، التي تُنفذها التعليمات البرمجية التي تعمل بمستوى امتياز أقل من 3، إلى خطأ في الصفحة دائمًا إذا لم يتم ضبط علامة EFLAGS.AC. أما عمليات القراءة والكتابة الضمنية (مثل تلك التي تُجرى على جداول الواصفات ) إلى صفحات وضع المستخدم، فستؤدي دائمًا إلى خطأ في الصفحة إذا تم تمكين SMAP، بغض النظر عن قيمة EFLAGS.AC. [ 5 ]

دعم نظام التشغيل

قام إتش . بيتر أنفين بتنفيذ دعم نواة لينكس لخاصية منع الوصول في وضع المشرف. [ 1 ] وقد تم دمجها في نواة لينكس 3.7 الرئيسية (التي صدرت في ديسمبر 2012)، وهي مُفعّلة افتراضيًا للمعالجات التي تدعم هذه الخاصية. [ 4 ]

يدعم نظام FreeBSD منع تنفيذ وضع المشرف منذ عام 2012 [ 6 ] ومنع الوصول إلى وضع المشرف منذ عام 2018. [ 7 ]

يدعم نظام OpenBSD خاصية منع الوصول إلى وضع المشرف وخاصية منع التنفيذ المرتبطة بها منذ عام 2012، [ 8 ] وكان الإصدار 5.3 من OpenBSD هو أول إصدار يدعم هذه الخاصية. [ 9 ]

قام ماكسيم فيلار بتطبيق دعم نظام NetBSD لخاصية منع تنفيذ وضع المشرف (SMEP) في ديسمبر 2015. [ 10 ] كما قام بتطبيق دعم خاصية منع الوصول إلى وضع المشرف (SMAP) في أغسطس 2017. [ 11 ] وكان الإصدار 8.0 من NetBSD أول إصدار يدعم ويفعّل كلا الميزتين. [ 12 ]

تم تطبيق دعم Haiku لـ Supervisor Mode Execution Prevention (SMEP) بواسطة Jérôme Duval في يناير 2018. [ 13 ]

يدعم نظام macOS بروتوكول SMAP على الأقل منذ إصدار macOS 10.13 في عام 2017. [ 14 ]

انظر أيضاً

مراجع

  1. 1 2 3 كوربيت، جوناثان (26-09-2012). "منع الوصول إلى وضع المشرف" . LWN.net . تم الاسترجاع في 04-08-2017 .
  2. 1 2 مولنيكس، ديفيد (22-05-2015). "نظرة عامة فنية على عائلة معالجات Intel Xeon D: حماية الوصول في وضع المشرف (SMAP) 4" . إنتل . تم الاسترجاع في 04-08-2017 .
  3. كوربيت، جوناثان (2009-07-20). "متعة مع المؤشرات الفارغة، الجزء 1" . LWN.net . تم الاسترجاع في 2017-08-04 .
  4. 1 2 لارابيل، مايكل (2012-10-02). "إنتل SMAP تحاول تحسين أمان لينكس" . فورونيكس . تم الاسترجاع في 2017-08-04 .
  5. 1 2 "دليل مطوري برامج معمارية Intel 64 و IA-32، المجلد 3A: دليل برمجة النظام، الجزء 1" (ملف PDF) . Intel. يوليو 2017. تاريخ الاسترجاع : 4 أغسطس 2017 .
  6. بيلوسوف، قسطنطين (2012-11-01). "مراجعة 242433" . تم الاطلاع عليه بتاريخ 2018-01-19 .
  7. بيلوسوف، كونستانتين (29-07-2018). "مراجعة 336876" . تم الاطلاع عليه بتاريخ 30-07-2018 .
  8. هندرسون، ستيوارت (26 مارس 2017). "ردًا على: هل يدعم نظام OpenBSD بروتوكولي SMEP وSMAP؟ أو MPX؟" . تم الاطلاع عليه بتاريخ 4 أغسطس 2017 عبر marc.info .
  9. "OpenBSD 5.3" . OpenBSD . 2013-05-01 . تم الاطلاع عليه بتاريخ 2017-08-04 .
  10. "تغييرات جوهرية من NetBSD 7.0 إلى 8.0" . NetBSD . 12-10-2017 . تاريخ الاسترجاع: 09-01-2018 .
  11. ماكسيم فيلار (23 أغسطس 2017). "amd64: دعم smap" . تم الاطلاع عليه بتاريخ 9 يناير 2018 .
  12. "الإعلان عن NetBSD 8.0 (17 يوليو 2018)" . NetBSD . 2018-07-17 . تم الاطلاع عليه بتاريخ 2018-07-29 .
  13. "النواة: دعم Intel SMAP وSMEP على x86_64" . هايكو (نظام تشغيل) . 30 يناير 2018. تم الاسترجاع في 4 سبتمبر 2018 .
  14. "/osfmk/x86_64/idt64.s.auto.html" . شركة آبل، 25 سبتمبر 2017. تم الاطلاع عليه بتاريخ 19 سبتمبر 2018 .