Release van Bubblewrap 0.9, een laag voor het creëren van geïsoleerde omgevingen

Na een jaar van ontwikkeling is de nieuwe versie van de tool voor het organiseren van geïsoleerde omgevingen Bubblewrap 0.9 gepubliceerd, die wordt gebruikt om afzonderlijke applicaties van niet-geprivilegieerde gebruikers te beperken. In de praktijk wordt Bubblewrap toegepast door het Flatpak-project als een laag voor de isolatie van applicaties die uit pakketten worden uitgevoerd. De code van het project is geschreven in C en wordt verspreid onder de LGPLv2+-licentie.

Voor isolatie worden traditionele Linux-technologieën voor containervirtualisatie gebruikt, gebaseerd op cgroups, namespaces, Seccomp en SELinux. Om geprivilegieerde operaties voor het instellen van de container uit te voeren, wordt Bubblewrap met root-rechten uitgevoerd (uitvoerbare bestanden met de suid-vlag) en worden de privileges na de initialisatie van de container weer teruggezet.

Activatie in het systeem van gebruikers-id ruimte (user namespaces), waarmee in containers een eigen, afzonderlijke set id's kan worden gebruikt, is niet vereist voor het functioneren, omdat het standaard niet werkt in veel distributies (Bubblewrap wordt gepositioneerd als een beperkte suid-implementatie van een subset van de mogelijkheden van user namespaces - om alle id's van gebruikers en processen uit de omgeving, behalve de huidige, uit te sluiten, worden de modi CLONE_NEWUSER en CLONE_NEWPID gebruikt). Voor extra bescherming worden programma's die onder Bubblewrap worden uitgevoerd, gestart in de PR_SET_NO_NEW_PRIVS-modus, die het verkrijgen van nieuwe privileges verbiedt, bijvoorbeeld bij aanwezigheid van de setuid-vlag.

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.

Een belangrijk verschil met een vergelijkbaar project Firejail, dat ook een op setuid gebaseerde startmodel gebruikt, is dat de laag voor het creëren van containers in Bubblewrap alleen de absoluut noodzakelijke permissies omvat, terwijl alle geavanceerde functies die nodig zijn voor het uitvoeren van grafische applicaties, interactie met de desktop en filtering van verzoeken naar Pulseaudio, naar de kant van Flatpak zijn verplaatst en pas na het intrekken van de privileges worden uitgevoerd. Firejail daarentegen combineert alle bijbehorende functies in één uitvoerbaar bestand, wat het auditproces en het handhaven van veiligheid op een goed niveau bemoeilijkt.

In de nieuwe release:

  • Bestanden die zijn gegenereerd in Autotools zijn verwijderd uit het pakket met bronbestanden. Voor de bouw wordt nu aanbevolen om het bouwsysteem Meson te gebruiken. Optionele ondersteuning voor Autotools is voorlopig behouden, maar in toekomstige versies is het de bedoeling deze te verwijderen.
  • Een "--argv0"-optie is toegevoegd om de waarde van het nul-commando-argument (argv[0] - de naam van het uitvoerbare bestand, bijvoorbeeld "--argv0 /usr/bin/test") in te stellen.
  • De optie "--symlink" werkt nu alleen als de symbolische link al bestaat en wijst naar het juiste doelbestand.
  • De optie «—cap-add» is gedocumenteerd, die wordt gebruikt om capability-vlaggen in te stellen, zoals «CAP_DAC_READ_SEARCH».
  • De informativiteit van fouten die optreden bij het mounten is verbeterd.
  • Het proces voor het maken van unit-tests is vereenvoudigd.
  • In de gebruiksvoorbeelden is de ondersteuning voor oudere versies van Python stopgezet.
  • De geheugenallocatie- operaties zijn verbeterd.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster