Veröffentlichung von Bubblewrap 0.4.0, einer Schicht zur Erstellung von isolierten Umgebungen

VerfĂŒgbar Neue Ausgabe des Tools Bubblewrap 0.4.0, 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 wird verbreitet 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 Firejail, 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. auf einem angemessenen Niveau..

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, der Ausnutzung potenziell verbleibend. FĂŒnf 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

60GB SSD 8Gb DDR4