Uitgave van Bubblewrap 0.6, een laag voor het creëren van geïsoleerde omgevingen

Er is een release van tools beschikbaar voor het organiseren van het werk van geïsoleerde omgevingen Bubblewrap 0.6, die meestal wordt gebruikt om individuele applicaties van niet-bevoorrechte gebruikers te beperken. In de praktijk wordt Bubblewrap door het Flatpak-project gebruikt als een laag om applicaties te isoleren die vanuit pakketten worden gestart. De projectcode is geschreven in C en wordt gedistribueerd onder de LGPLv2+ licentie.

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 worden programma's die onder Bubblewrap worden uitgevoerd, gestart in de PR_SET_NO_NEW_PRIVS-modus, die het verwerven van nieuwe privileges verbiedt, 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.

Het belangrijkste verschil met het vergelijkbare Firejail-project, dat ook het setuid-lanceringsmodel gebruikt, is dat in Bubblewrap de laag voor het maken van containers alleen de noodzakelijke minimale mogelijkheden bevat, en alle geavanceerde functies die nodig zijn voor het uitvoeren van grafische applicaties, interactie met de desktop en het filteren van verzoeken. naar Pulseaudio, overgebracht naar de Flatpak-kant en uitgevoerd nadat de rechten zijn gereset. Firejail daarentegen combineert alle gerelateerde functies in één uitvoerbaar bestand, wat het moeilijk maakt om de beveiliging op het juiste niveau te controleren en te handhaven.

In de nieuwe uitgave:

  • Ondersteuning toegevoegd voor het Meson-montagesysteem. Ondersteuning voor het bouwen met Autotools is voorlopig behouden, maar zal in een toekomstige release worden verwijderd.
  • Geïmplementeerde "--add-seccomp" optie om meer dan één seccomp programma toe te voegen. Er is een waarschuwing toegevoegd dat als u de optie "--seccomp" opnieuw opgeeft, alleen de laatste parameter wordt toegepast.
  • De master branch in de git repository is hernoemd naar main.
  • Gedeeltelijke ondersteuning toegevoegd voor de REUSE-specificatie, die het proces van het specificeren van licentie- en copyrightinformatie verenigt. Aan veel codebestanden zijn SPDX-License-Identifier-headers toegevoegd. Door de REUSE-richtlijnen te volgen, wordt het eenvoudiger om automatisch te bepalen welke licentie van toepassing is op welke delen van de applicatiecode.
  • Controle van de waarde van de opdrachtregelargumentteller (argc) toegevoegd en een nooduitgang geïmplementeerd als de teller nul is. De wijziging helpt beveiligingsproblemen te blokkeren die worden veroorzaakt door onjuiste verwerking van doorgegeven opdrachtregelargumenten, zoals CVE-2021-4034 in Polkit.

Bron: opennet.ru

Voeg een reactie