Version von Bubblewrap 0.8, einer Schicht zur Erstellung isolierter Umgebungen

Die Veröffentlichung des Tools zur Organisation von isolierten Umgebungen Bubblewrap 0.8 ist verfĂŒgbar, das in der Regel zur EinschrĂ€nkung einzelner Anwendungen unprivilegierter Benutzer verwendet wird. In der Praxis wird Bubblewrap vom Flatpak-Projekt als Schicht zur Isolation von Anwendungen, die aus Paketen gestartet werden, eingesetzt. Der Projektcode ist in C geschrieben und unter der Lizenz LGPLv2+ verbreitet.

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:

  • Es wurde die Option „—disable-userns“ hinzugefĂŒgt, die die Erstellung eines eigenen eingebetteten Benutzer-ID-Raums (user namespace) in der Sandbox-Umgebung deaktiviert.
  • Es wurde die Option „—assert-userns-disabled“ hinzugefĂŒgt, um zu ĂŒberprĂŒfen, dass bei Verwendung der Option „—disable-userns“ der bestehende Benutzer-ID-Raum verwendet wird.
  • Die Informationsgehalte der Fehlermeldungen hinsichtlich der Deaktivierung der Kernel-Einstellungen CONFIG_SECCOMP und CONFIG_SECCOMP_FILTER wurden erhöht.

Quelle: opennet.ru

60GB SSD 8Gb DDR4