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

متاح إصدار مجموعة أدوات جديدة فقاعات الفقاعات 0.4.0، مصمم لتنظيم عمل البيئات المعزولة في Linux وتعمل على مستوى التطبيق للمستخدمين غير المتميزين. من الناحية العملية ، يتم استخدام 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.

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

يتميز الإصدار الجديد بتنفيذ الدعم لإرفاق مساحات أسماء معرف المستخدم الحالية (مساحات أسماء المستخدمين) والعمليات (مساحات أسماء pid). تمت إضافة إشارات "--userns" و "--userns2" و "--pidns" للتحكم في اتصال مساحة الاسم.
لا تعمل هذه الميزة في الوضع setuid وتتطلب استخدام وضع منفصل ، والذي يمكن أن يعمل دون الحصول على حقوق الجذر ، ولكنه يتطلب التنشيط
مساحات أسماء المستخدمين على النظام (معطلة بشكل افتراضي في دبيان و RHEL / CentOS) ولا تستبعد الاحتمال التشغيل يحتمل متبقي نقاط الضعف لحافة قيود "مساحات أسماء المستخدمين". من بين الميزات الجديدة لـ Bubblewrap 0.4 ، من الممكن أيضًا البناء باستخدام مكتبة musl C بدلاً من glibc ودعم حفظ المعلومات حول مساحات الأسماء في ملف به إحصائيات بتنسيق JSON.

المصدر: opennet.ru

إضافة تعليق