Objavljena je nova verzija alata za organizaciju rada izoliranih okruženja Bubblewrap 0.12, koji se koristi za ograničavanje pojedinačnih aplikacija nedovoljno privilegiranih korisnika. U praksi se Bubblewrap koristi u projektu Flatpak kao sloj za izolaciju aplikacija pokretanih iz paketa. Za izolaciju se koriste tradicionalne tehnologije virtualizacije kontejnera specifične za Linux, temeljene na korištenju cgroups, prostora imena (namespaces), Seccomp i SELinux. Kod projekta napisan je u C jeziku i distribuira se pod LGPLv2.1+ licencom.
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.
Za isključivanje svih suvišnih identifikatora korisnika i procesa iz stvorenog izoliranog okruženja mogu se koristiti načini CLONE_NEWUSER (namespace korisnika) i CLONE_NEWPID (PID namespace), a za zabranu dobivanja novih privilegija koristi se način PR_SET_NO_NEW_PRIVS. Za dobivanje potrebnih privilegija koristi se 'namespace korisnika'.
U novom izdanju:
- Licenca za kod promijenjena je s LGPL 2.0+ na LGPL 2.1+.
- Prekinuta je podrška za izgradnju u obliku izvršne datoteke koja dobiva dodatne privilegije putem suid root opcije. Sada je obvezna podrška za 'namespace korisnika' u sustavu. Kao razlog navodi se složenost održavanja varijante s suid oznakom u svijetu sveprisutne podrške 'namespace korisnika' u distribucijama.
- Dodana je opcija '--not-a-security-boundary', pri čemu neka sloma prilikom postavljanja izoliranog sandbox okruženja, kao što je ponovno montiranje poddirektorija, ne vode do hitnog završetka.
- Dodana je opcija za izgradnju 'assume_kernel', koja onemogućava osiguranje unatradne kompatibilnosti s Linux kernelima starijima od navedene verzije. Na primjer, određivanje verzija 5.6.0+ vodi do isključivanja alternativne implementacije funkcionalnosti 'openat2(RESOLVE_IN_ROOT)'.
Izvor: opennet.ru
