Forum

Sandbox im Mac AppStore
November 04, 2011, 10:42:52
Wir hatten uns vor einiger Zeit hier schon einmal darüber unterhalten, dass es demnächst im Mac AppStore für alle Programme Pflicht wird, in einer Sandbox zu laufen.
Damals war es aber noch nicht klar, wie das genau umgesetzt werden soll und was das bedeutet.

Bei c|net gibt es einen Artikel darüber:
What Apple's sandboxing means for developers and users

Schon länger (10.5?) gibt es im System die Möglichkeit, ein Programm in eine Sandbox zu stecken. Ein solches Programm hat dann zunächst einmal keinen Zugriff aufs Netzwerk, Benutzerdokumente, Peripheriegeräte wie Drucker und Kameras, kann keine Dateien öffnen und speichern und hat keinen Zugriff auf den aktuellen Standort, Adressbuch, Kalender und ähnliche zentrale Dienste.
In einer Konfigurationsdatei kann dann angegeben werden, worauf das programm doch zugreifen soll. Dabei kann das auch sehr fein justiert werden, also z.B. Zugriff nur auf Dateien eines bestimmten Ordners oder Ähnliches.
Effektiv ist es so, dass ein Programm in einer Sandbox zunächst einmal nichts darf und dann über eine Whitelist Zugriff auf wirklich benötigte Sachen erlaubt wird.

Vorteil dieser Geschichte ist, dass ein Programm nur auf die tatsächlich benötigten Zugriffe beschränkt werden kann und dadurch Bugs oder auch durch Sicherheitslücken eingeschleppte Malware nicht auf absolut alles zugreifen können.

Diese Möglichkeit ist schon sehr lange im System enthalten, war aber anfangs nicht vernünftig dokumentiert. Daher setzen es meines Wissens nur wenige Softwaretitel von Apple aktuell ein (z.B. Vorschau und Safari).

Neu ist nun, dass die Benutzung der Sandbox für alle Programme im Mac AppStore ab dem März 2012 zwingend vorgeschrieben ist. Für die Entwickler bedeutet das "nur", dass sie die Sandbox einschalten und alle benötigten Zugriffe explizit eintragen müssen. Soweit sollte das für den Benutzer praktisch keine Auswirkungen haben.
Einziger evtl. Pferdefuss:
Damit jetzt nicht alle Programmierer hingehen, die Sandbox einschalten und dann alle Möglichkeiten wieder frei schalten, wird bei dem Einreichen in den AppStore geprüft, ob die Freigaben nicht zu weitreichend sind. Sind sie es nach Einschätzung von Apple, dann kann das Programm abgelehnt werden.
_______
Was ist die Mehrheit? Mehrheit ist der Unsinn, Verstand ist stets bei wen´gen nur gewesen." -- Schiller

mbs

Re: Sandbox im Mac AppStore
Antwort #1: November 04, 2011, 14:33:41
Danke für den Hinweis. Leider ist die Situation nicht so rosig, wie dargestellt. Einige Klarstellungen hierzu:

Man muss unterscheiden zwischen Sandboxing und App Sandboxing. Sandboxing an sich gibt es in der Tat schon lange in Mac OS X und hat sich bewährt.

App Sandboxing ist dagegen neu und funktioniert erst ab Mac OS X Lion oder höher. Der Unterschied ist, dass sich nicht ein laufendes Programm selber in eine Sandbox steckt, die dann maßgeschneidert ist, sondern dass in das Programm nun ein "Beipackzettel" eingebaut ist, in dem bestimmte (von Apple fest vorgegebene!) Programmeinschränkungen ein- oder ausgeschaltet werden. Beim Start des Programms steckt das Betriebssystem das Programm in eine passende App Sandbox, die anhand dieser Einschränkungsliste aufgebaut wird. Zusätzlich wird im Privatordner des aufrufenen Benutzers ein neuer Pseudo-Privatordner angelegt, in den dann alle Teile aus dem echten Privatordner hineinkopiert oder -gelinkt werden, die das Programm sehen darf.

Die von Apple vorgegebenen Definitionen von Programmeinschränkungen heißen "Entitlements".
Der simulierte Privatordner heißt "Sandbox Container".

