Versioni e mjeteve për organizimin e punës në mjedise të izoluar Bubblewrap 0.8 është në dispozicion, e cila zakonisht përdoret për të kufizuar aplikacione të veçanta në përdorim nga përdorues jo të privilegjuar. Në praktikë, Bubblewrap aplikohet nga projekti Flatpak si një shtresë për izolimin e aplikacioneve të shkarkuara nga pakot. 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:
- Shtuar opsioni «—disable-userns» që çaktivizon krijimin e një hapësire identifikimi user në mjedisin sandbox.
- Shtuar opsioni «—assert-userns-disabled» për të verifikuar se me përdorimin e opsionit «—disable-userns» është angazhuar një hapësirë e ekzistueshme identifikimi për përdoruesit.
- Rritur informueshmëria e mesazheve të gabimeve që lidhen me çaktivizimin në bërthamë të cilësimeve CONFIG_SECCOMP dhe CONFIG_SECCOMP_FILTER.
Burimi: opennet.ru
