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
