Veröffentlichung von Bubblewrap 0.6, einer Ebene zum Erstellen isolierter Umgebungen

Eine Version von Tools zum Organisieren der Arbeit isolierter Umgebungen, Bubblewrap 0.6, ist verfügbar, die normalerweise dazu verwendet werden, einzelne Anwendungen nicht privilegierter Benutzer einzuschränken. In der Praxis wird Bubblewrap vom Flatpak-Projekt als Schicht verwendet, um von Paketen gestartete Anwendungen zu isolieren. Der Projektcode ist in C geschrieben und wird unter der LGPLv2+-Lizenz vertrieben.

Zur Isolierung werden traditionelle Linux-Containervirtualisierungstechnologien verwendet, die auf der Verwendung von cgroups, Namespaces, Seccomp und SELinux basieren. Um privilegierte Vorgänge zum Konfigurieren eines Containers auszuführen, wird Bubblewrap mit Root-Rechten (einer ausführbaren Datei mit einem suid-Flag) gestartet und setzt dann die Berechtigungen zurück, nachdem der Container initialisiert wurde.

Die Aktivierung von Benutzernamensräumen im Namensraumsystem, die es Ihnen ermöglicht, Ihren eigenen separaten Satz von Bezeichnern in Containern zu verwenden, ist für den Betrieb nicht erforderlich, da es in vielen Distributionen nicht standardmäßig funktioniert (Bubblewrap ist als eingeschränkte Suid-Implementierung von a positioniert Teilmenge der Benutzernamespace-Funktionen – um alle Benutzer- und Prozess-IDs außer der aktuellen aus der Umgebung auszuschließen, werden die Modi CLONE_NEWUSER und CLONE_NEWPID verwendet. Für zusätzlichen Schutz werden unter Bubblewrap ausgeführte Programme im PR_SET_NO_NEW_PRIVS-Modus gestartet, der den Erwerb neuer Berechtigungen verhindert, beispielsweise wenn das Setuid-Flag vorhanden ist.

Die Isolierung auf Dateisystemebene wird durch die standardmäßige Erstellung eines neuen Mount-Namespace erreicht, in dem mithilfe von tmpfs eine leere Root-Partition erstellt wird. Bei Bedarf werden externe FS-Partitionen im Modus „mount —bind“ an diese Partition angehängt (zum Beispiel wird beim Start mit der Option „bwrap —ro-bind /usr /usr“ die /usr-Partition vom Hauptsystem weitergeleitet im schreibgeschützten Modus). Die Netzwerkfunktionen sind auf den Zugriff auf die Loopback-Schnittstelle mit Netzwerk-Stack-Isolierung über die Flags CLONE_NEWNET und CLONE_NEWUTS beschränkt.

Der Hauptunterschied zum ähnlichen Firejail-Projekt, das ebenfalls das Setuid-Startmodell verwendet, besteht darin, dass die Containererstellungsebene in Bubblewrap nur die erforderlichen Mindestfunktionen und alle erweiterten Funktionen umfasst, die zum Ausführen grafischer Anwendungen, zur Interaktion mit dem Desktop und zum Filtern von Anforderungen erforderlich sind an Pulseaudio übertragen, auf die Flatpak-Seite übertragen und nach dem Zurücksetzen der Berechtigungen ausgeführt werden. Firejail hingegen vereint alle zugehörigen Funktionen in einer ausführbaren Datei, was es schwierig macht, die Sicherheit auf dem richtigen Niveau zu prüfen und aufrechtzuerhalten.

In der neuen Version:

  • Unterstützung für das Meson-Montagesystem hinzugefügt. Die Unterstützung für das Erstellen mit Autotools wurde vorerst beibehalten, wird jedoch in einer zukünftigen Version entfernt.
  • Option „--add-seccomp“ implementiert, um mehr als ein Seccomp-Programm hinzuzufügen. Es wurde eine Warnung hinzugefügt, dass bei erneuter Angabe der Option „--seccomp“ nur der letzte Parameter angewendet wird.
  • Der Master-Zweig im Git-Repository wurde in Main umbenannt.
  • Teilweise Unterstützung für die REUSE-Spezifikation hinzugefügt, die den Prozess der Angabe von Lizenz- und Urheberrechtsinformationen vereinheitlicht. Vielen Codedateien sind SPDX-License-Identifier-Header hinzugefügt. Das Befolgen der REUSE-Richtlinien erleichtert die automatische Bestimmung, welche Lizenz für welche Teile des Anwendungscodes gilt.
  • Überprüfung des Werts des Befehlszeilenargumentzählers (argc) hinzugefügt und ein Notausgang implementiert, wenn der Zähler Null ist. Die Änderung trägt dazu bei, Sicherheitsprobleme zu blockieren, die durch falsche Verarbeitung übergebener Befehlszeilenargumente verursacht werden, wie z. B. CVE-2021-4034 in Polkit.

Source: opennet.ru

Kommentar hinzufügen