Verze Bubblewrap 0.4.0, vrstvy pro vytváření izolovaných prostředí

Dostupné nové vydání nástroje Bubblewrap 0.4.0, 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 distribuováno 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 Firejail, 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 náležité úrovni..

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 provozování potenciálně zůstávající. zranitelností 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

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