إطلاق Bubblewrap 0.8 ، طبقات لإنشاء بيئات رمل

يتوفر إصدار أدوات لتنظيم عمل البيئات المعزولة Bubblewrap 0.8، وتستخدم عادةً لتقييد التطبيقات الفردية للمستخدمين المحرومين. من الناحية العملية، يتم استخدام Bubblewrap بواسطة مشروع Flatpak كطبقة لعزل التطبيقات التي يتم إطلاقها من الحزم. كود المشروع مكتوب بلغة C ويتم توزيعه بموجب ترخيص LGPLv2+.

للعزل ، يتم استخدام تقنيات افتراضية حاوية Linux التقليدية ، بناءً على استخدام مجموعات cgroups ومساحات الأسماء (مساحات الأسماء) و Seccomp و SELinux. لإجراء عمليات إعداد الحاوية ذات الامتيازات ، يتم تشغيل Bubblewrap كجذر (ملف قابل للتنفيذ بعلامة suid) مع إعادة تعيين الامتيازات بعد تهيئة الحاوية.

إن تنشيط مساحات اسم المستخدم في نظام مساحة الاسم، والذي يسمح لك باستخدام مجموعتك المنفصلة من المعرفات في الحاويات، ليس مطلوبًا للتشغيل، لأنه لا يعمل بشكل افتراضي في العديد من التوزيعات (يتم وضع Bubblewrap كتطبيق suid محدود لـ مجموعة فرعية من إمكانيات مساحات أسماء المستخدمين - لاستبعاد جميع معرفات المستخدم والعملية من البيئة، باستثناء المعرف الحالي، يتم استخدام أوضاع CLONE_NEWUSER وCLONE_NEWPID). للحصول على حماية إضافية، يتم تشغيل البرامج التي يتم تنفيذها ضمن Bubblewrap في وضع PR_SET_NO_NEW_PRIVS، والذي يحظر الحصول على امتيازات جديدة، على سبيل المثال، في حالة وجود علامة setuid.

يتم العزل على مستوى نظام الملفات عن طريق إنشاء مساحة اسم تحميل جديدة بشكل افتراضي ، حيث يتم إنشاء قسم جذر فارغ باستخدام tmpfs. إذا لزم الأمر ، يتم إرفاق أقسام من FS خارجي بهذا القسم في وضع "mount --bind" (على سبيل المثال ، عند بدء تشغيله باستخدام الخيار "bwrap --ro-bind / usr / usr" ، قسم / usr من النظام الرئيسي في وضع القراءة فقط). تقتصر الشبكات على الوصول إلى واجهة الاسترجاع مع عزل مكدس الشبكة عبر علامتي CLONE_NEWNET و CLONE_NEWUTS.

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

في الإصدار الجديد:

  • تمت إضافة خيار "--disable-userns" لتعطيل إنشاء مساحة اسم المستخدم المتداخلة الخاصة به في بيئة وضع الحماية.
  • تمت إضافة خيار "--assert-userns-disabled" للتحقق من استخدام مساحة معرف المستخدم الحالية عند استخدام خيار "--disable-userns".
  • تمت زيادة محتوى المعلومات لرسائل الخطأ المتعلقة بتعطيل إعدادات CONFIG_SECCOMP وCONFIG_SECCOMP_FILTER في النواة.

المصدر: opennet.ru

إضافة تعليق