A Bubblewrap egy eszköz ami működik hogy sandbox munkát szervezzen Linuxon és futni a nem privilegizált felhasználók alkalmazás szintjén. A gyakorlatban a Bubblewrap programot a Flatpak projekt közbenső rétegként használja a szoftvercsomagokból indított alkalmazások elkülönítésére.
Az elkülönítéshez a Linux virtualizációs technológiákat használ a hagyományos tárolók közül, amelyek a csoportok, névterek, Seccomp és SELinux használatán alapulnak. Kiváltságos műveletek végrehajtásához egy tároló konfigurálásához a Bubblewrap root jogosultságokkal indul (egy futtatható fájl suid jelzővel), majd a tároló inicializálása után a jogosultság visszaállítása következik.
Nincs szükség a felhasználói névterek engedélyezésére a rendszerben, lehetővé téve a saját azonosító készlet használatát a konténerekben, mivel alapértelmezés szerint sok disztribúción nem működik.
A Bubblewrap-ról
A Bubblewrap korlátozott suida megvalósításként van elhelyezve a felhasználói névtér függvények részhalmazából az összes felhasználói és folyamatazonosító kizárásához a környezetből, a jelenlegi kivételével, használja a CLONE_NEWUSER és CLONE_NEWPID.
További védelem érdekében a Bubblewrap programban futó programok a módban indulnak PR_SET_NO_NEW_PRIVS, amely tiltja az új kiváltságokat, például a setuid zászlóval.
A fájlrendszer szintjén történő elkülönítés alapértelmezés szerint egy új mount névtér létrehozásával történik, amelyben egy üres gyökérpartíciót hoznak létre a tmpfs segítségével.
Szükség esetén a külső FS szakaszok ehhez a szakaszhoz vannak csatolva a «mount –köt»(Például a«bwrap –ro-bind / usr / usr', A / usr szakaszt csak olvasható módban továbbítja a gazdagépről).
A hálózati képességek a loopback interfészhez való hozzáférésre korlátozottak indikátorokon keresztül fordítva hálózati veremszigeteléssel CLONE_NEWNET és CLONE_NEWUTS.
A legfontosabb különbség a hasonló Firejail projekttel szemben, amely szintén használja a setuid indítót, az a Bubblewrap-ban van, a konténeréteg csak a minimálisan szükséges tulajdonságokat tartalmazza és minden olyan speciális funkció, amely szükséges a grafikus alkalmazások indításához, az asztallal való interakcióhoz és a Pulseaudio hívások szűréséhez, a Flatpak oldalára kerülnek, és a jogosultságok visszaállítása után futtathatóak.
A Firejail viszont az összes kapcsolódó funkciót egyetlen futtatható fájlba egyesíti, bonyolítja az ellenőrzését és a biztonság megfelelő szinten tartását.
A Bubblewrap alapvetően működik segítségével üres csatlakozási névtér létrehozása ideiglenes fájlrendszeren amely a homokozó feldolgozásának befejezése után megsemmisül.
A kapcsolók használatával a felhasználó felépítheti a kívánt fájlrendszer-környezetet a mount névtérben, a csatolással a gazdagépről a kívánt könyvtárak linkjére.
Buborékcsomagolás 0.4.0
A Bubblewrap jelenleg a 0.4 verzióban van.0 amelyet nemrég adtak ki. A projekt kódját C-ben írják, és az LGPLv2 + licenc alatt terjesztik.
Az új verzió figyelemre méltó a névterekhez és folyamatokhoz való csatlakozás támogatásának megvalósításával meglévő felhasználók (pid névterek).
A „–userns”, „–userns2” és „–pidns” zászlók hozzáadódtak a névterek összekapcsolásának vezérléséhez.
Ez a szolgáltatás nem működik setuid módban, és külön módot igényel, amely root jogosultságok nélkül is működhet, de megköveteli a felhasználói névterek engedélyezését a rendszeren (alapértelmezés szerint letiltva a Debianon és az RHEL / CentOS-on), és nem zárja ki a lehetőséget a potenciálisan fennmaradó biztonsági rések kihasználása a "felhasználói névterek" korlátozásai szélén.
A Bubblewrap 0.4 új szolgáltatásai közül Megfigyelhető annak a lehetősége is, hogy glibc helyett a muszlim könyvtárral építsenek, és a névtér információk JSON formátumú statisztikai fájlba történő mentésének támogatása.
A Bubblewrap kód, valamint a róla szóló dokumentáció a Github oldalon olvasható, a link ez.