iOS App Extensions

Support HackTricks

App-Erweiterungen verbessern die Funktionalität von Apps, indem sie es ihnen ermöglichen, mit anderen Apps oder dem System zu interagieren und benutzerdefinierte Funktionen oder Inhalte bereitzustellen. Diese Erweiterungen umfassen:

  • Benutzerdefinierte Tastatur: Bietet eine einzigartige Tastatur in allen Apps und ersetzt die Standard-iOS-Tastatur.

  • Teilen: Ermöglicht das Teilen in sozialen Netzwerken oder direkt mit anderen.

  • Heute (Widgets): Liefert Inhalte oder führt Aufgaben schnell aus der Heute-Ansicht des Benachrichtigungszentrums aus.

Wenn ein Benutzer mit diesen Erweiterungen interagiert, wie z.B. beim Teilen von Text aus einer Host-App, verarbeitet die Erweiterung diese Eingabe in ihrem Kontext und nutzt die geteilten Informationen, um ihre Aufgabe auszuführen, wie in der Dokumentation von Apple beschrieben.

Sicherheitsüberlegungen

Wichtige Sicherheitsaspekte umfassen:

  • Erweiterungen und ihre enthaltenen Apps kommunizieren über Interprozesskommunikation, nicht direkt.

  • Das Heute-Widget ist einzigartig, da es seine App über eine spezifische Methode öffnen kann.

  • Der Zugriff auf gemeinsam genutzte Daten ist innerhalb eines privaten Containers erlaubt, aber der direkte Zugriff ist eingeschränkt.

  • Bestimmte APIs, einschließlich HealthKit, sind für App-Erweiterungen tabu, die auch keine lang laufenden Aufgaben starten, auf die Kamera oder das Mikrofon zugreifen können, außer bei iMessage-Erweiterungen.

Statische Analyse

Identifizierung von App-Erweiterungen

Um App-Erweiterungen im Quellcode zu finden, suche nach NSExtensionPointIdentifier in Xcode oder inspiziere das App-Bundle nach .appex-Dateien, die auf Erweiterungen hinweisen. Ohne Quellcode verwende grep oder SSH, um diese Identifikatoren im App-Bundle zu lokalisieren.

Unterstützte Datentypen

Überprüfe die Info.plist-Datei einer Erweiterung auf NSExtensionActivationRule, um unterstützte Datentypen zu identifizieren. Diese Einrichtung stellt sicher, dass nur kompatible Datentypen die Erweiterung in Host-Apps auslösen.

Datenfreigabe

Die Datenfreigabe zwischen einer App und ihrer Erweiterung erfordert einen gemeinsamen Container, der über "App-Gruppen" eingerichtet und über NSUserDefaults zugegriffen wird. Dieser gemeinsame Raum ist notwendig für Hintergrundübertragungen, die von Erweiterungen initiiert werden.

Einschränkung von Erweiterungen

Apps können bestimmte Erweiterungstypen einschränken, insbesondere benutzerdefinierte Tastaturen, um sicherzustellen, dass der Umgang mit sensiblen Daten den Sicherheitsprotokollen entspricht.

Dynamische Analyse

Dynamische Analyse umfasst:

  • Überprüfen von gemeinsam genutzten Elementen: Hook in NSExtensionContext - inputItems, um gemeinsam genutzte Datentypen und Ursprünge zu sehen.

  • Identifizierung von Erweiterungen: Entdecke, welche Erweiterungen deine Daten verarbeiten, indem du interne Mechanismen wie NSXPCConnection beobachtest.

Tools wie frida-trace können helfen, die zugrunde liegenden Prozesse zu verstehen, insbesondere für diejenigen, die an den technischen Details der Interprozesskommunikation interessiert sind.

Referenzen

Support HackTricks

Last updated