Je dostupná nová verze nástroje Bubblewrap 0.5.0 pro organizaci izolovaných prostředí, která se obvykle používá k omezení jednotlivých aplikací neprivilegovaných uživatelů. V praxi se Bubblewrap používá projektem Flatpak jako vrstva pro izolaci spouštěných aplikací z balíčků. Kód projektu je napsán v jazyce C a je distribuován 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ů identifikátorů uživatelů (user namespaces), které umožňují používat v kontejnerech vlastní oddělenou sadu identifikátorů, není pro práci nutná, protože ve výchozím nastavení nefunguje v mnoha distribucích (Bubblewrap je prezentován jako omezená suid-implementace podmnožiny možností user namespaces — pro vyloučení všech identifikátorů uživatelů a procesů z prostředí, kromě aktuálního, se používají režimy CLONE_NEWUSER a CLONE_NEWPID). Pro dodatečnou ochranu se programy spuštěné pod řízením Bubblewrap spouštějí v režimu PR_SET_NO_NEW_PRIVS, který zakazuje získání nových privilegií, například při přítomnosti 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.
Klíčovým rozdílem od podobného projektu Firejail, který také používá model spuštění s použitím setuid, je to, že v Bubblewrap vrstva pro vytváření kontejnerů zahrnuje pouze nezbytné minimum možností, zatímco všechny rozšířené funkce potřebné pro spuštění grafických aplikací, interakci se stolním prostředím a filtrování požadavků na Pulseaudio, byly převedeny na stranu Flatpak a vykonávají se až po zrušení privilegií. Firejail však spojuje v jednom spustitelném souboru všechny související funkce, což komplikuje jeho audit a udržování bezpečnosti na odpovídající úrovni.
Nová verze nabízí možnosti: „—chmod“ pro změnu oprávnění, „—clearenv“ pro vyčištění proměnných prostředí (kromě PWD) a „—perms“ pro určení oprávnění použitého při provádění operací „—bind-data“, „—dir“, „—file“, „—ro-bind-data“ a „—tmpfs“. Byla vylepšena diagnostika problémů, které nastávají při selhání montování v režimu bind. Pro zsh byla přidána podpora automatického dokončování příkazů stisknutím tabulátoru.
Zdroj: opennet.ru
