Na voljo je izdaja orodja za organizacijo dela izoliranih okolij Bubblewrap 0.8, ki se običajno uporablja za omejevanje posameznih aplikacij neprivilegiranih uporabnikov. V praksi se Bubblewrap uporablja v projektu Flatpak kot plast za izolacijo aplikacij, ki se zaženejo iz paketov. Koda projekta je napisana v jeziku C in se distribucira pod licenco LGPLv2+.
Za izolacijo se uporabljajo tradicionalne tehnologije kontejnerske virtualizacije za Linux, ki temeljijo na uporabi cgroups, prostorov imen (namespaces), Seccomp in SELinux. Za izvedbo privilegiranih operacij za konfiguracijo kontejnerja se Bubblewrap zažene s pravicami root (izvedbena datoteka c s suid-označbo) z nadaljnjim preklicem privilegijev po zaključku inicializacije kontejnerja.
Aktivacija prostorov imen identifikatorjev uporabnika (user namespaces) v sistemu, ki omogočajo uporabo lastnega ločenega sklopa identifikatorjev v kontejnerjih, ni potrebna, saj privzeto ne deluje v mnogih distribucijah (Bubblewrap se pozicionira kot omejena suid-izvedba podmnožice možnosti user namespaces — za izključitev vseh identifikatorjev uporabnikov in procesov iz okolja, razen trenutnega, se uporabljajo načini CLONE_NEWUSER in CLONE_NEWPID). Za dodatno zaščito se programi, ki delujejo pod upravljanjem Bubblewrap, zaženejo v načinu PR_SET_NO_NEW_PRIVS, ki prepoveduje pridobitev novih privilegijev, na primer ob prisotnosti oznake setuid.
Izolacija na razini datotečnog sustava ostvaruje se stvaranjem novog imenskog prostora točaka montiranja (mount namespace) prema zadanim postavkama, u kojem se pomoću tmpfs stvara prazna korijenska particija. U ovu particiju, po potrebi, povezani su dijelovi vanjskog FS-a u režimu 'mount —bind' (na primjer, pri pokretanju s opcijom 'bwrap —ro-bind /usr /usr' dijel je /usr proslijeđen iz glavnog sustava u režimu samo za čitanje). Mrežne mogućnosti ograničene su na pristup loopback sučelju uz izolaciju mrežnog stoga putem zastavica CLONE_NEWNET i CLONE_NEWUTS.
Ključna razlika od podobnega projekta Firejail, ki prav tako uporablja model za zagon z uporabo setuid, je ta, da Bubblewrap plast za ustvarjanje kontejnerjev vključuje le nujno potrebne možnosti, medtem ko so vse razširjene funkcije, potrebne za zagon grafičnih aplikacij, interakcijo s namizjem in filtriranje zahtevkov za Pulseaudio, prenesene na stran Flatpak in se izvajajo šele po preklicu privilegijev. Firejail pa združuje vse spremljajoče funkcije v eni izvršilni datoteki, kar oteži njegov revizijski postopek in vzdrževanje varnosti na ustrezni ravni.
U novom izdanju:
- Dodana je bila možnost „—disable-userns“, ki onemogoča ustvarjanje svojega vdelanega prostora identifikatorjev uporabnikov (user namespace) v okolju sandbox.
- Dodana je opcija „—assert-userns-disabled“ za proveru da li je prilikom korišćenja opcije „—disable-userns“ uključeno postojeće prostor identifikatora korisnika.
- Povećana je informativnost poruka o greškama vezanim za isključivanje postavki CONFIG_SECCOMP i CONFIG_SECCOMP_FILTER u jezgru.
Izvor: opennet.ru
