Die Veröffentlichung des Toolkit zur Organisation der Arbeit in isolierten Umgebungen mit Bubblewrap 0.6 ist verfĂŒgbar. Dieses wird in der Regel verwendet, um einzelne Anwendungen von nicht privilegierten Benutzern einzuschrĂ€nken. In der Praxis wird Bubblewrap im Projekt Flatpak als Schicht zur Isolierung von aus Paket-Anwendungen gestarteten Programmen eingesetzt. Der Code des Projekts ist in C geschrieben und wird unter der Lizenz LGPLv2+ vertrieben.
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:
- UnterstĂŒtzung des Build-Systems Meson hinzugefĂŒgt. Die UnterstĂŒtzung des Builds mit Autotools bleibt vorerst erhalten, wird jedoch in einer der nĂ€chsten Versionen entfernt.
- Die Option ââadd-seccompâ wurde implementiert, um mehr als ein seccomp-Programm hinzuzufĂŒgen. Eine Warnung wurde hinzugefĂŒgt, dass bei mehrfacher Angabe der Option ââseccompâ nur der letzte Parameter angewendet wird.
- Der Master-Zweig im Git-Repository wurde in Main umbenannt.
- Teilweise UnterstĂŒtzung der REUSE-Spezifikation hinzugefĂŒgt, die den Prozess der Angabe von Lizenz- und Urheberrechtsinformationen vereinheitlicht. In viele Code-Dateien wurden SPDX-License-Identifier-Header eingefĂŒgt. Die Einhaltung der REUSE-Empfehlungen erleichtert die automatische Bestimmung, welche Lizenz fĂŒr welche Teile des Anwendungscodes gilt.
- Die ĂberprĂŒfung des Werts des Arguments des KommandozeilenzĂ€hlers (argc) wurde hinzugefĂŒgt und ein Notausgang implementiert, wenn der ZĂ€hler null betrĂ€gt. Diese Ănderung hilft, Sicherheitsprobleme zu vermeiden, die durch eine fehlerhafte Verarbeitung der ĂŒbergebenen Kommandozeilenargumente entstehen, wie z. B. CVE-2021-4034 in Polkit.
Quelle: opennet.ru
