Zur Zeit kursieren wilde Nachrichten der Art "Sicherheitslücke in Apples Sandbox-System für OS X". Ich kläre auf, was da dran ist.
Die App Sandbox für den Mac verwendet überhaupt nicht die Profile, die Core Security Technologies bemängelt. Es gibt auch keine Sicherheitslücke in der App Sandbox. Das einzige, was hier vorgeführt wurde, ist, daß manche Beispiel-Sandbox-Profile, die noch aus der Zeit vor der mit 10.7 eingeführten App Sandbox stammen, AppleScript benutzen können. Die App Sandbox verwendet zwar das Sandboxing, das mit 10.5 eingeführt wurde, sie verwendet jedoch nicht die diskutierten Profile.
Ihr Beispiel scheitert wenn ich es wie beschrieben nutze mit 14.11.11 22:15:29,314 sandboxd: ([8955]) Python(8955) deny network-outbound /private/var/run/mDNSResponder auf meinem 10.7.2. Allerdings funktioniert es, wenn ich statt "no-network" ein "no-internet" verwende. Dann kann man per AppleScript dem Terminal sagen, es soll mit Python eine Webseite öffnen.
Es ist also so, daß ein altes vordefiniertes Sandbox-Profil, das dem Prozeß Internet-Zugriff verbieten soll, das auch tut, aber AppleScript zuläßt und daher auf dem Umweg über AppleScript ein anderes Programm zum Internetzugriff aufrufen kann.
Entscheidend ist jedoch, daß diese vordefinierten uralten Sandbox-Profile überhaupt nicht verwendet werden von der App Sandbox, die die Entwickler mit Xcode komfortabel nutzen können. Denn ich bekomme ein "14.11.11 22:23:41,792 coreservicesd: pid=9034 not allowed to send AppleEvents to com.apple.terminal", wenn ich es in einer App verwende, die sandboxed ist. Das sieht dann beispielsweise so aus im Code:
NSAppleScript *script;
NSDictionary *errorDict;
NSAppleEventDescriptor *returnValue;
NSString *scriptText = @"tell application \"Terminal\" to do script \"python /Users/macmark/bin/sandbox.py www.heise.de\"";
script = [[NSAppleScript alloc] initWithSource:scriptText];
returnValue = [script executeAndReturnError:&errorDict];
Wenn ich die Sandbox für diese App jedoch deaktiviere in Xcode, dann macht sie mir das Terminal auf und lädt die Webseite von heise herunter.
Also: Es ist kein Fehler in der App Sandbox. Es ist auch kein Fehler in den Sandbox-Profilen, die die Entwickler mit Xcode für ihre Apps verwenden. Es ist lediglich eine Ungenauigkeit in alten vordefinierten Sandbox-Profilen zu finden, die nicht von Mac-Entwicklern verwendet werden. Die Schlagzeilen behaupten jedoch, es gäbe ein Problem mit der Lion App Sandbox. Das ist falsch. Das bemängelte Verhalten hat mit der App Sandbox von Lion nichts zu tun. Genauer gesagt ist die bemängelte Stelle praktisch irrelevant, weil sie nicht für Apps verwendet wird. Es handelt sich hier um uninformierte Gedankenlosigkeit. Ich werfe Core Security Technologies vor, daß sie das eigentlich wissen müßten. Da die Presse jedoch den Unterschied erst recht nicht begreift, bekommen sie ihre Publicity – mit irrelevantem Unfug.