Bubblewrap je nástroj co funguje organizovat práci na izolovaném prostoru v systému Linux a běž na úrovni aplikace bez privilegovaných uživatelů. V praxi je projekt Bubblewrap používán projektem Flatpak jako mezivrstva k izolaci aplikací spuštěných ze softwarových balíčků.
Pro izolaci používá Linux virtualizační technologie tradičních kontejnerů založených na použití cgroups, jmenných prostorů, Seccomp a SELinux. Chcete-li provádět privilegované operace ke konfiguraci kontejneru, spustí se Bubblewrap s oprávněními uživatele root (spustitelný soubor s příznakem suid), po kterém je po inicializaci kontejneru obnoveno oprávnění.
Není třeba v systému povolovat uživatelské jmenné prostory, což vám umožňuje používat vlastní sadu ID v kontejnerech, protože ve výchozím nastavení to na mnoha distribucích nefunguje.
O společnosti Bubblewrap
Bubblewrap je umístěn jako omezená implementace suida z podmnožiny funkcí jmenného prostoru uživatele k vyloučení všech ID uživatelů a procesů z prostředí kromě aktuálního, použijte režimy CLONE_NEWUSER a CLONE_NEWPID.
Pro další ochranu programy spuštěné v Bubblewrapu začínají v režimu PR_SET_NO_NEW_PRIVS, který zakazuje nová privilegia, například s příznakem setuid.
Izolace na úrovni souborového systému se provádí vytvořením standardně nového jmenného prostoru mount, ve kterém je pomocí tmpfs vytvořen prázdný kořenový oddíl.
V případě potřeby jsou k této sekci připojeny externí sekce FS v «připojit - svázat»(Například počínaje možností«bwrap –ro-bind / usr / usr', The / usr section is forwarded from the host in read-only mode).
Možnosti sítě jsou omezeny na přístup k rozhraní zpětné smyčky invertováno s izolací síťového zásobníku pomocí indikátorů CLONE_NEWNET a CLONE_NEWUTS.
Klíčový rozdíl oproti podobnému projektu Firejail, který také používá spouštěč setuid, je to v Bubblewrap, kontejnerová vrstva obsahuje pouze minimální nutné funkce a všechny pokročilé funkce potřebné ke spouštění grafických aplikací, interakci s desktopem a filtrování hovorů do Pulseaudio jsou uvedeny vedle Flatpaku a běží po resetování oprávnění.
Firejail na druhé straně kombinuje všechny související funkce do jednoho spustitelného souboru, což komplikuje váš audit a udržuje zabezpečení na správné úrovni.
Bubblewrap v podstatě funguje prostřednictvím vytvoření prázdného jmenného prostoru pro připojení v dočasném systému souborů který bude zničen po dokončení zpracování karantény.
Pomocí přepínačů může uživatel vytvořit požadované prostředí souborového systému v oboru názvů připojení připojením na odkaz požadovaných adresářů z hostitelského systému.
Bubblewrap 0.4.0
Bubblewrap je aktuálně ve verzi 0.4.0 který byl nedávno vydán. Kód projektu je napsán v jazyce C a distribuován pod licencí LGPLv2 +.
Nová verze je pozoruhodný implementací podpory pro spojení jmenných prostorů a procesů stávající uživatelé (jmenné prostory pid).
Pro řízení připojení jmenných prostorů byly přidány příznaky „–userns“, „–userns2“ a „–pidns“.
Tato funkce nefunguje v režimu setuid a vyžaduje samostatný režim, který může pracovat bez oprávnění root, ale vyžaduje, aby byly v systému povoleny uživatelské jmenné prostory (ve výchozím nastavení je deaktivováno v Debianu a RHEL / CentOS) a nevylučuje možnost potenciálního zneužití zbývající chyby zabezpečení až na hranici omezení „uživatelských jmenných prostorů“.
Z nových funkcí Bubblewrap 0.4 je také pozorována možnost stavby s musl C knihovnou místo glibc, a podpora pro ukládání informací o jmenném prostoru do statistického souboru ve formátu JSON.
Kód Bubblewrap a související dokumentace je k nahlédnutí na Githubu odkaz je tento.