RLBox ، تقنية عزل المكتبات الجديدة التي تستخدمها Mozilla

شعار فايرفوكس

باحثو جامعة ستانفورد، جامعة كاليفورنيا في سان دييغو y la جامعة تكساس في أوستن لقد طوروا مجموعة من الأدوات أعطوا اسم «RLBox» ، أن يمكن استخدامها كمستوى إضافي للعزل لمنع الثغرات الأمنية في مكتبات الوظائف.

يهدف RLBox إلى حل مشكلة أمان مكتبات الطرف الثالث غير موثوق بها ولا يتحكم فيها المطورون ، ولكن نقاط الضعف التي قد يتعرض المشروع الرئيسي للخطر فيها.

تخطط Mozilla لاستخدام RLBox في إصدارات Firefox 74 لنظامي التشغيل Linux و تجميعات macOS في Firefox 75 لعزل تنفيذ مكتبة الجرافيت، وهو المسؤول عن تمثيل المصادر.

في الوقت نفسه ، لا يقتصر RLBox على Firefox ويمكن استخدامه لعزل أي مكتبة في مشاريع عشوائية.

حول RLBox

آلية التشغيل يتلخص RLBox في تجميع كود C / C ++ من مكتبة معزولة إلى كود WebAssembly الوسيط المستوى المنخفض ، الذي يتم إصداره بعد ذلك كوحدة نمطية WebAssembly ، يتم تعيين سلطته على الارتباط بهذه الوحدة فقط (على سبيل المثال ، لا يمكن لمكتبة معالجة السلاسل فتح مقبس أو ملف شبكة). تحويل رمز C / C ++ هو WebAssembly تم باستخدام wasi-sdk.

للتنفيذ المباشر ، يتم تجميع وحدة WebAssembly في كود الآلة باستخدام مترجم Lucet ويتم تشغيله في "معالجة نانوية" منفصلة عن ذاكرة التطبيق المتبقية. يعتمد مترجم Lucet على نفس الكود مثل محرك Cranelift JIT المستخدم في Firefox لتشغيل WebAssembly.

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

يتم توفير واجهة برمجة تطبيقات عالية المستوى للمطورين ، مما يسمح لك باستدعاء وظائف المكتبة في وضع العزل.

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

لا يمكن استدعاء وظائف المكتبة المعزولة مباشرة ، وللوصول إليها ، يجب عليك استخدام الطبقة invocation_sandbox_function().

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

لضمان التشغيل الآمن للذاكرة ، إن عزل تنفيذ التعليمات البرمجية لا يكفي وأيضا تحتاج إلى توفير التحقق من تدفقات البيانات التي تم إرجاعها.

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

بدون تنظيف ، تؤدي محاولة استخدام البيانات الملوثة في سياق يتطلب بيانات منتظمة (والعكس صحيح) إلى حدوث أخطاء في مرحلة التجميع.

يتم تمرير وسيطات الوظائف الصغيرة وقيم الإرجاع والهياكل عن طريق النسخ بين ذاكرة العملية وذاكرة وضع الحماية. بالنسبة لمجموعات البيانات الكبيرة ، يتم تخصيص الذاكرة في بيئة معزولة ويتم إرجاع مؤشر "مرجع وضع الحماية" المباشر إلى العملية الرئيسية.

يتم توزيع تطورات RLBox بموجب ترخيص MIT. يدعم RLBox حاليًا Linux و macOS ومن المتوقع أن يكون متوافقًا مع Windows لاحقًا.

إذا كنت تريد معرفة المزيد عن هذه التقنية الجديدة التي تخطط Mozilla لتطبيقها في Firefox ، فيمكنك الرجوع إلى تطويرها وكذلك اختبار API في الرابط التالي.


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.