Udgivelse af Bubblewrap 0.4.0, et lag til at skabe isolerede miljøer

Ledig ny udgivelse af værktøjssættet Bobleplast 0.4.0, designet til at organisere arbejdet i isolerede miljøer i Linux og operere på applikationsniveau for uprivilegerede brugere. I praksis bruges Bubblewrap af Flatpak-projektet som et lag til at isolere applikationer lanceret fra pakker. Projektkoden er skrevet i C og distribueret af licenseret under LGPLv2+.

Til isolering anvendes traditionelle Linux-containervirtualiseringsteknologier baseret på brugen af ​​cgroups, namespaces, Seccomp og SELinux. For at udføre privilegerede handlinger for at konfigurere en container, startes Bubblewrap med root-rettigheder (en eksekverbar fil med et suid-flag) og nulstiller derefter privilegier, efter at containeren er initialiseret.

Aktivering af brugernavneområder i navnerumssystemet, som giver dig mulighed for at bruge dit eget separate sæt af identifikatorer i containere, er ikke påkrævet for drift, da det ikke fungerer som standard i mange distributioner (Bubblewrap er placeret som en begrænset suid-implementering af en undersæt af brugernavne-funktioner - for at udelukke alle bruger- og procesidentifikatorer fra miljøet, undtagen den nuværende, bruges tilstandene CLONE_NEWUSER og CLONE_NEWPID). For yderligere beskyttelse, eksekverbar under kontrol
Bubblewrap-programmer lanceres i PR_SET_NO_NEW_PRIVS-tilstand, som forbyder at opnå nye privilegier, for eksempel hvis setuid-flaget er til stede.

Isolering på filsystemniveau opnås ved at oprette et nyt mount-navneområde som standard, hvor en tom rodpartition oprettes ved hjælp af tmpfs. Hvis det er nødvendigt, er eksterne FS-partitioner knyttet til denne partition i "mount —bind"-tilstand (for eksempel, når den startes med "bwrap —ro-bind /usr /usr", videresendes /usr-partitionen fra hovedsystemet i skrivebeskyttet tilstand). Netværkskapaciteter er begrænset til adgang til loopback-grænsefladen med netværksstackisolering via flagene CLONE_NEWNET og CLONE_NEWUTS.

Hovedforskel fra et lignende projekt Ildfængsel, som også bruger en setuid-lanceringsmodel, er, at i Bubblewrap indeholder containeroprettelseslaget kun de nødvendige minimumsmuligheder, og alle de avancerede funktioner, der kræves til at køre grafiske applikationer, interagere med skrivebordet og filtrere opkald til Pulseaudio, outsources Flatpak og udføres efter at privilegierne er blevet nulstillet. Firejail på den anden side kombinerer alle relaterede funktioner i én eksekverbar fil, hvilket gør det vanskeligt at revidere og vedligeholde sikkerheden på på det rette niveau.

Den nye udgivelse er bemærkelsesværdig for implementeringen af ​​understøttelse af sammenføjning af eksisterende brugernavne- og proces-pid-navneområder. For at styre forbindelsen af ​​navnerum er flagene "--userns", "--userns2" og "-pidns" blevet tilføjet.
Denne funktion virker ikke i setuid-tilstand og kræver brug af en separat tilstand, der kan fungere uden at opnå root-rettigheder, men kræver aktivering
brugernavneområder på systemet (deaktiveret som standard på Debian og RHEL/CentOS) og udelukker ikke muligheden operation potentielt tilbage sårbarheder for "brugernavnerums"-begrænsningskanten. Nye funktioner i Bubblewrap 0.4 inkluderer også muligheden for at bygge med musl C-biblioteket i stedet for glibc og understøttelse af lagring af navneområdeoplysninger til en fil med statistik i JSON-format.

Kilde: opennet.ru

Tilføj en kommentar