iOS App Extensions
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
Last updated