Neue Ausgabe des Tools , das zur Organisation der Arbeit in isolierten Umgebungen unter Linux gedacht ist und auf Anwendungsebene fĂŒr nicht privilegierte Benutzer funktioniert. In der Praxis wird Bubblewrap vom Flatpak-Projekt als Layer zur Isolation von aus Paketen gestarteten Anwendungen verwendet. Der Projektcode ist in C geschrieben und unter der Lizenz LGPLv2+.
Zur Isolation werden traditionelle Linux-Technologien der Container-Virtualisierung verwendet, die auf cgroups, NamensrĂ€umen (namespaces), Seccomp und SELinux basieren. Um privilegierte Operationen zur Konfiguration des Containers durchzufĂŒhren, wird Bubblewrap mit Root-Rechten (ausfĂŒhrbare Datei mit suid-Flag) gestartet, gefolgt von einem RĂŒcksetzen der Privilegien nach Abschluss der Initialisierung des Containers.
Die Aktivierung in Systemen fĂŒr Benutzer-Namespaces, die es ermöglichen, in Containern eine eigene, separate Sammlung von Identifikatoren zu verwenden, ist nicht erforderlich, da sie standardmĂ€Ăig in vielen Distributionen nicht funktioniert (Bubblewrap wird als eingeschrĂ€nkte SUID-Implementierung eines Teilsets von Benutzer-Namespaces-Funktionen positioniert â um alle Benutzer- und Prozessidentifikatoren aus der Umgebung auszuschlieĂen, auĂer dem aktuellen, werden die Modi CLONE_NEWUSER und CLONE_NEWPID verwendet). Zum zusĂ€tzlichen Schutz werden die unter der Verwaltung von
Bubblewrap gestarteten Programme im PR_SET_NO_NEW_PRIVS-Modus ausgefĂŒhrt, der das Erlangen neuer Privilegien verbietet, beispielsweise im Falle eines Setuid-Flags.
Die Isolation auf Dateisystemebene erfolgt durch die standardmĂ€Ăige Erstellung eines neuen Namensraums fĂŒr EinhĂ€ngepunkte (mount namespace), in dem durch tmpfs ein leeres Wurzelverzeichnis erstellt wird. Bei Bedarf werden externe Dateisysteme unter dem Modus âmount âbindâ an dieses Verzeichnis angehĂ€ngt (z.B. wird beim Start mit der Option âbwrap âro-bind /usr /usrâ das Verzeichnis /usr aus dem Hauptsystem im Nur-Lese-Modus weitergeleitet). Die Netzwerkfunktionen werden durch den Zugriff auf das Loopback-Interface mit Isolation des Netzwerkstapels ĂŒber die Flags CLONE_NEWNET und CLONE_NEWUTS eingeschrĂ€nkt.
Ein Hauptunterschied zu einem Ă€hnlichen Projekt , das ebenfalls das Startmodell mit Setuid verwendet, unterscheidet sich darin, dass in Bubblewrap die Schicht zur Erstellung von Containern nur das notwendige Minimum an FunktionalitĂ€t enthĂ€lt, wĂ€hrend alle erweiterten Funktionen, die fĂŒr den Betrieb grafischer Anwendungen, die Interaktion mit dem Desktop und die Filterung von Anfragen an Pulseaudio erforderlich sind, auf die Seite von Flatpak ausgelagert und bereits nach dem Abbau von Privilegien ausgefĂŒhrt werden. Firejail hingegen vereint alle begleitenden Funktionen in einer ausfĂŒhrbaren Datei, was die ĂberprĂŒfung und Aufrechterhaltung der Sicherheitsstandards kompliziert. .
Die neue Ausgabe zeichnet sich durch die UnterstĂŒtzung der Verbindung bestehender Benutzer-Namespaces und Prozess-Namespaces aus. Zur Verwaltung der Verbindung von Namespaces wurden die Flags "âuserns", "âuserns2" und "âpidns" hinzugefĂŒgt.
Diese Funktion funktioniert nicht im Setuid-Modus und erfordert die Anwendung eines separaten Modus, der ohne Erwerb von root-Rechten arbeiten kann, jedoch die Aktivierung
von Benutzer-Namespaces im System erforderlich macht (standardmĂ€Ăig in Debian und RHEL/CentOS deaktiviert) und schlieĂt nicht die Möglichkeit ein, FĂŒr den Obersatz der EinschrĂ€nkungen âuser namespacesâ. Zu den neuen Möglichkeiten von Bubblewrap 0.4 gehört auch die Möglichkeit, mit der C-Bibliothek musl anstelle von glibc zu kompilieren, sowie die UnterstĂŒtzung zur Speicherung von Informationen ĂŒber NamensrĂ€ume in eine Statistikdatei im JSON-Format.
Quelle: opennet.ru
