iOS UIActivity Sharing

iOS UIActivity Sharing

Support HackTricks

UIActivity Sharing Vereinfacht

Seit iOS 6 können Drittanbieteranwendungen Daten wie Text, URLs oder Bilder über Mechanismen wie AirDrop teilen, wie im Inter-App Communication guide von Apple beschrieben. Diese Funktion zeigt sich durch ein systemweites Teilen-Aktivitätsblatt, das beim Interagieren mit der Schaltfläche "Teilen" erscheint.

Eine umfassende Auflistung aller integrierten Sharing-Optionen ist unter UIActivity.ActivityType verfügbar. Entwickler können entscheiden, bestimmte Sharing-Optionen auszuschließen, wenn sie diese für ihre Anwendung als ungeeignet erachten.

Wie man Daten teilt

Die Aufmerksamkeit sollte auf folgende Punkte gerichtet werden:

  • Die Art der geteilten Daten.

  • Die Einbeziehung von benutzerdefinierten Aktivitäten.

  • Der Ausschluss bestimmter Aktivitätstypen.

Das Teilen erfolgt durch die Instanziierung eines UIActivityViewController, dem die zum Teilen vorgesehenen Elemente übergeben werden. Dies wird erreicht, indem man Folgendes aufruft:

$ rabin2 -zq Telegram\ X.app/Telegram\ X | grep -i activityItems
0x1000df034 45 44 initWithActivityItems:applicationActivities:

Entwickler sollten den UIActivityViewController hinsichtlich der Aktivitäten und benutzerdefinierten Aktivitäten, mit denen er initialisiert wird, sowie der angegebenen excludedActivityTypes genau prüfen.

Wie man Daten empfängt

Die folgenden Aspekte sind entscheidend beim Empfangen von Daten:

  • Die Deklaration von benutzerdefinierten Dokumenttypen.

  • Die Spezifikation von Dokumenttypen, die die App öffnen kann.

  • Die Überprüfung der Integrität der empfangenen Daten.

Ohne Zugriff auf den Quellcode kann man dennoch die Info.plist auf Schlüssel wie UTExportedTypeDeclarations, UTImportedTypeDeclarations und CFBundleDocumentTypes überprüfen, um die Arten von Dokumenten zu verstehen, die eine App verarbeiten und deklarieren kann.

Ein prägnanter Leitfaden zu diesen Schlüsseln ist auf Stackoverflow verfügbar, der die Bedeutung der Definition und des Imports von UTIs für die systemweite Erkennung sowie die Zuordnung von Dokumenttypen zu Ihrer App für die Integration im Dialog "Öffnen mit" hervorhebt.

Dynamischer Testansatz

Um sendende Aktivitäten zu testen, könnte man:

  • In die Methode init(activityItems:applicationActivities:) einhaken, um die Elemente und Aktivitäten zu erfassen, die geteilt werden.

  • Ausgeschlossene Aktivitäten identifizieren, indem man die Eigenschaft excludedActivityTypes abfängt.

Für empfangene Elemente umfasst es:

  • Eine Datei von einer anderen Quelle (z. B. AirDrop, E-Mail) mit der App zu teilen, die den Dialog "Öffnen mit..." aufruft.

  • application:openURL:options: unter anderen während der statischen Analyse identifizierten Methoden abfangen, um die Reaktion der App zu beobachten.

  • Fehlformatierte Dateien oder Fuzzing-Techniken verwenden, um die Robustheit der App zu bewerten.

Referenzen

Unterstützen Sie HackTricks

Last updated