Elérhető az izolált környezetek működtetésére szolgáló Bubblewrap 0.8 eszközkészlet kiadása, amelyet általában a nem privilegizált felhasználók egyes alkalmazásainak korlátozására használnak. A gyakorlatban a Bubblewrap-ot a Flatpak projekt használja az alkalmazáscsomagok indításának elszigetelésére. A projekt kódja C nyelven van megírva és LGPLv2+ licenc alatt érhető el.
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:
- Hozzáadva a "--disable-userns" opció, amely letiltja a felhasználói azonosítók (user namespace) saját belső térfogatának létrehozását a sandbox-környezetben.
- Hozzáadva a "--assert-userns-disabled" opció, amely ellenőrzi, hogy a "--disable-userns" opció használatakor a meglévő felhasználói azonosítótér aktiválva van.
- Növeltük a CONFIG_SECCOMP és CONFIG_SECCOMP_FILTER kernelbeállítások letiltásával kapcsolatos hibajelzések informativitását.
Forrás: opennet.ru
