Was ist iOS App Sandboxing?

iOS App Sandboxing ist eine zentrale Sicherheitsarchitektur, die jede Anwendung auf ihren eigenen dedizierten Container beschränkt und verhindert, dass sie ohne ausdrückliche Zustimmung des Benutzers auf Systemdateien, andere App-Daten oder Hardwareressourcen zugreifen kann. Wenn eine App installiert ist, erstellt das Betriebssystem ein eindeutiges Sandbox-Verzeichnis für diese App und alle Codes, Daten, Präferenzen und Caches befinden sich in diesem Verzeichnis. Die App kann ihrem Container nicht entkommen, um Dateien zu lesen oder zu schreiben, die zu einer anderen App oder zum System selbst gehören. Dieses Design stellt sicher, dass der Schaden auch dann, wenn eine App kompromittiert ist, an dieser einzelnen Sandbox enthalten ist.

Das Sandbox-Modell wird auf Kernelebene durchgesetzt, was bedeutet, dass es für alle Apps gilt – einschließlich der über den App Store verteilten Apps, Unternehmensbereitstellungen und sogar weitgehend System-Apps. Das Betriebssystem vermittelt jeden Dateisystembetrieb, jede Netzwerkverbindung und jeden Hardwareaufruf, was nur die Aktionen erlaubt, die unter die gewährten Berechtigungen der App fallen. Dies macht iOS zu einem der sichersten verfügbaren mobilen Betriebssysteme, da es die Isolation über andere Sicherheitsvorkehrungen wie Codesignierung und Datenverschlüsselung hinausführt.

Die technische Architektur hinter Sandboxing

Auf Kernelebene verwendet iOS obligatorische Zugriffskontrollen (MAC), die durch das Seatbelt-Sandbox-Framework erzwungen werden. Seatbelt definiert einen Satz von Regeln für jeden App-Prozess, in dem festgelegt wird, auf welche Dateien, Verzeichnisse, Netzwerkendpunkte und Systemdienste der Prozess zugreifen kann. Diese Regeln werden in ein Sandbox-Profil zusammengestellt, das beim Start der App geladen wird. Das Profil ist für jede App einzigartig und kann nicht von der App selbst überschrieben werden.

Jede App erhält ein eigenes Containerverzeichnis, das sich normalerweise unter befindet. Innerhalb dieses Containers teilt das System den Speicher weiter in Unterverzeichnisse wie , und auf. Die App kann frei in ihrem eigenen Container lesen und schreiben, aber jeder Versuch, auf Pfade außerhalb dieses Containers zuzugreifen, löst eine Denial-Ausgabe des Kernels aus. Dies schließt Versuche ein, andere App-Container, System-Frameworks oder Hardware-Geräte zu lesen, die nicht explizit gewährt wurden.

Sandbox-Profile schränken auch die Interprozesskommunikation (IPC) ein. Apps können keine beliebigen Systemdienste aufrufen oder Hintergrundprozesse ohne spezifische Berechtigungen starten. Das bedeutet, dass selbst wenn es einer App gelingt, beliebigen Code auszuführen, sie beispielsweise keinen Daemon starten kann, der persistent im Hintergrund läuft, oder Nachrichten an den Prozess einer anderen App senden kann. Die Kombination aus Dateisystemisolierung und IPC-Einschränkungen bildet das Rückgrat der iOS-Sicherheit.

Kernsicherheitsmaßnahmen in iOS

Sandboxing funktioniert nicht isoliert, sondern ist Teil eines mehrschichtigen Sicherheitsmodells, das mehrere ergänzende Maßnahmen zum Schutz von Benutzerdaten und Systemintegrität auf allen Ebenen umfasst.

App-Berechtigungen und Benutzerkontrolle

iOS verlangt von Apps, dass sie die Erlaubnis anfordern, bevor sie auf sensible Daten oder Hardware zugreifen. Dazu gehören Kamera, Mikrofon, Ortungsdienste, Fotobibliothek, Kontakte, Kalender, Bluetooth und Bewegungssensoren. Berechtigungen werden über eine Laufzeitaufforderung erteilt, die beim ersten Versuch der App, auf die Ressource zuzugreifen, erscheint. Benutzer können Berechtigungen später jederzeit über die Einstellungs-App überprüfen und widerrufen.

Apple hat die Berechtigungskontrollen mit jeder iOS-Version stetig verschärft. Zum Beispiel hat iOS 14 die ungefähre Standortfreigabe und die Möglichkeit hinzugefügt, Fotozugriff per Bild zu gewähren. iOS 15 führte den App Privacy Report ein, der protokolliert, auf welche Ressourcen jede App zugegriffen hat. iOS 16 und 17 verfeinerte die Zugriffsbenachrichtigungen für Zwischenablagen, Eingabeaufforderungen für Pasteboard-Berechtigungen und den Sperrmodus für Benutzer mit hohem Risiko. Diese Mechanismen stellen sicher, dass Benutzer auch bei gutartiger App die granulare Kontrolle darüber behalten, welche Daten geteilt werden.

