ny utgåva av verktygslådan , utformad för att organisera arbetet i isolerade miljöer i Linux och fungerar på applikationsnivå för oprivilegierade användare. I praktiken används Bubblewrap av Flatpak-projektet som ett lager för att isolera applikationer som startas från paket. Projektkoden är skriven i C och under LGPLv2+-licensen.
För isolering används traditionell Linux-containervirtualiseringsteknik, baserad på användningen av cgroups, namespaces, Seccomp och SELinux. För att utföra privilegierade operationer för att konfigurera en behållare, startas Bubblewrap med roträttigheter (en körbar fil med en suid-flagga) och återställer sedan privilegier efter att behållaren har initierats.
Aktivering av användarnamnrymder i systemet, vilket gör att containrar kan använda sina egna separata identifierare, krävs inte för drift, eftersom det inte fungerar som standard i många distributioner (Bubblewrap är positionerat som en begränsad suid-implementering av en delmängd av användarnamnrymdernas funktioner - för att exkludera alla användar- och processidentifierare från miljön förutom den aktuella, används lägena CLONE_NEWUSER och CLONE_NEWPID). För ytterligare skydd används körbara filer som kontrolleras av
Bubblewrap-program körs i PR_SET_NO_NEW_PRIVS-läge, vilket förhindrar att nya behörigheter erhålls, till exempel om setuid-flaggan finns.
Isolering på filsystemnivå åstadkoms genom att skapa ett nytt monteringsnamnområde som standard, där en tom rotpartition skapas med tmpfs. Vid behov kopplas externa FS-partitioner till denna partition i "mount —bind"-läget (till exempel när den startas med alternativet "bwrap —ro-bind /usr /usr", vidarebefordras /usr-partitionen från huvudsystemet i skrivskyddat läge). Nätverkskapaciteten är begränsad till åtkomst till loopback-gränssnittet med nätverksstackisolering via flaggorna CLONE_NEWNET och CLONE_NEWUTS.
Huvudskillnad från ett liknande projekt , som också använder en setuid-lanseringsmodell, är att i Bubblewrap inkluderar containerskapandelagret endast de nödvändiga minimifunktionerna, och alla avancerade funktioner som krävs för att starta grafiska applikationer, interagera med skrivbordet och filtrera Pulseaudio-förfrågningar flyttas till Flatpak-sidan och körs efter att behörigheterna har återställts. Firejail, å andra sidan, kombinerar alla relaterade funktioner i en enda körbar fil, vilket komplicerar dess granskning och upprätthållande av säkerhet på .
Den nya utgåvan är känd för implementeringen av stöd för att koppla befintliga användarnamnrymder och pid-namnrymder. Flaggorna "--userns", "--userns2" och "--pidns" har lagts till för att kontrollera kopplingen av namnrymder.
Den här funktionen fungerar inte i setuid-läge och kräver ett separat läge som kan fungera utan att erhålla root-rättigheter, men kräver aktivering.
användarnamnrymder i systemet (inaktiverat som standard i Debian och RHEL/CentOS) och utesluter inte möjligheten för att kringgå begränsningarna för "användarnamnrymder". Nya funktioner i Bubblewrap 0.4 inkluderar även möjligheten att bygga med musl C-biblioteket istället för glibc och stöd för att spara namnrymdsinformation till en JSON-statistikfil.
Källa: opennet.ru
