ny udgave af værktøjer , designet til at organisere arbejdet med isolerede miljøer i Linux og fungerer på niveauet for applikationsprivilegier. I praksis bruges Bubblewrap af Flatpak-projektet som et lag til at isolere de applikationer, der kører fra pakker. Koden til projektet er skrevet i C og er licenseret under LGPLv2+.
Isolationen bruger traditionelle container-virtualiseringsteknologier for Linux, baseret på cgroups, namespaces, Seccomp og SELinux. For at udføre privilegerede operationer til konfiguration af containeren startes Bubblewrap med root-rettigheder (eksekverbar fil med suid-flag) og får derefter nulstillet privilegierne efter afslutningen af containerens initialisering.
Aktivering af systemet til bruger-id-rum (user namespaces), der tillader brug af et separat sæt af identificere i containere, kræver ikke nogen opsætning, da det som standard ikke fungerer i mange distributioner (Bubblewrap positioneres som en begrænset suid-implementering af et undersæt af mulighederne for bruger-id-rum — for at udelukke alle bruger- og procesidentiteter fra miljøet, bortset fra den nuværende, anvendes tilstandene CLONE_NEWUSER og CLONE_NEWPID). For yderligere beskyttelse køres de programmer, der kører under
Bubblewrap i PR_SET_NO_NEW_PRIVS-tilstand, der forhindrer opnåelse af nye privilegier, f.eks. ved tilstedeværelse af setuid-flaget.
Isolation på filsystemniveau foregår gennem oprettelsen af et nyt mount namespace som standard, hvor et tomt rodpartition oprettes ved hjælp af tmpfs. Eksterne filsystempartitioner kan tilsluttes denne partition efter behov i 'mount --bind'-tilstand (for eksempel ved opstart med muligheden 'bwrap --ro-bind /usr /usr', hvor /usr partitionen fra hovedsystemet videregives i skrivebeskyttet tilstand). Netværksmuligheder begrænses til adgang til loopback-interface med isolering af netværksstakken via flags CLONE_NEWNET og CLONE_NEWUTS.
Nøgleforskellen fra det lignende projekt , som også bruger en køre-model med setuid, adskiller sig fra Bubblewrap ved at container-laget kun inkluderer det nødvendige minimum af funktionaliteter, mens alle udvidede funktioner, der kræves for at køre grafiske applikationer, interagere med skrivebordet og filtrere anmodninger til Pulseaudio, er flyttet til Flatpak, der udføres efter at privilegierne er blevet nulstillet. Firejail, derimod, samler alle de tilhørende funktioner i én eksekverbar fil, hvilket komplicerer dens revision og opretholdelse af sikkerheden på .
Den nye udgave er bemærkelsesværdig ved implementeringen af støtte til tilslutning af eksisterende bruger-id-rum (user namespaces) og proces-rum (pid namespaces). For at styre tilslutningen af rum er de nye flags «—userns», «—userns2» og «—pidns» tilføjet.
Denne mulighed fungerer ikke i setuid-tilstand og kræver anvendelse af en separat tilstand, der kan fungere uden at opnå root-rettigheder, men kræver aktivering af
user namespaces i systemet (er som standard deaktiveret i Debian og RHEL/CentOS) og udelukker ikke muligheden for the user namespace restriction rim. Among the new features of Bubblewrap 0.4 is the ability to build with the musl C library instead of glibc, and support for saving namespace information to a JSON-formatted statistics file.
Kilde: opennet.ru
