yeni buraxılış alətləri , izolyasiyalı mühitlərin idarə olunması üçün nəzərdə tutulmuşdur Linux-da və tətbiq səviyyəsində qeyri-privilegiyalı istifadəçilər səviyyəsində fəaliyyət göstərir. Praktikada Bubblewrap, paketlərdəki tətbiqlərin izolyasiyası üçün bir ara qat olaraq Flatpak layihəsi tərəfindən istifadə olunur. Layihənin kodu C dilində yazılmışdır və LGPLv2+ lisenziyası altında.
İzolyasiya üçün Linux-da ənənəvi konteyner virtualizasiya texnologiyalarından istifadə olunur, bunlar cgroups, adlar məkanları (namespaces), Seccomp və SELinux-dan istifadə edir. Konteynerin konfiqurasiyası üçün privilegiyalı əməliyyatların yerinə yetirilməsi Bubblewrap-ın root hüquqları ilə (suid flag-ı ilə icra edilən fayl) işə salınması ilə həyata keçirilir və konteynerin başlanğıcından sonra hüquqların ləğv edilməsi ilə davam etdirilir.
Sistemdə istifadəçi adları (user namespaces) adlarının məkanlarının aktivləşdirilməsi, konteynerlərdə özünəməxsus ayrı identifikasiya dəsti ilə istifadə etməyə imkan verir, istifadəyə ehtiyac duyulmur, çünki default olaraq bir çox distribusiyalarda işləmir (Bubblewrap, istifadəçi adlarının məkanlarının imkanlarının məhdud bir suid reallaşması kimi təqdim olunur — hazırkı mühitdən başqa bütün istifadəçi və proses identifikatorlarını istisna etmək üçün CLONE_NEWUSER və CLONE_NEWPID modlarından istifadə olunur). Əlavə qoruma üçün,
Bubblewrap ilə idarə olunan proqramlar PR_SET_NO_NEW_PRIVS rejimində işə salınır, bu da yeni hüquqların əldə edilməsini, məsələn, setuid flaqına malik olduqda qadağan edir.
Fayl sistemi səviyyəsində izolyasiya, standart olaraq yeni bir montaj məkanının (mount namespace) yaradılması ilə həyata keçirilir, burada tmpfs vasitəsilə boş kök bölməsi yaradılır. Bu bölməyə lazım gəldikdə, xarici FS bölmələri «mount —bind» rejimində əlavə olunur (məsələn, «bwrap —ro-bind /usr /usr» seçimi ilə birlikdə üst sistemdəki /usr bölməsi yalnız oxumaq rejimində keçir). Şəbəkə imkanları, CLONE_NEWNET və CLONE_NEWUTS bayraqları ilə şəbəkə yığını izolyasiya edərək loopback interfeysinə girişlə məhdudlaşır.
Buna bənzər layihələrdən əhəmiyyətli fərqi , setuid istifadə edərək iş modelini eyni cür tətbiq edən, lakin Bubblewrap-da konteynerlərin yaradılması üçün ara qatı yalnız lazım olan minimum imtiyazlardan ibarətdir, bütün genişləndirilmiş funksiyalar, xüsusilə qrafik tətbiqlərin başlanğıcı, masaüstü ilə qarşılıqlı əlaqə və Pulseaudio-ya müraciətlərin filtr edilməsi Flatpak tərəfində saxlanılır və hüquqların ləğv olunmasından sonra həyata keçirilir. Firejail isə bir icra faylında bütün əlaqədar funksiyaları birləşdirir ki, bu da onun audibini və təhlükəsizliyini mühafizə etməyi çətinləşdirir .
Yeni buraxılış, mövcud istifadəçi adları (user namespaces) və proseslərin (pid namespaces) bütünləşdirilməsini dəstəkləməklə fərqlənir. Məkanların birləşdirilməsini idarə etmək üçün «—userns», «—userns2» və «—pidns» flagları əlavə olunub.
Bu imkan setuid rejimində işləmir və root hüquqları olmadan işləyə bilən ayrıca rejimin tətbiqini tələb edir, amma
sistemdə user namespaces-in aktivləşdirilməsini tələb edir (Debian və RHEL/CentOS-da defolt olaraq deaktivdir) və istifadəçi adları üçün "user namespaces" -in sərhədini müəyyənləşdirir. Bubblewrap 0.4-ün yeni imkanları arasında, musl C kitabxanası ilə glibc əvəzinə yığma imkanı və JSON formatında statistik fayla adlar məkanının saxlanılması dəstəyi qeyd olunmuşdur.
Mənbə: opennet.ru
