Bubblewrap, ein Tool zum Erstellen von Anwendungen in isolierten Umgebungen

Bubblewrap ist ein Werkzeug was funktioniert Sandbox-Arbeit unter Linux zu organisieren und Renn auf Anwendungsebene nicht privilegierter Benutzer. In der Praxis wird Bubblewrap vom Flatpak-Projekt als Zwischenschicht verwendet, um Anwendungen zu isolieren, die aus Softwarepaketen gestartet wurden.

Zur Isolation verwendet Linux Virtualisierungstechnologien von traditionellen Containern basierend auf der Verwendung von cgroups, Namespaces, Seccomp und SELinux. Um privilegierte Vorgänge zum Konfigurieren eines Containers auszuführen, wird Bubblewrap mit Root-Berechtigungen (einer ausführbaren Datei mit einem suid-Flag) gestartet, gefolgt von einem Zurücksetzen der Berechtigungen nach der Initialisierung des Containers.

Es ist nicht erforderlich, Benutzernamensräume auf dem System zu aktivieren, sodass Sie Ihre eigenen IDs in Containern verwenden können, da dies standardmäßig bei vielen Distributionen nicht funktioniert.

Über Bubblewrap

Bubblewrap ist als begrenzte Suida-Implementierung positioniert Verwenden Sie aus der Teilmenge der Benutzer-Namespaces-Funktionen die Modi, um alle Benutzer- und Prozess-IDs mit Ausnahme der aktuellen aus der Umgebung auszuschließen CLONE_NEWUSER und CLONE_NEWPID.

Für zusätzlichen Schutz Programme, die in Bubblewrap ausgeführt werden, werden im Modus gestartet PR_SET_NO_NEW_PRIVS, das verbietet neue Privilegien, Zum Beispiel mit dem Flag setuid.

Die Isolierung auf Dateisystemebene erfolgt durch Erstellen eines neuen Mount-Namespace, in dem mit tmpfs eine leere Root-Partition erstellt wird.

Bei Bedarf werden die externen FS-Abschnitte an diesen Abschnitt im «montieren –binden»(Zum Beispiel beginnend mit der Option«bwrap –ro-bind / usr / usr', Der Abschnitt / usr wird im schreibgeschützten Modus vom Host weitergeleitet.

Die Netzwerkfunktionen sind auf den Zugriff auf die Loopback-Schnittstelle beschränkt invertiert mit Netzwerkstapelisolation über Indikatoren CLONE_NEWNET und CLONE_NEWUTS.

Der Hauptunterschied zum ähnlichen Firejail-Projekt: das auch den setuid launcher verwendet, ist das in Bubblewrap, Die Containerebene enthält nur die minimal erforderlichen Funktionen Alle erweiterten Funktionen, die zum Starten grafischer Anwendungen, zur Interaktion mit dem Desktop und zum Filtern von Aufrufen an Pulseaudio erforderlich sind, werden auf die Seite von Flatpak gestellt und ausgeführt, nachdem die Berechtigungen zurückgesetzt wurden.

Firejail hingegen kombiniert alle zugehörigen Funktionen in einer ausführbaren DateiDies erschwert Ihre Prüfung und hält die Sicherheit auf dem richtigen Niveau.

Bubblewrap funktioniert grundsätzlich von Erstellen eines leeren Mount-Namespace in einem temporären Dateisystem Diese wird nach Abschluss der Sandbox-Verarbeitung zerstört.

Durch die Verwendung von Switches kann der Benutzer die gewünschte Dateisystemumgebung innerhalb des Mount-Namespace erstellen, indem er über die Verknüpfung der gewünschten Verzeichnisse vom Host-System mountet.

Luftpolsterfolie 0.4.0

Bubblewrap ist derzeit in der Version 0.4.0 die vor kurzem veröffentlicht wurde. Der Projektcode ist in C geschrieben und wird unter der LGPLv2 + -Lizenz verteilt.

Die neue Version zeichnet sich durch die Implementierung von Unterstützung für das Verbinden der Namespaces und Prozesse aus vorhandene Benutzer (PID-Namespaces).

Die Flags "–userns", "–userns2" und "–pidns" wurden hinzugefügt, um die Verbindung von Namespaces zu steuern.

Diese Funktion funktioniert nicht im Setuid-Modus und erfordert einen separaten Modus, der ohne Root-Rechte funktionieren kann. Sie erfordert jedoch, dass Benutzernamensräume auf dem System aktiviert sind (standardmäßig unter Debian und RHEL / CentOS deaktiviert) und schließt die Möglichkeit nicht aus potenziell verbleibende Sicherheitslücken bis an den Rand der Einschränkungen für "Benutzernamensräume" auszunutzen.

Von den neuen Funktionen von Bubblewrap 0.4, Die Möglichkeit, mit der musl C-Bibliothek anstelle von glibc zu bauen, wird ebenfalls beobachtet. und Unterstützung für das Speichern von Namespace-Informationen in einer Statistikdatei im JSON-Format.

Der Bubblewrap-Code sowie die Dokumentation dazu können auf Github eingesehen werden. Der Link ist dies.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.