Code Signing und App Validation

Jede App, die unter iOS läuft, muss von Apple mit einem Zertifikat signiert werden, das dem Entwickler ausgestellt wurde. Dieser Prozess, bekannt als Codesignierung, garantiert, dass der Code seit seiner Signatur nicht manipuliert wurde. Wenn das System eine App lädt, überprüft es die Signatur mit der Apple Public Key Infrastruktur. Wenn die Signatur ungültig ist, fehlt oder abgelaufen ist, wird die App nicht gestartet.

Codesignatur geht über die App-Installation hinaus. Das System überprüft auch Codesignaturen zur Laufzeit für dynamisch geladene Bibliotheken und Frameworks. Dies verhindert, dass eine App nach dem Start nicht signierten Code lädt, was eine gängige Technik ist, die von Malware verwendet wird, um anfängliche Prüfungen zu umgehen. Apples Notardienst für macOS dient einem ähnlichen Zweck, aber unter iOS ist die Durchsetzung für alle Apps obligatorisch, nicht nur für diejenigen, die über den App Store verteilt werden.

Datenverschlüsselung im Ruhezustand und im Transit

iOS-Geräte verwenden Hardware-gestützte Verschlüsselung, um die auf Flash-Speicher gespeicherten Daten zu schützen. Jedes Gerät verfügt über eine dedizierte AES-Engine, die in das System-on-Chip integriert ist und Daten mit einem gerätespezifischen Schlüssel verschlüsselt und entschlüsselt. Das System wendet verschiedene Verschlüsselungsklassen auf verschiedene Datentypen an:

  • Klasse A (Vollständiger Schutz): Daten werden mit einem Schlüssel verschlüsselt, der aus dem Benutzerpasscode abgeleitet wird und nur zugänglich ist, wenn das Gerät entsperrt ist.
  • Klasse B (geschützt bis zum ersten Entsperren): Daten werden nach dem ersten Entsperren zugänglich und bleiben zugänglich, bis das Gerät neu gestartet wird.
  • Klasse C (Geschützt, wenn nicht geöffnet): Daten sind zugänglich, solange die Datei geöffnet ist, auch wenn das Gerät gesperrt ist.
  • Klasse D (Kein Schutz): Daten sind verschlüsselt, aber der Schlüssel ist immer nach dem Booten verfügbar.

Zusätzlich zur Verschlüsselung im Ruhezustand erzwingt iOS Transport Layer Security (TLS) für alle Netzwerkverbindungen, die von Systemdiensten und vielen Apps hergestellt werden. Apple verlangt, dass Apps HTTPS standardmäßig verwenden und hat im Laufe der Zeit Ausnahmen von App Transport Security (ATS) veraltet. Dies stellt sicher, dass zwischen dem Gerät und den Servern übertragene Daten verschlüsselt übertragen werden, was es Angreifern erschwert, den Datenverkehr abzufangen oder zu ändern.

Secure Boot Chain und Hardware Roots of Trust

Wenn ein iOS-Gerät eingeschaltet wird, führt es Code von einem schreibgeschützten Boot-ROM aus, das während der Herstellung in den Chip eingebrannt wird. Dieses Boot-ROM ist unveränderlich und ist die Hardware-Wurzel des Vertrauens. Es überprüft die Signatur des nächsten Bootloaders (iBoot) mithilfe des öffentlichen Schlüssels von Apple. iBoot überprüft dann den Kernel und der Kernel überprüft das Betriebssystem und alle Systemerweiterungen.

Wenn eine Komponente die Signatur-Verifizierung nicht besteht, stoppt der Boot-Prozess und das Gerät geht in den Wiederherstellungsmodus. Diese Vertrauenskette stellt sicher, dass nur von Apple autorisierte Software auf dem Gerät laufen kann, von der ersten Anweisung an. Es verhindert, dass Malware über Neustarts hinweg bestehen bleibt und macht Jailbreaking mit jeder Hardware-Generation immer schwieriger.

Wie Sandboxen häufige Angriffsvektoren verhindert

