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

K dispozici je vydání nástroje pro organizaci práce v izolovaných prostředích Bubblewrap 0.8, obvykle používané k omezení jednotlivých aplikací nepriviligovaných uživatelů. V praxi je Bubblewrap používán projektem Flatpak jako mezivrstva pro izolaci spuš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.

V novém vydání:

  • Přidána možnost „—disable-userns“, která zakazuje vytváření vlastního vnořeného prostoru identifikátorů uživatelů (user namespace) v sandboxovém prostředí.
  • Přidána možnost „—assert-userns-disabled“ pro ověření, že při použití volby „—disable-userns“ je aktivováno existující uživatelské prostředí identifikátorů.
  • Zvýšena informativnost chybových zpráv souvisejících s deaktivací v jádře nastavení CONFIG_SECCOMP a CONFIG_SECCOMP_FILTER.

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