nové vydání nástroje , určeného pro organizaci práce izolovaných prostředí v systému Linux a fungujícího na úrovni aplikací s neoprávněnými uživateli. V praxi je Bubblewrap používán projektem Flatpak jako mezivrstva pro izolaci aplikací spouštěných z balíčků. Kód projektu je napsán v jazyce C a pod licencí LGPLv2+.
Pro izolaci se používají tradiční technologie kontejnerové virtualizace pro Linux, založené na použití cgroups, prostorů názvů (namespaces), Seccomp a SELinux. Pro provádění privilegovaných operací při konfiguraci kontejneru je Bubblewrap spouštěn s právy root (spustitelný soubor s suid-flagem), s následným zrušením privilegií po dokončení inicializace kontejneru.
Aktivace v systému prostorů názvů uživatelských identifikátorů (user namespaces), umožňující použití v kontejnerech vlastního odděleného souboru identifikátorů, není nutná, protože ve výchozím nastavení nefunguje v mnoha distribucích (Bubblewrap se prezentuje jako omezená suid-implementace podmnožiny možností uživatelských jmen — pro vyloučení všech uživatelských a procesních identifikátorů z prostředí, kromě aktuálního, jsou použity režimy CLONE_NEWUSER a CLONE_NEWPID). Pro další ochranu se programy spouštěné pod řízením
Bubblewrap spouští v režimu PR_SET_NO_NEW_PRIVS, který zakazuje získání nových oprávnění, například při aktivaci flagu setuid.
Izolace na úrovni souborového systému se provádí vytvořením nového namespaces pro body připojení (mount namespace), v němž se pomocí tmpfs vytváří prázdný kořenový oddíl. Do tohoto oddílu se v případě potřeby připojují oddíly externího FS v režimu „mount —bind“ (například při spuštění s volbou „bwrap —ro-bind /usr /usr“ je oddíl /usr předán z hlavního systému v režimu pouze pro čtení). Síťové možnosti jsou omezeny přístupem k loopback rozhraní s izolací síťového stacku pomocí příznaků CLONE_NEWNET a CLONE_NEWUTS.
Hlavním rozdílem od podobného projektu , který také používá model spouštění s využitím setuid, má to, že v Bubblewrapu meziprodukt pro vytváření kontejnerů zahrnuje jen nezbytné minimum možností, a všechny rozšířené funkce, potřebné pro spuštění grafických aplikací, interakci s plochou a filtrování požadavků na Pulseaudio, jsou provedeny na straně Flatpak a realizovány až po zrušení oprávnění. Firejail tedy spojuje v jednom spustitelném souboru všechny příslušné funkce, což ztěžuje jeho audit a udržování bezpečnosti na .
Nové vydání se vyznačuje implementací podpory připojení existujících prostorů názvů uživatelských identifikátorů (user namespaces) a procesů (pid namespaces). Pro řízení připojení prostorů názvů byly přidány flagy „—userns“, „—userns2“ a „—pidns“.
Tato funkce nefunguje v režimu setuid a vyžaduje použití odděleného režimu, který může fungovat bez získání práv root, ale vyžaduje aktivaci
uživatelských prostorů názvů v systému (ve výchozím nastavení jsou zakázány v Debianu a RHEL/CentOS) a nevylučuje možnost pro omezení "uživatelských prostorů". Mezi novými funkcemi Bubblewrap 0.4 je také možnost sestavení s C-knihovnou musl místo glibc a podpora ukládání informací o prostorách do souboru se statistikou ve formátu JSON.
Zdroj: opennet.ru
