Vydání Bubblewrap 0.9, vrstvy pro vytváření izolovaných prostředí

Po roce vývoje byla publikována nová verze nástroje pro organizaci práce s izolovanými prostředími Bubblewrap 0.9, která se používá k omezení jednotlivých aplikací neprivilegovaných uživatelů. V praxi je Bubblewrap používán 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 šířen 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.

V novém vydání:

  • Soubor s původními texty byl odstraněn z generovaných souborů v Autotools. Pro sestavení se nyní doporučuje používat build systém Meson. Volitelná podpora Autotools byla zatím zachována, ale v budoucích verzích se plánuje její odstranění.
  • Byla přidána možnost „—argv0“ pro nastavení hodnoty nulového argumentu příkazového řádku (argv[0] — název spustitelného souboru, například „—argv0 /usr/bin/test“).
  • Možnost „—symlink“ nyní funguje pouze tehdy, když symbolický odkaz již existuje a ukazuje na požadovaný cílový soubor.
  • Dokumentována možnost „—cap-add“, používaná pro nastavení flags capability, například „CAP_DAC_READ_SEARCH“.
  • Bylo zvýšeno informativnost chyb, které se zobrazují při selhání montování.
  • Proces vytváření unit testů byl zjednodušen.
  • Ve vzorcích použití byla ukončena podpora starších verzí Pythonu.
  • Byly vylepšeny operace přidělování paměti.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster