novi izdanak alata , namijenjenog organizaciji rada izoliranih okruženja u Linuxu i funkcionira na razini aplikacija običnih korisnika. U praksi, Bubblewrap koristi projekt Flatpak kao posrednik za izolaciju aplikacija pokrenutih iz paketa. Kod projekta napisan je na jeziku C i pod licencom LGPLv2+.
Za izolaciju se koriste tradicionalne Linux tehnologije kontejnerske virtualizacije, temeljeći se na korištenju cgroups, prostora imena (namespaces), Seccomp i SELinux. Za izvršavanje privilegiranih operacija pri postavljanju kontejnera, Bubblewrap se pokreće s pravima root (izvršna datoteka s suid-flagom) nakon čega se privilegije poništavaju nakon završetka inicijalizacije kontejnera.
Aktivacija u sustavu prostora imena identifikatora korisnika (user namespaces), koji omogućuju korištenje vlastitog skupa identifikatora unutar kontejnera, nije potrebna za rad, jer po defaultu ne funkcionira u mnogim distribucijama (Bubblewrap se pozicionira kao ograničena suid implementacija podskup mogućnosti user namespaces — za isključenje svih identifikatora korisnika i procesa iz okruženja osim trenutnog koriste se načini CLONE_NEWUSER i CLONE_NEWPID). Za dodatnu zaštitu, programi pokrenuti pod upravom
Bubblewrap izvode se u načinu PR_SET_NO_NEW_PRIVS, koji zabranjuje dobivanje novih privilegija, na primjer, kada je postavljen setuid flag.
Izolacija na razini datotečnog sustava provodi se stvaranjem novog prostora imena točki montiranja (mount namespace) po defaultu, u kojem se pomoću tmpfs stvara prazna korijenska particija. Ova particija se po potrebi povezuje s particijama vanjskih FS-a u načinu „mount —bind“ (na primjer, pokretanjem s opcijom „bwrap —ro-bind /usr /usr“, particija /usr se prosljeđuje iz osnovnog sustava u načinu samo za čitanje). Mrežne mogućnosti su ograničene na pristup loopback sučelju uz izolaciju mrežnog staka putem flagova CLONE_NEWNET i CLONE_NEWUTS.
Ključna razlika u odnosu na sličan projekt , koji također koristi model podizanja s primjenom setuid, je to da u Bubblewrap sloj za stvaranje kontejnera uključuje samo minimum potrebnih mogućnosti, dok su sve unaprijedene funkcije potrebne za pokretanje grafičkih aplikacija, interakciju s radnom površinom i filtriranje poziva prema Pulseaudio, prebačene na stranu Flatpak i izvršavaju se nakon poništavanja privilegija. Firejail, s druge strane, objedinjuje u jednoj izvršnoj datoteci sve prateće funkcije, što otežava njegovu reviziju i održavanje sigurnosti. .
Nova verzija se ističe implementacijom podrške za priključivanje postojećih prostora imena identifikatora korisnika (user namespaces) i procesa (pid namespaces). Za upravljanje povezivanjem prostora imena dodani su flagevi „—userns“, „—userns2“ i „—pidns“.
Ova mogućnost ne radi u setuid modu i zahtijeva primjenu zasebnog moda, koji može raditi bez sticanja root prava, ali zahtijeva aktivaciju
user namespaces u sustavu (zadano su onemogućeni u Debian i RHEL/CentOS) i ne isključuje mogućnost za obod ograničenja „user namespaces“. Od novih mogućnosti Bubblewrap 0.4 također se ističe mogućnost izgradnje s C knjižnicom musl umjesto glibc te podrška za spremanje informacija o prostorima imena u datoteku sa statistikama u JSON formatu.
Izvor: opennet.ru
