انتشار ابزارهایی برای سازماندهی کار محیط های ایزوله Bubblewrap 0.8 در دسترس است که معمولاً برای محدود کردن برنامه های کاربردی فردی کاربران غیرمجاز استفاده می شود. در عمل، Bubblewrap توسط پروژه Flatpak به عنوان لایه ای برای جداسازی برنامه های راه اندازی شده از بسته ها استفاده می شود. کد پروژه به زبان C نوشته شده و تحت مجوز LGPLv2+ توزیع شده است.
برای جداسازی، از فناوریهای مجازیسازی کانتینر لینوکس سنتی بر اساس استفاده از cgroups، namespaces، Seccomp و SELinux استفاده میشود. برای انجام عملیات ممتاز برای پیکربندی یک کانتینر، Bubblewrap با حقوق ریشه (یک فایل اجرایی با پرچم suid) راهاندازی میشود و پس از مقداردهی اولیه کانتینر، امتیازات را بازنشانی میکند.
فعال سازی فضای نام کاربری در سیستم فضای نام، که به شما امکان می دهد از مجموعه جداگانه ای از شناسه های خود در کانتینرها استفاده کنید، برای عملیات مورد نیاز نیست، زیرا به طور پیش فرض در بسیاری از توزیع ها کار نمی کند (Bubblewrap به عنوان یک پیاده سازی suid محدود از زیر مجموعه ای از قابلیت های فضای نام کاربری - برای حذف همه شناسه های کاربر و فرآیند از محیط، به جز شناسه فعلی، از حالت های CLONE_NEWUSER و CLONE_NEWPID استفاده می شود. برای محافظت بیشتر، برنامههایی که تحت Bubblewrap اجرا میشوند در حالت PR_SET_NO_NEW_PRIVS راهاندازی میشوند، که کسب امتیازات جدید را ممنوع میکند، برای مثال، اگر پرچم setuid وجود داشته باشد.
جداسازی در سطح فایل سیستم با ایجاد یک فضای نام mount جدید به طور پیش فرض انجام می شود که در آن یک پارتیشن خالی ریشه با استفاده از tmpfs ایجاد می شود. در صورت لزوم، پارتیشنهای خارجی FS در حالت mount —bind به این پارتیشن متصل میشوند (به عنوان مثال، هنگام راهاندازی با گزینه bwrap —ro-bind /usr /usr، پارتیشن /usr از سیستم اصلی ارسال میشود. در حالت فقط خواندنی). قابلیتهای شبکه محدود به دسترسی به رابط Loopback با جداسازی پشته شبکه از طریق پرچمهای CLONE_NEWNET و CLONE_NEWUTS است.
تفاوت اصلی با پروژه مشابه Firejail، که از مدل راه اندازی setuid نیز استفاده می کند، این است که در Bubblewrap، لایه ایجاد کانتینر فقط حداقل قابلیت های لازم و تمام عملکردهای پیشرفته لازم برای اجرای برنامه های گرافیکی، تعامل با دسکتاپ و درخواست های فیلتر را شامل می شود. به Pulseaudio، به سمت Flatpak منتقل شد و پس از تنظیم مجدد امتیازات اجرا شد. از سوی دیگر، Firejail تمام توابع مرتبط را در یک فایل اجرایی ترکیب میکند که ممیزی و حفظ امنیت در سطح مناسب را دشوار میکند.
در نسخه جدید:
- گزینه "--disable-users" را اضافه کرد تا ایجاد فضای نام کاربری تو در تو در محیط sandbox را غیرفعال کند.
- گزینه "--assert-userns-disabled" اضافه شد تا بررسی شود که در هنگام استفاده از گزینه "--disable-users" از فضای شناسه کاربری موجود استفاده می شود.
- محتوای اطلاعاتی پیام های خطا مربوط به غیرفعال کردن تنظیمات CONFIG_SECCOMP و CONFIG_SECCOMP_FILTER در هسته افزایش یافته است.
منبع: opennet.ru