Release av Bubblewrap 0.4.0, ett lager för att skapa isolerade miljöer

Tillgängliga ny version av verktygslådan Bubbelplast 0.4.0, utformad för att organisera arbetet i isolerade miljöer i Linux och som 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 lanseras från paket. Projektkoden är skriven i C och levererad av licensierad under LGPLv2+.

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ändarnamnutrymmen i namnområdessystemet, som låter dig använda din egen separata uppsättning identifierare i behållare, krävs inte för drift, eftersom det inte fungerar som standard i många distributioner (Bubblewrap är placerad som en begränsad suid-implementering av en underuppsättning av funktioner för användarnamnutrymmen - för att utesluta alla användar- och processidentifierare från miljön, förutom den nuvarande, används lägena CLONE_NEWUSER och CLONE_NEWPID). För ytterligare skydd, körbar under kontroll
Bubblewrap-program startas i PR_SET_NO_NEW_PRIVS-läge, vilket förbjuder erhållande av nya privilegier, till exempel om setuid-flaggan är närvarande.

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 Brandfängelse, som också använder en setuid lanseringsmodell, är att i Bubblewrap inkluderar lagerskapande lager endast de nödvändiga minimimöjligheterna, och alla avancerade funktioner som krävs för att köra grafiska applikationer, interagera med skrivbordet och filtrera anrop till Pulseaudio outsourcas Flatpak och exekveras efter att privilegierna har återställts. Firejail, å andra sidan, kombinerar alla relaterade funktioner i en körbar fil, vilket gör det svårt att granska och upprätthålla säkerheten på rätt nivå.

Den nya utgåvan är känd för implementeringen av stöd för att ansluta befintliga användarnamnområden och process-pid-namnområden. För att kontrollera anslutningen av namnområden har flaggorna "--userns", "--userns2" och "-pidns" lagts till.
Den här funktionen fungerar inte i setuid-läge och kräver användning av ett separat läge som kan fungera utan att erhålla root-rättigheter, men som kräver aktivering
användarnamnrymder på systemet (inaktiverat som standard på Debian och RHEL/CentOS) och utesluter inte möjligheten utnyttjande potentiellt återstående sårbarheter för "användarnamnutrymmen" begränsningskanten. 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 namnområdesinformation till en fil med statistik i JSON-format.

Källa: opennet.ru

Lägg en kommentar