Das Verständnis der praktischen Auswirkungen von Sandboxing hilft zu klären, warum iOS als sichere Plattform gilt. Sandboxing blockiert aktiv mehrere gängige Angriffstechniken:

  • Datenexfiltration zwischen Apps: Ohne Sandboxing könnte eine kompromittierte App die Dateien jeder anderen App auf dem Gerät lesen. Sandboxing verhindert dies, indem es sicherstellt, dass jede App über ein eigenes isoliertes Dateisystem verfügt.
  • Systemdateiänderung: Böswilliger Code kann Systembinärdateien, Bibliotheken oder Konfigurationsdateien nicht überschreiben, da sich diese Dateien außerhalb des App-Containers befinden.
  • Keychain-Zugriff: iOS bietet einen sicheren Schlüsselbund zum Speichern von sensiblen Token und Passwörtern. Jede App kann nur auf ihre eigenen Schlüsselbund-Elemente zugreifen, und das System erzwingt dies auf Kernelebene.
  • Hintergrund-Prozessmissbrauch: Apps können keine Hintergrund-Daemons oder Agenten ohne explizite Berechtigungen hervorbringen, die selten gewährt werden.
  • Hardware-Ressourcen-Hijacking: Selbst wenn eine App durch Berechtigungsaufforderungen Zugriff auf die Kamera oder das Mikrofon erhält, verhindert Sandboxing, dass sie ohne separate Berechtigungen auf andere Hardware wie den NFC-Controller oder die Secure Enclave zugreifen kann.

Diese Schutzmaßnahmen bedeuten, dass selbst Zero-Click-Exploits, die keine Benutzerinteraktion erfordern, stark eingeschränkt sind.Ein Angreifer, der eine Sicherheitslücke in einer Sandbox-App erfolgreich ausnutzt, steht immer noch vor der Herausforderung, aus der Sandbox zu entkommen, um eine sinnvolle Persistenz oder Datenzugriff zu erreichen.

Implikationen für Entwickler

Für iOS-Entwickler legt Sandboxing Einschränkungen fest, die die Art und Weise, wie Apps entworfen und getestet werden, bestimmen. Jede App muss die erforderlichen Berechtigungen und Fähigkeiten angeben, und Apple überprüft diese Erklärungen während des App Store-Genehmigungsprozesses. Entwickler dürfen nur die Mindestberechtigungen anfordern, die für die Funktion ihrer App erforderlich sind, eine Praxis, die als das Prinzip der geringsten Privilegien bekannt ist.

Zu den wichtigsten Implikationen für die Entwicklung gehören:

  • File-Systemzugriff: Entwickler können nicht davon ausgehen, dass sie in beliebige Verzeichnisse schreiben können. Alle benutzergenerierten Inhalte sollten im -Verzeichnis der App gespeichert werden, und temporäre Dateien sollten in gehen.
  • Inter-App-Kommunikation: Die gemeinsame Nutzung von Daten zwischen Apps erfordert explizite Mechanismen wie UIActivityViewController, UIPasteboard oder freigegebene Keychain-Zugriffsgruppen, die alle Konfiguration und Benutzerinteraktion erfordern.
  • Hintergrundausführung: Apps können nur für bestimmte Anwendungsfälle wie Audiowiedergabe, Standortaktualisierungen oder Hintergrundabruf im Hintergrund ausgeführt werden. Der Versuch, willkürliche Hintergrundarbeiten durchzuführen, führt dazu, dass die App gesperrt wird.
  • Rechtsverwaltung: Funktionen wie Push-Benachrichtigungen, Apple Pay und iCloud-Speicher erfordern Berechtigungen für Bereitstellungsprofile. Entwickler müssen diese im Apple Developer-Portal konfigurieren und sicherstellen, dass sie mit dem Sandbox-Profil übereinstimmen.
  • Testüberlegungen: Entwickler müssen ihre Apps auf physischen Geräten testen, um die Einhaltung der Sandbox-Vorschriften zu überprüfen, da der Simulator entspannte Sandbox-Regeln hat, die das tatsächliche Verhalten der Geräte nicht widerspiegeln.

Apple bietet umfangreiche Dokumentationen und Tools, die Entwicklern helfen, innerhalb von Sandbox-Einschränkungen zu arbeiten. Xcode enthält Sandbox-Debugging-Funktionen, die Zugriffsverletzungen protokollieren, und die App Sandbox Anleitung umreißt Best Practices für die Gestaltung sicherer, sandbox-kompatibler Apps.

Auswirkungen für die Nutzer

Für alltägliche Benutzer funktioniert Sandboxen im Hintergrund, aber wenn man es versteht, kann es helfen, fundierte Entscheidungen über App-Berechtigungen und das Verhalten von Geräten zu treffen. Wenn eine App Zugriff auf die Kamera, das Mikrofon oder den Standort anfordert, sollten Benutzer überlegen, ob die Anforderung für die Funktionalität der App sinnvoll ist. Eine Taschenlampen-App, die beispielsweise Zugriff auf das Mikrofon anfordert, verstößt wahrscheinlich gegen Datenschutzerwartungen.

