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

Eine Version von Tools zum Organisieren der Arbeit isolierter Umgebungen, Bubblewrap 0.8, 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:

  • Option „--disable-userns“ hinzugefügt, um die Erstellung eines eigenen verschachtelten Benutzernamensraums in der Sandbox-Umgebung zu deaktivieren.
  • Option „--assert-userns-disabled“ hinzugefügt, um zu überprüfen, ob ein vorhandener Benutzer-ID-Bereich verwendet wird, wenn die Option „--disable-userns“ verwendet wird.
  • Der Informationsgehalt von Fehlermeldungen im Zusammenhang mit der Deaktivierung der Einstellungen CONFIG_SECCOMP und CONFIG_SECCOMP_FILTER im Kernel wurde erhöht.

Source: opennet.ru

Kommentar hinzufügen