Diese neue Art Sandbox führt also zu zwei wichtigen Änderungen:
1) In älteren Betriebssystemen wird die Liste der Entitlements ignoriert. Dort läuft eine App dann ohne Sandbox.
2) Die App Sandbox ist nicht mehr maßgeschneidert, sondern muss sich an den von Apple vordefinierten Entitlements orientieren.

Punkt (2) ist sehr, sehr kritisch, denn die in Lion vorhandene Auswahl von Entitlements ist zum einen sehr unausgereift, zum anderen ist an bestimmten Definitionen abzusehen, dass Apple offenbar plant, Apps (i.S.v. Mac App Store-Programmen) in Zukunft noch viel weiter einzuschränken, als dies heute schon der Fall ist.

Mit den jetzigen Entitlements ist es z.B. schon verboten, dass sich Apps gemeinsame Einstellungen (Benutzerpräferenzen) teilen. Wenn in zwei Apps eines Herstellers also eine Komfortfunktion vorhanden war, dass z.B. Farb- und Schrifteinstellungen der einen App automatisch in die andere übernommen werden konnten, so wird das ab März 2012 gesperrt sein. Jede App darf nur noch ihre eigenen Einstellungen sehen.
Weitere Einschränkungen betreffen z.B. das Senden jeglicher Apple Events. Das wird das Aus für Apps bedeuten, die beispielsweise iTunes oder QuickTime fernsteuern.

Auch das Scannen von Dateisystemen könnte in Zukunft für Apps verboten sein. Virenscanner oder Programme, die Speicherplatzverbraucher auf den Festplatten suchen, oder auch bereits Programme, die Spotlight verwenden, werden dann (nach heutigem Kenntnisstand) aus dem App Store fliegen.

Apple selbst hat es im Moment erst bei zwei Apps geschafft, sie in eine App Sandbox-Version umzuprogrammieren: TextEdit und Vorschau. Und es gibt Sonderfälle, wo beide Apps aufgrund der Sandbox fehlerhaft arbeiten.

Safari läuft nicht in einer App Sandbox. Stattdessen verwendet Safari einen Hilfsprozess mit dem Namen "WebProcess", der in einer normalen Sandbox läuft.

Die Fragen der Entwickler "wie kann ich in Zukunft eine App entwickeln, die die bisher übliche, Mac-artige Funktionalität XYZ erbringt, wenn es kein Entitlement gibt, das dies erlaubt?" wurde bisher von Apple nach dem Motto beantwortet "Keine Ahnung. Schreibt einen Bug Report, dann kümmern wir uns darum, vielleicht aber auch nicht".

Das hat natürlich extremen Unmut unter App-Entwicklern ausgelöst. Manche sollen sogar die Mac-App-Entwicklung aufgegeben haben.

Apple hatte vor, die App-Sandboxing-Pflicht zum 1. November 2011 einzuführen. Damit sind sie gescheitert. Die Sache wurde bis auf Weiteres auf den 1. März 2012 verschoben.
Re: Sandbox im Mac AppStore
Antwort #2: November 04, 2011, 14:55:47
OK, danke für die ausführliche Richtigstellung und Ergänzung.

Dann teile ich damit die Kritik oder Befürchtung bezgl. Punkt 2.
Ich hoffe, dass die Entitlements nur deshalb noch unausgereift und nicht ausreichend sind, weil sie quasi die erste Version sind und in Zukunft dann erweitert und verbessert werden. Denn wenn ich Deine Kritik richtig verstehe, richtet sich der Unmut weniger gegen die Sandbox selber, sondern dagegen, dass es für viele Anwendungen keine geeigneten Entitlements gibt.

Die ursprüngliche ältere Sandbox war ja auch nicht dokumentiert und die Definitionen sollen sich zwischenzeitlich geändert=entwickelt haben. Es kann ja sein, dass hier eine ähnliche Entwicklung einsetzt.  :-\
_______
Was ist die Mehrheit? Mehrheit ist der Unsinn, Verstand ist stets bei wen´gen nur gewesen." -- Schiller