هجوم على Intel SGX لاستخراج بيانات حساسة أو تنفيذ تعليمات برمجية في منطقة محصورة

طور باحثون من جامعة علوم وتكنولوجيا الدفاع التابعة لجيش التحرير الشعبي الصيني وجامعة سنغافورة الوطنية و ETH Zurich طريقة هجوم جديدة ضد الجيوب المعزولة Intel SGX (Software Guard eXtensions). تمت تسمية الهجوم باسم SmashEx ونتج عن مشاكل إعادة الدخول في معالجة الاستثناءات أثناء تشغيل مكونات وقت التشغيل لـ Intel SGX. تتيح طريقة الهجوم المقترحة ، في حالة وجود سيطرة على نظام التشغيل ، تحديد البيانات السرية الموجودة في المنطقة المحاصرة ، أو تنظيم نسخ الكود في ذاكرة الجيب وتنفيذها.

تم إعداد نماذج الاستغلال الأولية لجيوب وقت التشغيل استنادًا إلى Intel SGX SDK (CVE-2021-0186) و Microsoft Open Enclave (CVE-2021-33767). في الحالة الأولى ، تم توضيح القدرة على استخراج مفتاح RSA المستخدم على خادم الويب لـ HTTPS ، وفي الحالة الثانية ، كان من الممكن تحديد المحتوى الذي تم الحصول عليه بواسطة الأداة المساعدة cURL التي تعمل داخل المنطقة المحصورة. تم بالفعل إصلاح الثغرة الأمنية برمجيًا في إصدارات Intel SGX SDK 2.13 و Open Enclave 0.17.1. بالإضافة إلى Intel SGX SDK و Microsoft Open Enclave ، تظهر الثغرة الأمنية أيضًا في Google Asylo SDK و EdgelessRT و Apache Teaclave و Rust SGX SDK و SGX-LKL و CoSMIX و Veracruz.

تذكر أن تقنية SGX (ملحقات حماية البرامج) ظهرت في الجيل السادس من معالجات Intel Core (Skylake) وتقدم سلسلة من الإرشادات التي تسمح للتطبيقات على مستوى المستخدم بتخصيص مناطق الذاكرة المغلقة - الجيوب التي لا يمكن قراءة محتوياتها وتغييرها حتى بواسطة تم تنفيذ kernel والتعليمات البرمجية بواسطة في أوضاع ring0 و SMM و VMM. من المستحيل نقل التحكم إلى الكود في المنطقة المحصورة باستخدام وظائف القفز التقليدية والتلاعب بالسجلات والمكدس - يتم استخدام تعليمات جديدة تم إنشاؤها خصيصًا EENTER و EEXIT و ERESUME لنقل التحكم إلى المنطقة المحصورة ، والتي تقوم بإجراء فحوصات التفويض. في هذه الحالة ، يمكن للكود الموجود في الجيب استخدام طرق الاستدعاء التقليدية لاستدعاء الوظائف داخل الجيب وتعليمات خاصة لاستدعاء الوظائف الخارجية. يستخدم تشفير ذاكرة Enclave للحماية من هجمات الأجهزة مثل اتصال DRAM.

هجوم على Intel SGX لاستخراج بيانات حساسة أو تنفيذ تعليمات برمجية في منطقة محصورة

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

هجوم على Intel SGX لاستخراج بيانات حساسة أو تنفيذ تعليمات برمجية في منطقة محصورة

للتشغيل العادي ، تسمح لك تقنية SGX بمقاطعة تنفيذ الجيب مع استثناءات الأجهزة القابلة للتكوين. تسمح هذه الميزة لأوقات تشغيل الغلاف بتنفيذ معالجة الاستثناء داخل الجيب أو معالجة الإشارة ، ولكنها يمكن أيضًا أن تقدم أخطاء إعادة الدخول. يعتمد هجوم SmashEx على استغلال العيوب الموجودة في SDK والتي بسببها لا يتم التعامل مع حالة إعادة استدعاء معالج الاستثناء بشكل صحيح. من المهم أنه من أجل استغلال الثغرة الأمنية ، يجب أن يكون المهاجم قادرًا على مقاطعة تنفيذ الجيب ، أي يجب أن تتحكم في تشغيل بيئة النظام.

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

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

هجوم على Intel SGX لاستخراج بيانات حساسة أو تنفيذ تعليمات برمجية في منطقة محصورة
هجوم على Intel SGX لاستخراج بيانات حساسة أو تنفيذ تعليمات برمجية في منطقة محصورة


المصدر: opennet.ru

إضافة تعليق