Een nieuwe versie van de toolkit voor het organiseren van geïsoleerde omgevingen Bubblewrap 0.12 is uitgebracht, gebruikt om afzonderlijke toepassingen van niet-bevoorrechte gebruikers te beperken. In de praktijk wordt Bubblewrap toegepast door het Flatpak-project als een laag voor het isoleren van toepassingen die uit pakketten worden uitgevoerd. Voor isolatie worden traditionele Linux-technologieën voor containervirtualisatie gebruikt, gebaseerd op cgroups, namespaces, Seccomp en SELinux. De code van het project is geschreven in C en wordt verspreid onder de LGPLv2.1+-licentie.
Isolatie op het niveau van het bestandssysteem wordt gerealiseerd door standaard het creëren van een nieuwe namespace voor mountpunten, waarin een lege root-partitie wordt aangemaakt met behulp van tmpfs. In deze partitie worden indien nodig externe bestandssysteem-partities gekoppeld in de modus 'mount --bind' (bijvoorbeeld bij uitvoering met de optie 'bwrap --ro-bind /usr /usr' wordt de partitie /usr vanuit het hoofd systeem in alleen-lezen modus doorgegeven). Netwerkfunctionaliteiten worden beperkt tot toegang tot de loopback-interface met isolatie van de netwerkstack via de vlaggen CLONE_NEWNET en CLONE_NEWUTS.
Om alle overbodige gebruikers- en procesidentificatoren uit de aangemaakte geïsoleerde omgeving te verwijderen, kunnen de modi CLONE_NEWUSER (gebruikersnamespace) en CLONE_NEWPID (PID-namespace) worden gebruikt, en voor het verbieden van het verkrijgen van nieuwe privileges wordt de modus PR_SET_NO_NEW_PRIVS toegepast. Voor het verkrijgen van de benodigde privileges wordt de 'gebruikersnamespace' gebruikt.
In de nieuwe release:
- De licentie voor de code is gewijzigd van LGPL 2.0+ naar LGPL 2.1+.
- De ondersteuning voor bouwer in de vorm van een uitvoerbare file, die extra privileges verkrijgt via de suid root-vlag, is stopgezet. Het hebben van ondersteuning voor 'gebruikersnamespace' in het systeem is nu verplicht. Als reden wordt gegeven dat het onderhoud van de versie met de suid-vlag arbeidsintensief is, aangezien de 'gebruikersnamespace' nu wijdverspreid wordt ondersteund in distributies.
- De optie '--not-a-security-boundary' is toegevoegd, waarbij sommige fouten bij het configureren van een geïsoleerde sandbox-omgeving, zoals het remounten van een subsysteem, niet leiden tot een noodstop.
- De сборoptie «assume_kernel» is toegevoegd, die de ondersteuning voor de backward compatibility met Linux-kernels die ouder zijn dan de opgegeven versie, uitschakelt. Bijvoorbeeld, het opgeven van versies 5.6.0+ resulteert in het uitsluiten van een alternatieve implementatie van de functionaliteit «openat2(RESOLVE_IN_ROOT)».
Bron: opennet.ru
