Veröffentlichung von Bubblewrap 0.8, einer Schicht zur Schaffung isolierter Umgebungen.

Die neue Version des Werkzeugs zur Organisation isolierter Umgebungen, Bubblewrap 0.8, ist verfügbar. Dieses Tool wird in der Regel verwendet, um bestimmte Anwendungen von nicht privilegierten Benutzern einzuschränken. In der Praxis kommt Bubblewrap im Projekt Flatpak als Schicht zur Isolierung von Anwendungen, die aus Paketen ausgeführt werden, zum Einsatz. Der Code des Projekts ist in C geschrieben und wird unter der LGPLv2+-Lizenz veröffentlicht.

Zur Isolierung werden die traditionellen Technologien der Container-Virtualisierung für Linux verwendet, die auf cgroups, Namespaces, Seccomp und SELinux basieren. Um privilegierte Operationen zur Konfiguration des Containers durchzuführen, wird Bubblewrap mit Root-Rechten (eine ausführbare Datei mit SUID-Flag) gestartet, gefolgt von einem Privilegienabbau nach Abschluss der Containerinitialisierung.

Die Aktivierung von Benutzer-Namensräumen (user namespaces), die es ermöglichen, in Containern einen separaten Satz von Identifikatoren zu verwenden, ist nicht erforderlich, da sie in vielen Distributionen standardmäßig nicht aktiviert ist. Bubblewrap wird als eingeschränkte SUID-Implementierung eines Teilbereichs der Funktionen von Benutzer-Namensräumen positioniert – zur Ausnahme aller Benutzer- und Prozessidentifikatoren aus der Umgebung, außer dem aktuellen, werden die Modi CLONE_NEWUSER und CLONE_NEWPID verwendet. Zum zusätzlichen Schutz werden von Bubblewrap verwaltete Programme im PR_SET_NO_NEW_PRIVS-Modus ausgeführt, der das Erlangen neuer Berechtigungen, wie z. B. bei vorhandenem Setuid-Flag, verbietet.

Die Isolierung auf Dateisystemebene erfolgt durch die standardmäßige Schaffung eines neuen Mount-Namensraums, in dem mit tmpfs ein leeres Root-Dateisystem erstellt wird. Notwendige Partitionen eines externen Dateisystems werden bei Bedarf im Modus „mount —bind“ an dieses Dateisystem angehängt (zum Beispiel wird bei der Ausführung mit der Option „bwrap —ro-bind /usr /usr“ das Verzeichnis /usr aus dem Hauptsystem im Nur-Lese-Modus bereitgestellt). Die Netzwerkfunktionen beschränken sich auf den Zugang zum Loopback-Interface, während der Netzwerkstack durch die Flags CLONE_NEWNET und CLONE_NEWUTS isoliert wird.

Der entscheidende Unterschied zu einem ähnlichen Projekt wie Firejail, das ebenfalls ein setuid-Modell zur Ausführung nutzt, besteht darin, dass Bubblewrap nur das notwendige Minimum an Funktionen für die Erstellung von Containern bereitstellt. 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, sind auf die Seite von Flatpak ausgelagert und erfolgen bereits nach der Privilegienenthebung. Firejail hingegen vereint alle zugehörigen Funktionen in einer einzigen ausführbaren Datei, was die Überprüfung und Aufrechterhaltung der Sicherheit erschwert.

In der neuen Version:

  • Eine neue Option „—disable-userns“ wurde hinzugefügt, um die Erstellung eines eigenen benutzerdefinierten Identitätsraums (user namespace) in der Sandbox-Umgebung zu deaktivieren.
  • Die Option „—assert-userns-disabled“ wurde hinzugefügt, um sicherzustellen, dass beim Einsatz der Option „—disable-userns“ ein vorhandener Identitätsraum verwendet wird.
  • Die Aussagekraft der Fehlermeldungen, die mit der Deaktivierung der Einstellungen CONFIG_SECCOMP und CONFIG_SECCOMP_FILTER im Kernel zusammenhängen, wurde verbessert.

Quelle: opennet.ru

Erwerben Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster