Die Version 0.5.0 des Tools zur Organisation isolierter Umgebungen Bubblewrap ist verfĂŒgbar. Es wird in der Regel verwendet, um die Workflows von nicht privilegierten Benutzern zu begrenzen. In der Praxis wird Bubblewrap vom Flatpak-Projekt als Schicht zur Isolierung von Anwendungen, die aus Paketen gestartet werden, eingesetzt. 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.
Das neue Release bietet Optionen wie ââchmodâ zur Ănderung der Zugriffsrechte, ââclearenvâ zum Löschen von Umgebungsvariablen (auĂer PWD) und ââpermsâ zur Festlegung der Zugriffsrechte, die bei den Operationen ââbind-dataâ, ââdirâ, ââfileâ, ââro-bind-dataâ und ââtmpfsâ angewendet werden. Die Diagnose von Problemen, die beim Binden fehlschlagen, wurde verbessert. FĂŒr zsh wurde die UnterstĂŒtzung fĂŒr die automatische VervollstĂ€ndigung von Befehlen durch DrĂŒcken der Tabulatortaste hinzugefĂŒgt.
Quelle: opennet.ru
