Die Version des Tools zur Organisation isolierter Umgebungen, Bubblewrap 0.6, ist verfĂŒgbar und wird in der Regel zur EinschrĂ€nkung einzelner Anwendungen von nicht privilegierten Benutzern verwendet. In der Praxis wird Bubblewrap von dem Flatpak-Projekt als Schicht zur Isolierung von Anwendungen, die aus Paketen gestartet werden, eingesetzt. Der Projektcode ist in C geschrieben und unter der LGPLv2+-Lizenz erhĂ€ltlich.
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 von Benutzer-NamensrĂ€umen (user namespaces) im System, die es ermöglichen, einen eigenen separaten Satz von Identifikatoren in Containern zu verwenden, ist fĂŒr den Betrieb nicht erforderlich, da dies standardmĂ€Ăig in vielen Distributionen nicht funktioniert (Bubblewrap wird als eingeschrĂ€nkte suid-Implementierung einer Teilmenge der Benutzer-Namensraum-Funktionen positioniert â um alle Identifikatoren von Benutzern und Prozessen aus der Umgebung auszuschlieĂen, abgesehen vom aktuellen, werden die Modi CLONE_NEWUSER und CLONE_NEWPID verwendet). Zum zusĂ€tzlichen Schutz werden die von Bubblewrap gesteuerten Programme im PR_SET_NO_NEW_PRIVS-Modus gestartet, der den Erhalt neuer Privilegien, z.B. bei Vorhandensein des setuid-Flags, verbietet.
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 wesentliches Unterscheidungsmerkmal zu dem Ă€hnlichen Projekt Firejail, das ebenfalls ein Setuid-Startmodell verwendet, besteht darin, dass Bubblewrap in seiner Containererstellungsschicht nur das notwendige Minimum an Funktionen einbezieht, wĂ€hrend alle erweiterten Funktionen, die fĂŒr die AusfĂŒhrung grafischer Anwendungen, die Interaktion mit dem Desktop und die Filterung von Anfragen an Pulseaudio erforderlich sind, auf die Seite von Flatpak verschoben werden und bereits nach der PrivilegienrĂŒcksetzung ausgefĂŒhrt werden. Firejail hingegen vereint alle zugehörigen Funktionen in einer ausfĂŒhrbaren Datei, was die SicherheitsĂŒberprĂŒfung und den Erhalt eines angemessenen Sicherheitsniveaus erschwert.
In der neuen Version:
- Die UnterstĂŒtzung des Build-Systems Meson wurde hinzugefĂŒgt. Die UnterstĂŒtzung fĂŒr den Build mit Autotools bleibt vorerst erhalten, wird aber in einer der nĂ€chsten Versionen entfernt.
- Die Option ââadd-seccompâ wurde implementiert, um mehr als ein Seccomp-Programm hinzuzufĂŒgen. Eine Warnung wurde hinzugefĂŒgt, dass bei wiederholter Angabe der Option ââseccompâ nur der letzte Parameter angewendet wird.
- Der Master-Zweig im Git-Repository wurde in main umbenannt.
- Teilweise UnterstĂŒtzung der REUSE-Spezifikation wurde hinzugefĂŒgt, die den Prozess der Angabe von Lizenz- und Urheberrechtsinformationen vereinheitlicht. In viele Quellcode-Dateien wurden SPDX-License-Identifier-Header eingefĂŒgt. Die Einhaltung der REUSE-Empfehlungen erleichtert die automatische Bestimmung, welche Lizenz auf welche Teile des Anwendungscodes angewendet wird.
- Eine ĂberprĂŒfung des Wertes des ZĂ€hlers der Kommandozeilenargumente (argc) wurde hinzugefĂŒgt, und ein sofortiger Ausstieg wurde implementiert, falls der ZĂ€hler null betrĂ€gt. Diese Ănderung hilft, Sicherheitsprobleme zu blockieren, die durch unsachgemĂ€Ăe Verarbeitung ĂŒbergebener Kommandozeilenargumente verursacht werden, wie CVE-2021-4034 in Polkit.
Quelle: opennet.ru
