Elérhető a Bubblewrap 0.5.0 izolált környezetek működésének szervezéséhez szükséges eszközkészlet, amelyet általában nem privilégizált felhasználók egyes alkalmazásainak korlátozására használnak. A gyakorlatban a Bubblewrap a Flatpak projekt által alkalmazott réteg az alkalmazások csomagjaiból történő elindítás izolálására. A projekt kódja C nyelven íródott és LGPLv2+ licenc alatt terjesztik.
Az elszigeteléshez a Linuxban megszokott konténeres virtualizációs technológiákat használják, amelyek cgroups, névterek (namespaces), Seccomp és SELinux alkalmazásán alapulnak. A konténer beállításához szükséges privilegizált műveletek végrehajtásához a Bubblewrap root jogokkal (suid flag-gel rendelkező futtatható fájl) indul, majd a konténer inicializálása után a privilégiumokat visszaállítja.
A felhasználói azonosítók (user namespaces) névtereinek aktiválása a rendszeren nem szükséges a működéshez, mivel sok disztribúcióban alapértelmezettként nem működik (a Bubblewrap mint a user namespaces képességeinek korlátozott suid megvalósítása van pozicionálva, amely kizárja az összes felhasználói és folyamat-azonosítót a környezetből, kivéve a jelenlegit, a CLONE_NEWUSER és CLONE_NEWPID módok alkalmazásával). További védelem érdekében a Bubblewrap segítségével indított programok PR_SET_NO_NEW_PRIVS módban futnak, amely megakadályozza az új privilégiumok megszerzését, például setuid flag megléte estén.
A fájlrendszer szintű elszigetelés alapértelmezés szerint új névtér létrehozásával történik a mount namespace révén, ahol a tmpfs segítségével üres gyökér partíció jön létre. Ehhez a partícióhoz szükség esetén a külső fájlrendszerek partícióit a 'mount —bind' módban csatlakoztatják (például a 'bwrap —ro-bind /usr /usr' opcióval a /usr partíció a fő rendszerből csak olvasható módban kapcsolódik át). A hálózati lehetőségeket a loopback interfész elérésének korlátozásával és a hálózati verem elszigetelésével korlátozzák, a CLONE_NEWNET és CLONE_NEWUTS flag-ek alkalmazásával.
A fő különbség a hasonló Firejail projekttől, amely szintén setuid alkalmazásindítási modellt használ, hogy a Bubblewrap konténerek létrehozásának rétege csak a szükséges minimális funkciókat tartalmazza, míg a grafikus alkalmazások indításához, a munkaasztallal való interakcióhoz és a Pulseaudio hívások szűréséhez szükséges összes kibővített funkciót a Flatpak oldalára helyezik, és már a privilégiumok visszaállítása után hajtják végre. A Firejail viszont egyetlen végrehajtható fájlban egyesíti az összes kapcsolódó funkciót, ami megnehezíti az auditálását és a biztonság szinten tartását.
Az új kiadásban elérhető opciók: „—chmod” a hozzáférési jogok módosításához, „—clearenv” a környezeti változók tisztításához (PWD kivételével) és „—perms” a végrehajtott műveletekhez alkalmazott hozzáférési jogok meghatározásához a „—bind-data”, „—dir”, „—file”, „—ro-bind-data” és „—tmpfs” opciók során. Fémegtörténelem a bind módban való csatlakozás hibáinak diagnosztizálásában. A zsh-hoz hozzáadva a parancsok automatikus kiegészítésének támogatása a Tab billentyű megnyomásával.
Forrás: opennet.ru
