Intel MPX
تُعدّ Intel MPX ( ملحقات حماية الذاكرة ) مجموعةً من الإضافات المتوقفة لبنية مجموعة تعليمات x86 . كانت Intel MPX ، التي تدعم المُصرّف ومكتبة وقت التشغيل ونظام التشغيل ، تدّعي تعزيز أمان البرامج من خلال فحص مراجع المؤشرات التي تُستغلّ أغراضها الطبيعية في وقت الترجمة بشكلٍ خبيث في وقت التشغيل بسبب تجاوزات المخزن المؤقت . لكن في الواقع، تم اكتشاف العديد من العيوب في تصميمها، ما جعلها غير مجدية، وتم إيقاف دعمها أو إزالتها من معظم المُصرّفات وأنظمة التشغيل. وقد أدرجت Intel علامة MPX ضمن الأجهزة التي أُزيلت في عام 2019 وما بعده في القسم 2.5 من دليل مطوّري برامج Intel® 64 و IA-32، المجلد 1. [ 1 ]
الإضافات
تُقدّم معالجات Intel MPX سجلات حدود جديدة ، وامتدادات جديدة لمجموعة التعليمات تعمل على هذه السجلات. بالإضافة إلى ذلك، توجد مجموعة جديدة من "جداول الحدود" التي تخزن حدودًا تتجاوز ما يمكن تخزينه في سجلات الحدود. [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ]
يستخدم MPX أربعة سجلات حدود جديدة بحجم 128 بت، يخزن كل BND0منها BND3زوجًا من قيم الحد الأدنى (LB) والحد الأعلى (UB) بحجم 64 بت لمخزن مؤقت. يُخزن الحد الأعلى بصيغة المتمم الأحادي ، حيث تقوم BNDMKالدالتان (إنشاء الحدود) و BNDCU(التحقق من الحد الأعلى) بعملية التحويل. يتضمن التصميم سجلين للتكوين BNDCFGx( BNDCFGUفي مساحة المستخدم BNDCFGSوفي وضع النواة)، وسجل حالة BNDSTATUSيوفر عنوان ذاكرة ورمز خطأ في حالة حدوث استثناء. [ 7 ] [ 8 ]
تُستخدم ترجمة العناوين ثنائية المستوى لتخزين حدود الوصول في الذاكرة. تتكون الطبقة العليا من دليل حدود الوصول (BD) الذي يُنشأ عند بدء تشغيل التطبيق. يكون كل مدخل في دليل حدود الوصول إما فارغًا أو يحتوي على مؤشر إلى جدول حدود الوصول (BT) الذي يُنشأ ديناميكيًا، والذي بدوره يحتوي على مجموعة من حدود الوصول للمؤشرات بالإضافة إلى عناوينها الخطية. تقوم تعليمات تحميل حدود الوصول ( BNDLDX) وتخزينها ( BNDSTX) بتنفيذ ترجمة العناوين والوصول إلى حدود الوصول في مدخل جدول حدود الوصول المناسب بشكل شفاف. [ 7 ] [ 8 ]
تم تقديم معالج Intel MPX كجزء من بنية Skylake الدقيقة . [ 9 ]
دعم البرامج
- أزالت مكتبة glibc الدعم في الإصدار 2.35.
- أضافت مجموعة مُترجمات جنو (GCC) 5.0 دعمًا لتقنية MPX. [ 10 ] في عام 2018، تراجع الدعم لهذه الامتدادات بسبب أعباء الصيانة ومساهمة مطوري إنتل بشكل متقطع في إصدار تصحيحات، مما أدى إلى اقتراح إزالة الدعم في GCC 9.0. [ 11 ] أُزيل الدعم في GCC 9.1. [ 12 ]
- أضاف مُجمِّع Intel C++ (icc) 15.0 دعمًا لـ Intel MPX. [ 10 ]
- تم دمج دعم برمجيات Intel MPX على مستوى النواة في نواة لينكس الرئيسية في الإصدار 3.19، الذي صدر في 8 فبراير 2015. [ 13 ] [ 14 ] في عام 2018، اقترح توماس غليكسنر إزالة دعم MPX من نواة لينكس 4.18. [ 15 ] تم تقديم طلب سحب لإزالة الدعم في ديسمبر 2018، خلال دورة تطوير الإصدار 4.20، [ 16 ] لكنه لم يُقبل. جرت محاولة ثانية في يوليو 2019. [ 17 ] أُزيل دعم MPX في الإصدار 5.6. [ 18 ]
- كان برنامج QEMU يدعم ملفات MPX منذ الإصدار 2.6 [ 19 ] ، ثم توقف عن دعمها في الإصدار 4.0. [ 20 ]
- أضاف التحديث الأول لبرنامج Microsoft Visual Studio 2015 دعمًا تجريبيًا لملفات MPX. [ 21 ]
تحليل
أجرت دراسة تحليلاً تفصيلياً متعدد الطبقات لمكدس نظام MPX ومقارنته بثلاث آليات بارزة لحماية الذاكرة تعتمد على البرمجيات ( AddressSanitizer وSAFECode وSoftBound) وقدمت الاستنتاجات التالية. [ 8 ]
- على الرغم من أن تقنية Intel MPX تعتمد على تصميم خاص مدعوم بالأجهزة ومجموعة إضافية من سجلات الأجهزة، إلا أنها ليست أسرع من أي من التقنيات البرمجية. قد تتسبب تعليمات Intel MPX الجديدة في تباطؤ يصل إلى أربعة أضعاف في أسوأ الحالات، مع أن تحسينات المُصرّف تُخفف من هذا التباطؤ وتؤدي إلى زيادة في وقت التشغيل بنسبة 50% في المتوسط.
- على عكس الحلول الأخرى القائمة على البرامج، لا يوفر Intel MPX أي حماية ضد أخطاء أمان الذاكرة المؤقتة.
- إن القراءة والكتابة من جداول الحدود ذات التوجيه المزدوج غير آمنة للاستخدام في بيئة متعددة الخيوط.
- لا يدعم MPX العديد من أساليب البرمجة الشائعة في لغة C / C++ ، مثل أعضاء المصفوفة المرنة ، والإشارة إلى حقل واحد كإزاحة من حقل آخر، وما إلى ذلك.
- يتعارض MPX مع بعض امتدادات ISA الأخرى، مما يؤدي إلى مشاكل في الأداء والأمان. وبشكل أكثر تحديدًا، تنشأ هذه المشاكل عند استخدام Intel MPX بالتزامن مع آليات حماية أخرى تعتمد على الأجهزة، مثل Intel TSX و Intel SGX .
- تتسبب تعليمات MPX في انخفاض كبير في الأداء (أكثر من 15٪) حتى على وحدات المعالجة المركزية من Intel التي لا تدعم MPX.
بالإضافة إلى ذلك، خلصت مراجعة إلى أن برنامج MPX غير جاهز للاستخدام في بيئات الإنتاج، وأن برنامج AddressSanitizer يُعد خيارًا أفضل. [ 8 ] وتوصلت مراجعة أخرى أجراها كوستيا سيريبرياني في جوجل، مطور برنامج AddressSanitizer، [ 22 ] إلى نتائج مماثلة. [ 23 ]
انهيار
كشفت دراسة أخرى [ 24 ] استكشفت نطاق ثغرات Spectre و Meltdown الأمنية أن Meltdown يُمكن استغلالها لتجاوز نظام Intel MPX، باستخدام استثناء Bound Range Exceeded (#BR) في الأجهزة. ووفقًا لمنشورهم، تمكّن الباحثون من تسريب معلومات عبر قناة سرية (Flush+Reload) من خلال الوصول إلى بيانات خارج النطاق على مصفوفة محمية بنظام MPX. ولم يُنشر دليل إثبات المفهوم الخاص بهم علنًا.
انظر أيضاً
مراجع
- ↑ دليل مطوري البرامج لبنيتي Intel® 64 و IA-32، المجلد 1: البنية الأساسية . Intel . نوفمبر 2020. تاريخ الاسترجاع: 3 مارس 2021 .
- ↑ "ملحقات مجموعة تعليمات Intel" . Intel . تم الاسترجاع في 4 نوفمبر 2013 .
- ↑ "مقدمة إلى ملحقات حماية الذاكرة من إنتل" . إنتل . 16-07-2013 . تم الاطلاع عليه بتاريخ 10-09-2013 .
- ↑ "مناقشة ملحقات حماية الذاكرة من إنتل (MPX) ومقارنتها ببرنامج AddressSanitizer" . code.google.com . تم الاطلاع عليه بتاريخ 4 نوفمبر 2013 .
- ↑ "دعم ملحقات حماية الذاكرة من إنتل (Intel® MPX) في مُصرّف GCC" . gcc.gnu.org . تم الاطلاع عليه بتاريخ 4 نوفمبر 2013 .
- ↑ "شرح تقنية Intel MPX: تخزين الحدود في الذاكرة" . intel-mpx.github.io . تم الاطلاع عليه بتاريخ 2017-02-06 .
- 1 2 "مرجع برمجة ملحقات مجموعة تعليمات معمارية إنتل" (ملف PDF) . إنتل . ديسمبر 2013. تم الاطلاع عليه بتاريخ 17 يناير 2014 .
- 1 2 3 4 أوليكسينكو، أوليكسي؛ كوفايسكي، ديمتري؛ بهاتوتيا، برامود؛ فيلبر، باسكال؛ فيتزر، كريستوف (2017). "شرح Intel MPX: دراسة تجريبية لـ Intel MPX وأساليب التحقق من الحدود القائمة على البرمجيات". arXiv : 1702.00719 [ cs.CR ].
- 1 2 "محاكي تطوير برامج إنتل" . إنتل . 15-06-2012 . تم الاسترجاع في 04-11-2013 .
- 1 2 "تصميم Intel MPX" . Intel.
- ↑ "يبدو أن GCC 9 سيزيل دعم Intel MPX" . Phoronix . تم الاطلاع عليه بتاريخ 27 أبريل 2018 .
- ↑ "إزالة دعم Intel MPX من GCC 9 - Phoronix" . www.phoronix.com .
- ↑ "نواة لينكس 3.19، القسم 1.2. دعم ملحقات حماية ذاكرة إنتل" . kernelnewbies.org . 9 فبراير 2015. تم الاطلاع عليه في 9 فبراير 2015 .
- ↑ جوناثان كوربيت (29 يناير 2014). "دعم معالج Intel MPX في نظام Linux" . LWN.net . تم الاطلاع عليه في 9 فبراير 2015 .
- ↑ "قد تتخلى نواة لينكس عن دعم ملحقات حماية الذاكرة" . فورونيكس .
- ↑ " [ GIT PULL ] x86: إزالة Intel MPX" .
- ↑ " [ PATCH 0/3 ] [ RFC ] x86: بدء عملية إزالة MPX" .
- ↑ " انتهى دعم Intel MPX مع نظام Linux 5.6 - Phoronix" . www.phoronix.com
- ↑ "ChangeLog/2.6" .
- ↑ "يأتي QEMU 4 بألعاب لمحبي Arm، وثوار RISC-V، ووطنيي POWER... فهمت الفكرة" . ذا ريجستر .
- ↑ "تحديث Visual Studio 2015 رقم 1: ميزة تجريبية جديدة - MPX" . مايكروسوفت . 2016-01-20.
- ↑ سيريبرياني، كونستانتين. "كونستانتين سيريبرياني" . بحث جوجل . مؤرشف من الأصل بتاريخ 27-07-2023 . تم الاطلاع عليه بتاريخ 18-07-2024 .
- ↑ "ملحقات حماية ذاكرة Intel لـ Address Sanitizer" . GitHub . مؤرشف من الأصل بتاريخ 18 يوليو 2024. تم الاطلاع عليه بتاريخ 4 نوفمبر 2013 .
- ^ كانيلا، كلاوديو. فان بولك، جو؛ شوارتز، مايكل. ليب، موريتز؛ فون بيرج، بنيامين؛ أورتنر، فيليب؛ بيسنس، فرانك؛ يفتيوشكين، ديمتري؛ جروس ، دانيال (2018). “تقييم منهجي لهجمات ودفاعات التنفيذ العابر”. أرخايف : 1811.05441 [ cs.CR ].
روابط خارجية
- مرجع برمجة ملحقات مجموعة تعليمات معمارية إنتل (ملف PDF) . إنتل . يوليو 2013. تم الاطلاع عليه بتاريخ 10 يناير 2016 .
- أوليكسينكو، أوليكسي؛ كوفايسكي، ديمتري؛ بهاتوتيا، برامود؛ فيلبر، باسكال؛ فيتزر، كريستوف (2017). "شرح معالج Intel MPX: دراسة تجريبية لمعالج Intel MPX وأساليب التحقق من الحدود القائمة على البرمجيات". arXiv : 1702.00719 [ cs.CR ].المواد التكميلية المتاحة عبر الإنترنت موجودة على الرابط التالي: https://intel-mpx.github.io .
- "مقدمة إلى ملحقات حماية الذاكرة من إنتل" . إنتل . 16 يوليو 2013. تم الاطلاع عليه بتاريخ 10 سبتمبر 2013 .
- "ملحقات مجموعة تعليمات Intel" . Intel . تم الاسترجاع في 4 نوفمبر 2013 .
- "دعم ملحقات حماية الذاكرة من إنتل (Intel® MPX) في مُصرّف GCC" . gcc.gnu.org . تم الاطلاع عليه بتاريخ 4 نوفمبر 2013 .
- هانسن، ديف (16 مارس 2016). "ملحقات حماية الذاكرة من إنتل® (Intel® MPX) لنظام لينكس" . تم الاطلاع عليه بتاريخ 17 مايو 2018 .
- تعليمات X86
