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

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

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

  • تمت إضافة دعم لنظام تجميع Meson. تم الاحتفاظ بدعم البناء باستخدام Autotools في الوقت الحالي، ولكن ستتم إزالته في إصدار مستقبلي.
  • تم تنفيذ خيار "--add-seccomp" لإضافة أكثر من برنامج seccomp. تمت إضافة تحذير بأنه إذا قمت بتحديد الخيار "--seccomp" مرة أخرى، فسيتم تطبيق المعلمة الأخيرة فقط.
  • تمت إعادة تسمية الفرع الرئيسي في مستودع git إلى main.
  • تمت إضافة دعم جزئي لمواصفات إعادة الاستخدام، التي توحد عملية تحديد معلومات الترخيص وحقوق النشر. تحتوي العديد من ملفات التعليمات البرمجية على رؤوس SPDX-License-Identifier المضافة. إن اتباع إرشادات إعادة الاستخدام يجعل من السهل تحديد الترخيص الذي ينطبق على أي أجزاء من رمز التطبيق تلقائيًا.
  • تمت إضافة التحقق من قيمة عداد وسيطة سطر الأوامر (argc) وتنفيذ خروج الطوارئ إذا كان العداد صفرًا. يساعد هذا التغيير في حظر المشكلات الأمنية الناتجة عن المعالجة غير الصحيحة لوسيطات سطر الأوامر التي تم تمريرها، مثل CVE-2021-4034 في Polkit.

المصدر: opennet.ru

إضافة تعليق