Benutzer sollten sich auch bewusst sein, dass Jailbreak Sandbox-Schutzmaßnahmen durch Deaktivierung der Durchsetzung auf Kernelebene entfernt. Ein Jailbreak-Gerät isoliert Apps nicht mehr voneinander oder vom System, wodurch es anfällig für Malware wird, die Daten stehlen, Spyware installieren oder anhaltende Systeminstabilität verursachen könnte. Apple entmutigt Jailbreak stark und das Unternehmen hat es mit jeder iOS-Version immer schwieriger gemacht, indem es die Secure Boot Chain gehärtet hat und Kernel-Integritätsschutz hinzugefügt hat.

Best Practices für Benutzer sind:

  • Überprüfen Sie die App-Berechtigungen regelmäßig in Einstellungen > Privatsphäre & amp; Sicherheit.
  • Erteilen Sie nur Berechtigungen, die für die primäre Funktion der App erforderlich sind.
  • Halten Sie iOS aktualisiert, um die neuesten Sicherheitspatches und Sandbox-Verbesserungen zu erhalten.
  • Vermeiden Sie das Seitenladen von Apps aus nicht vertrauenswürdigen Quellen, da diese die Codesignierung und Sicherheitsüberprüfung von Apple umgehen können.
  • Aktivieren Sie Face ID oder Touch ID, um die Verschlüsselungsschlüssel zu schützen, die Sandbox-Daten schützen.

Die Evolution der iOS-Sicherheit

Apple hat Sandboxing und Sicherheitsmaßnahmen kontinuierlich verbessert, seit iOS das Modell mit iPhone OS 2.0 eingeführt hat. Frühe Sandbox-Profile waren relativ einfach und erlaubten mehr Flexibilität, aber als iOS reifer wurde, wurden die Profile restriktiver und granularer. Die Einführung des Rechts Systems gab Entwicklern die Möglichkeit, bestimmte Funktionen anzufordern, während die Standard-Sandbox so eng wie möglich gehalten wurde.

Wichtige Meilensteine sind:

  • iOS 6: Per-App VPN eingeführt und Datenschutzklassen verbessert.
  • iOS 9: Ermöglichte standardmäßig die Sicherheit des App-Transports, wodurch Apps gezwungen werden, HTTPS zu verwenden.
  • iOS 12: Es wurde ein strengeres Sandboxing für Safari Web Content hinzugefügt und der USB-Restricted Mode eingeführt.
  • iOS 14: Erforderte, dass alle Apps die Berechtigung zur Verfolgung von Benutzern über Apps und Websites hinweg anfordern (App Tracking Transparency).
  • iOS 16: Eingeführter Sperrmodus für Benutzer, die mit anspruchsvollen Bedrohungen konfrontiert sind, wodurch die Angriffsfläche stark eingeschränkt wird.
  • iOS 17: Erweiterte den Sperrmodus und fügte verbesserte Link-Tracking-Schutz- und Kommunikationssicherheitsfunktionen hinzu.

Jede Iteration schließt Angriffsvektoren, die von Sicherheitsforschern entdeckt oder in freier Wildbahn ausgenutzt werden. Apple unterhält auch ein Bug-Bounty-Programm, das Forscher für das Auffinden von Schwachstellen belohnt, einschließlich Sandbox-Ausbrüchen. Diese Feedbackschleife hilft Apple, Schwachstellen zu identifizieren und zu patchen, bevor sie weit verbreitet werden können.

Schlussfolgerung

iOS App Sandboxing ist ein grundlegender Sicherheitsmechanismus, der jede Anwendung in seinem eigenen Container isoliert und so den unbefugten Zugriff auf Systemressourcen und andere App-Daten verhindert. In Kombination mit Codesignierung, Datenverschlüsselung, der Secure Boot Chain und granularen Benutzerberechtigungen schafft es eine mehrschichtige Verteidigung, die iOS zu einer der sichersten verfügbaren mobilen Plattformen macht. Für Entwickler erfordert Sandboxing ein sorgfältiges Design und die Einhaltung der Apple-Richtlinien, schützt aber letztendlich die Benutzer und baut Vertrauen in das Ökosystem auf. Für Benutzer verstärkt das Verständnis von Sandboxing die Bedeutung der Verwaltung von Berechtigungen und der Aktualisierung von Geräten. Mit zunehmenden Bedrohungen härtet Apple weiterhin Sandbox-Profile und führt neue Schutzmaßnahmen ein, um sicherzustellen, dass das Sicherheitsmodell gegen anspruchsvolle Angriffe wirksam bleibt.

Um mehr über die iOS-Sicherheitsarchitektur zu erfahren, lesen Sie Apples iOS Security Guide und den Secure Coding Guide.