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

Verfügbar neue Version des Toolkits Luftpolsterfolie 0.4.0, entwickelt, um die Arbeit isolierter Umgebungen unter Linux zu organisieren und auf der Anwendungsebene unprivilegierter Benutzer zu arbeiten. 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 vertrieben von lizenziert unter LGPLv2+.

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, lauffähig unter Kontrolle
Bubblewrap-Programme werden im PR_SET_NO_NEW_PRIVS-Modus gestartet, der den Erhalt 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.

Hauptunterschied zu einem ähnlichen Projekt Feuergefängnis, das ebenfalls ein Setuid-Startmodell verwendet, besteht darin, dass in Bubblewrap die Containererstellungsschicht nur die erforderlichen Mindestfunktionen enthält und alle erweiterten Funktionen, die zum Ausführen grafischer Anwendungen, zur Interaktion mit dem Desktop und zum Filtern von Anrufen an Pulseaudio erforderlich sind, aus Flatpak ausgelagert und ausgeführt werden nachdem die Berechtigungen zurückgesetzt wurden. Firejail hingegen vereint alle zugehörigen Funktionen in einer ausführbaren Datei, was die Überwachung und Aufrechterhaltung der Sicherheit erschwert auf dem richtigen Niveau.

Die neue Version zeichnet sich durch die Implementierung der Unterstützung für den Beitritt bestehender Benutzernamensräume und Prozess-PID-Namensräume aus. Um die Verbindung von Namespaces zu steuern, wurden die Flags „--userns“, „--userns2“ und „-pidns“ hinzugefügt.
Diese Funktion funktioniert nicht im Setuid-Modus und erfordert die Verwendung eines separaten Modus, der ohne den Erwerb von Root-Rechten funktionieren kann, aber eine Aktivierung erfordert
Benutzernamensräume auf dem System (standardmäßig deaktiviert unter Debian und RHEL/CentOS) und schließt die Möglichkeit nicht aus Betriebs möglicherweise übrig Schwachstellen für die „Benutzernamespaces“-Einschränkungen. Zu den neuen Funktionen von Bubblewrap 0.4 gehören auch die Möglichkeit, mit der musl-C-Bibliothek anstelle von glibc zu erstellen und die Unterstützung für das Speichern von Namespace-Informationen in einer Datei mit Statistiken im JSON-Format.

Source: opennet.ru

Kommentar hinzufügen