Pas një vit zhvillimi, është publikuar versioni i ri i mjetit për organizimin e punës në mjedise të izoluara Bubblewrap 0.9, i përdorur për kufizimin e aplikacioneve individuale të përdoruesve pa privilegje. Në praktikë, Bubblewrap përdoret nga projekti Flatpak si një ndërfaqe për izolimin e aplikacioneve që ekzekutohen nga paketat. Kodi i projektit është shkruar në gjuhën C dhe shpërndahet nën licencën LGPLv2+.
PĂ«r izolim, pĂ«rdoren teknologjitĂ« tradicionale tĂ« virtualizimit tĂ« konteinerĂ«ve nĂ« Linux, tĂ« bazuara nĂ« pĂ«rdorimin e cgroups, hapĂ«sirave tĂ« emrave (namespaces), Seccomp dhe SELinux. PĂ«r tĂ« kryer operacione me privilegje pĂ«r konfigurimin e konteinerit, Bubblewrap запŃŃĐșаŃŃŃŃŃ Đ· ĐżŃаĐČĐ°ĐŒĐž root (skedari ekzekutiv me flamurin suid) dhe mĂ« pas e humb privilegjin pas pĂ«rfundimit tĂ« inicializimit tĂ« konteinerit.
Aktivizimi i sistemit tĂ« hapĂ«sirave tĂ« emrave tĂ« identifikuesve tĂ« pĂ«rdoruesit (user namespaces), tĂ« cilat lejojnĂ« pĂ«rdorimin nĂ« kontejnerĂ« tĂ« njĂ« grupi tĂ« veçantĂ« identifikuesish, nuk kĂ«rkohet pĂ«r punĂ«, pasi nĂ« parazgjedhje nuk funksionon nĂ« shumĂ« distribucione (Bubblewrap pozicionohet si njĂ« realizim i kufizuar suid i njĂ« nĂ«ngrupe tĂ« mundĂ«sive tĂ« hapĂ«sirave tĂ« emrave tĂ« identifikuesve â pĂ«r tĂ« pĂ«rjashtuar tĂ« gjithĂ« identifikuesit e pĂ«rdoruesve dhe proceseve nga mjedisi, pĂ«rveç atij aktual, pĂ«rdoren modet CLONE_NEWUSER dhe CLONE_NEWPID). PĂ«r mbrojtje shtesĂ«, programet qĂ« ekzekutohen nĂ«n Bubblewrap nisĂ«n nĂ« modin PR_SET_NO_NEW_PRIVS, qĂ« ndalon marrjen e privilegjeve tĂ« reja, pĂ«r shembull, kur flagu setuid Ă«shtĂ« aktiv.
Izolimi në nivelin e sistemit të skedarëve bëhet përmes krijimit të një hapësire të re të përkohshme siç është hapësira e montimit (mount namespace), ku krijohet një pjesë e zbrazët rrënjore përmes tmpfs. Në këtë pjesë, sipas nevojës, lidhen pjesë të sistemit të skedarëve të jashtëm në mënyrën "mount --bind" (për shembull, kur fillohet me opsionin "bwrap --ro-bind /usr /usr", pjesa /usr kalon nga sistemi kryesor në mënyrë vetëm për lexim). Aftësitë rrjetore kufizohen në qasje në ndërfaqen loopback me izolimin e stekës rrjetore përmes flagjeve CLONE_NEWNET dhe CLONE_NEWUTS.
Dallimi kryesor nga projekti i ngjashëm Firejail, i cili gjithashtu përdor modelin e përpunimit me setuid, është se në Bubblewrap, shtresa për krijimin e kontejnerëve përfshin vetëm minimumin e nevojshëm të funksionaliteteve, ndërsa të gjitha funksionet e avancuara, të nevojshme për ekzekutimin e aplikacioneve grafike, ndërveprimin me desktopin dhe filtrimin e kërkesave në Pulseaudio, janë transferuar në anën e Flatpak dhe ekzekutohen pas heqjes së privilegjeve. Firejail, nga ana tjetër, bashkon në një skedar ekzekutiv të gjitha funksionalitetet përkatëse, çka e komplikon auditimin e tij dhe ruajtjen e sigurisë në nivelin e duhur.
Në lëshimin e ri:
- Janë hequr skedarët e gjeneruar në Autotools nga paketa e burimeve. Tani rekomandohet të përdoret sistemi i ndërtimit Meson. Mbështetje opsionale për Autotools akoma është ruajtur, por në versionet e ardhshme planifikohet që të hiqet.
- ĂshtĂ« shtuar opsioni "âargv0" pĂ«r caktimin e vlerĂ«s sĂ« argumentit null tĂ« komandĂ«s (argv[0] â emri i skedarit ekzekutues, p.sh. "âargv0 /usr/bin/test").
- Opsioni "âsymlink" tani aktivizohet vetĂ«m kur lidhja simbolike tashmĂ« ekziston dhe tregon nĂ« skedarin e synuar qĂ« Ă«shtĂ« i duhur.
- ĂshtĂ« dokumentuar opsioni "âcap-add", i aplikuar pĂ«r caktimin e flamujve tĂ« mundĂ«sive, p.sh., "CAP_DAC_READ_SEARCH".
- ĂshtĂ« rritur informativiteti i gabimeve qĂ« shfaqen gjatĂ« dĂ«shtimit tĂ« montimit.
- Procesi i krijimit të testeve unit është thjeshtuar.
- Në shembujt e përdorimit, është ndërprerë mbështetja për versionet e vjetra të Python.
- Operacionet e caktimit të memories janë përmirësuar.
Burimi: opennet.ru
