Voor isolatie worden traditionele Linux containervirtualisatietechnologieën gebruikt, gebaseerd op het gebruik van cgroups, namespaces, Seccomp en SELinux. Om bevoorrechte bewerkingen uit te voeren om een container te configureren, wordt Bubblewrap gestart met rootrechten (een uitvoerbaar bestand met een suid-vlag) en worden vervolgens de bevoegdheden opnieuw ingesteld nadat de container is geïnitialiseerd.
Activering van gebruikersnaamruimten in het naamruimtesysteem, waardoor u uw eigen afzonderlijke set ID's in containers kunt gebruiken, is niet vereist voor de werking, omdat het in veel distributies niet standaard werkt (Bubblewrap is gepositioneerd als een beperkte suid-implementatie van een subset van mogelijkheden voor gebruikersnaamruimten - om alle gebruikers- en proces-ID's uit de omgeving uit te sluiten, behalve de huidige, worden de modi CLONE_NEWUSER en CLONE_NEWPID gebruikt). Voor extra bescherming, uitvoerbaar onder controle
Bubblewrap-programma's worden gestart in de PR_SET_NO_NEW_PRIVS-modus, waardoor het verkrijgen van nieuwe rechten niet mogelijk is, bijvoorbeeld als de setuid-vlag aanwezig is.
Isolatie op bestandssysteemniveau wordt bereikt door standaard een nieuwe mount-naamruimte te maken, waarin een lege rootpartitie wordt gemaakt met behulp van tmpfs. Indien nodig worden externe FS-partities aan deze partitie gekoppeld in de “mount —bind”-modus (als het bijvoorbeeld wordt gestart met de optie “bwrap —ro-bind /usr /usr”, wordt de /usr-partitie doorgestuurd vanaf het hoofdsysteem in alleen-lezen-modus). De netwerkmogelijkheden zijn beperkt tot toegang tot de loopback-interface met netwerkstackisolatie via de vlaggen CLONE_NEWNET en CLONE_NEWUTS.
Belangrijk verschil met een soortgelijk project
De nieuwe release valt op door de implementatie van ondersteuning voor het samenvoegen van bestaande gebruikersnaamruimten en procespid-naamruimten. Om de verbinding van naamruimten te controleren, zijn de vlaggen “--userns”, “--userns2” en “-pidns” toegevoegd.
Deze functie werkt niet in de setuid-modus en vereist het gebruik van een aparte modus die kan werken zonder rootrechten te verkrijgen, maar vereist activering
gebruikersnaamruimten op het systeem (standaard uitgeschakeld op Debian en RHEL/CentOS) en sluit de mogelijkheid niet uit
Bron: opennet.ru