Na voljo je izpeljava orodja za organizacijo dela iz izoliranih okolij Bubblewrap 0.6, ki se običajno uporablja za omejevanje posameznih aplikacij neprijavljenih uporabnikov. V praksi se Bubblewrap uporablja v projektu Flatpak kot plast za izolacijo aplikacij, ki jih zagnamo iz paketov. Koda projekta je napisana v jeziku C in se distribuira 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 podpora za gradbeni sistem Meson. Podpora za gradnjo s pomočjo Autotools trenutno ostaja, vendar bo odstranjena v eni od prihodnjih izpeljav.
- Uvedena je možnost „—add-seccomp“ za dodajanje več kot enega programa seccomp. Dodano je opozorilo, da bo pri ponovnem navedenju možnosti „—seccomp“ uporabljen samo zadnji parameter.
- Veja master v git-repozitoriju je preimenovana v main.
- Dodana je delna podpora specifikaciji REUSE, ki poenoti postopek navajanja informacij o licencah in avtorskih pravicah. V mnoge datoteke s kodo so dodani naslovi SPDX-License-Identifier. Slednje priporočila REUSE omogočajo poenostavitev avtomatskega določanja, katera licenca se uporablja za katere dele kode aplikacije.
- Dodana je preverba vrednosti števec argumentov ukazne vrstice (argc) in izveden je nujni izhod, če je števec enak nič. Ta sprememba omogoča blokiranje težav s varnostjo, ki jih povzroča nepravilno obravnavanje predanih argumentov ukazne vrstice, kot je CVE-2021-4034 v Polkit.
Izvor: opennet.ru
