Sandboxing
Lädt man eine neue App auf ein Smartphone mit Android oder iOS, ist diese App in ihren Berechtigungen sehr eingeschränkt. Um beispielsweise auf den Speicher des Geräts außerhalb der App zugreifen zu können, muss der Nutzer das der App erst explizit erlauben. Dazu öffnet sich dann ein Dialog, der eine Nachricht wie “[App-Name] versucht auf den Speicher zuzugreifen” enthält und zwei Buttons mit den Optionen “erlauben” oder “verbieten”. Solche Mechanismen werden als Portale (portals) bezeichnet, denn sie bilden ein Tor aus der Sandbox der App hinaus. Als Sandbox (deutsch: Sandkasten) bezeichnet man den fest abgegrenzten Bereich, der der App zugewiesen ist und den sie nicht ohne weiteres überschreiten darf. Ein Sicherheitsfeature, das zum Bespiel bösartigen Apps erschweren kann, auf die Daten in der daneben installierten Banking-App oder auf die privaten Fotos des Nutzers zuzugreifen.
Interessant ist dabei, dass ähnliche Mechanismen seitdem nicht auf breiter Front Einzug in unsere PC-Betriebssysteme gehalten haben. Microsoft Windows bringt solche Mechanismen in der Home-Edition beispielsweise nicht mit, auch wenn es mit Application Guard ein Enterprise-Feature gibt, das einen vergleichbaren Schutzmechanismus etabliert. Auch auf Linux-basierten Betriebssystemen waren solche Sandboxing-Mechanismen bis vor wenigen Jahren unüblich. Zwar gibt es dort schon länger Module wie SELinux oder AppArmor, welche Mandatory Access Control, also eine auf Regeln basierte Zugriffskontrolle auf Ressourcen, implementieren. SELinux ist auch, was in Android zum Sandboxing der Apps verwendet wird (Android selbst basiert auf Linux). Auch Firejail kann unter Linux verwendet werden, um Anwendungen “einzusperren”. Letzteres wird zum Beispiel in der Linux-Distribution Parrot Linux umfassend eingesetzt, um auf Wunsch alle installierten Anwendungen eingeschränkt zu starten.
Gerade diese letzten Punkte sind für mich persönlich interessant, denn im privaten Bereich nutze ich Linux-Betriebssysteme und schon von Berufs wegen verfüge ich über ein erhöhtes Sicherheitsbedürfnis, was IT angeht. Darum habe ich über Jahre Parrot Linux verwendet, um die Gewissheit zu haben, dass zum Beispiel mein Browser nicht nach Belieben auf das gesamte Dateisystem zugreifen kann. Das Sandboxing über Firejail war gnadenlos: Beim Herunterladen einer Datei im Browser konnte ich diese ausschließlich im “Downloads”-Ordner speichern. Versuche, im Download-Dialog auf andere Ordner zuzugreifen, wurden blockiert. Das machte die Angelegenheit in der Praxis sehr umständlich. Jedes Mal, wenn ich diese Datei etwa unter “Dokumente” einordnen wollte, musste ich diese erst im “Downloads”-Verzeichnis speichern und danach über den Dateimanager manuell in “Dokumente” verschieben. Diese Umständlichkeit brachte die Entwickler von Parrot Linux auch irgendwann dazu, das standardmäßige Starten aller Anwendungen in Sandboxes abzustellen und stattdessen optional ein Starten in der Sandbox auswählbar zu machen.
Das Aufkommen der neuen Paketformate “Snap” und “Flatpak” in der Linux-Landschaft lässt aktuell jedoch darauf hoffen, dass elegantere, nutzerfreundlichere Wege des Sandboxing möglich sind. Die Entwickler der zukunftsweisenden Linux-Distribution elementaryOS treiben aktuell eine Entwicklung voran, an deren Ende ein komplett auf Flatpak basierter App-Marktplatz stehen soll, dessen Anwendungen in Sandboxes mit sorgfältig ausgearbeiteten Portals laufen sollen. In Verbindung damit, dass kaum eine Linux-Distribution so großen Wert auf Nutzerfreundlichkeit legt wie elementary, scheint das sehr vielversprechend.
Ich bin kürzlich auf meinem Ubuntu-Rechner vom vorinstallierten Firefox-Browser auf die Flatpak-Variante des gleichen Browsers umgestiegen, um mir anzusehen, wie sich das Sandboxing dort äußern würde. Und wieder zeigte es sich beim Download-Prozess von Dateien. Der standardmäßige Ort zur Ablage von heruntergeladenen Dateien ist in diesem Fall noch nicht einmal das übliche “Downloads”-Verzeichnis, sondern ein Ordner innerhalb der Flatpak-Installation. Eine Auswahl anderer Ordner auch außerhalb des App-Verzeichnisses war glücklicherweise möglich - ein großer Zugewinn in der Benutzbarkeit gegenüber meinen Erfahrungen mit firejail unter Parrot Linux. Noch interessanter war das direkte Öffnen einer heruntergeladenen Datei. Der “Öffnen mit”-Dialog, den man bei Downloads kennt, enthält statt einer Liste von installierten Anwendungen lediglich den Eintrag “System Handler”. Wird dieser ausgewählt, öffnet sich ein weiteres Fenster, das nicht Teil des Browsers selbst ist. Stattdessen wird das Fenster als “Portal” benannt. Dieses enthält nun die Liste der Anwendungen zum Öffnen der Dateien. Wie schon erwähnt: Der Browser selbst ist in einer Sandbox installiert, er weiß also nicht, welche Anwendungen auf dem Rechner installiert sind. Stattdessen wird die Datei über ein Portal nach außen geschleust und dort dann in einem separaten Systemdialog geöffnet.
Sandboxing ist auch bei PC-Betriebssystemen absolut wünschenswert. Die neuen Linux-Paketformate machen vor, dass das auch nutzerfreundlich umsetzbar ist. Es bleibt zu hoffen, dass sich dieser Trend auch bei Windows und anderen Consumer-Betriebssystemen fortsetzt.