A Bubblewrap 0.9 kiadása, amely egy réteg az izolált környezetek létrehozásához

Egy éves fejlesztés után megjelent a Bubblewrap 0.9 új verziója, amely egyes alkalmazások, a nem privilegizált felhasználók tevékenységeinek korlátozására szolgáló eszköz. A gyakorlatban a Bubblewrap-ot a Flatpak projekt használja, mint egy réteget az alkalmazások futtatásának elszigetelésére, amelyeket csomagokból indítanak. A projekt kódja C nyelven készült, é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:

  • A forráskódcsomagból eltávolították az Autotools-ban generált fájlokat. A fordításhoz mostantól a Meson build rendszer használata ajánlott. Az Autotools opcionális támogatása egyelőre megmaradt, de a jövőbeli kiadásokban tervezzük eltávolítani.
  • Hozzáadva a "—argv0" opció, amellyel beállítható a parancssori nulla argumentum értéke (argv[0] — a végrehajtható fájl neve, például „—argv0 /usr/bin/test”).
  • A "—symlink" opció mostantól csak akkor lép érvénybe, ha a szimbolikus hivatkozás már létezik és a megcélzott fájlra mutat.
  • Dokumentálva lett a "—cap-add" opció, amely a capability flag-ek beállítására szolgál, például a "CAP_DAC_READ_SEARCH"-hoz.
  • Növelték a hibaüzenetek informativitását, amikor a csatolás sikertelen.
  • Egyszerűsítették az egység tesztek létrehozásának folyamatát.
  • A példák használatában megszűnt a régi Python verziók támogatása.
  • Javultak a memóriafoglalási műveletek.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster