iOS Custom URI Handlers / Deeplinks / Custom Schemes
Dies ist eine Zusammenfassung der relevanten Informationen von https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/
Grundlegende Informationen
Benutzerdefinierte URL-Schemata ermöglichen es Apps, über ein benutzerdefiniertes Protokoll zu kommunizieren, wie in der Apple Developer-Dokumentation beschrieben. Diese Schemata müssen von der App deklariert werden, die dann eingehende URLs gemäß diesen Schemata verarbeitet. Es ist entscheidend, alle URL-Parameter zu validieren und fehlerhafte URLs zu verwerfen, um Angriffe über diesen Vektor zu verhindern.
Ein Beispiel ist gegeben, bei dem die URI myapp://hostname?data=123876123
eine bestimmte Aktion der Anwendung aufruft. Eine bekannte Schwachstelle bestand in der Skype Mobile-App, die unerlaubte Anrufaktionen über das skype://
-Protokoll ermöglichte. Die registrierten Schemata finden sich in der Info.plist
der App unter CFBundleURLTypes
. Bösartige Anwendungen können dies ausnutzen, indem sie URIs erneut registrieren, um sensible Informationen abzufangen.
Registrierung von Anwendungsabfrageschemata
Ab iOS 9.0 erfordert canOpenURL:
zur Überprüfung der Verfügbarkeit einer App die Deklaration von URL-Schemata in der Info.plist
unter LSApplicationQueriesSchemes
. Dadurch werden die Schemata eingeschränkt, die eine App abfragen kann, auf 50 begrenzt, um die Privatsphäre durch Verhinderung der App-Aufzählung zu verbessern.
Testen der URL-Behandlung und -Validierung
Entwickler sollten bestimmte Methoden im Quellcode überprüfen, um die Konstruktion und Validierung des URL-Pfads zu verstehen, wie z.B. application:didFinishLaunchingWithOptions:
und application:openURL:options:
. Zum Beispiel verwendet Telegram verschiedene Methoden zum Öffnen von URLs:
Testen von URL-Anfragen an andere Apps
Methoden wie openURL:options:completionHandler:
sind entscheidend, um URLs zu öffnen und mit anderen Apps zu interagieren. Die Identifizierung der Verwendung solcher Methoden im Quellcode der App ist entscheidend, um externe Kommunikation zu verstehen.
Testen veralteter Methoden
Veraltete Methoden zur Behandlung von URL-Öffnungen, wie application:handleOpenURL:
und openURL:
, sollten identifiziert und auf Sicherheitsimplikationen überprüft werden.
Fuzzing von URL-Schemata
Das Fuzzing von URL-Schemata kann Speicherbeschädigungsfehler identifizieren. Tools wie Frida können diesen Prozess automatisieren, indem sie URLs mit unterschiedlichen Payloads öffnen, um auf Abstürze zu überwachen. Dies wird am Beispiel der Manipulation von URLs in der iGoat-Swift-App veranschaulicht:
Referenzen
Last updated