iOS Custom URI Handlers / Deeplinks / Custom Schemes
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Benutzerdefinierte URL-Schemata ermöglichen es Apps, über ein benutzerdefiniertes Protokoll zu kommunizieren, wie in der Apple Developer Documentation 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 alle fehlerhaften URLs zu verwerfen, um Angriffe über diesen Vektor zu verhindern.
Ein Beispiel wird gegeben, bei dem die URI myapp://hostname?data=123876123
eine spezifische Anwendungsaktion auslöst. Eine festgestellte Schwachstelle war in der Skype Mobile-App, die unzulässige Anrufaktionen über das skype://
-Protokoll ermöglichte. Die registrierten Schemata sind in der Info.plist
der App unter CFBundleURLTypes
zu finden. Bösartige Anwendungen können dies ausnutzen, indem sie URIs neu registrieren, um sensible Informationen abzufangen.
Seit iOS 9.0 erfordert canOpenURL:
, um zu überprüfen, ob eine App verfügbar ist, die Deklaration von URL-Schemata in der Info.plist
unter LSApplicationQueriesSchemes
. Dies begrenzt die Schemata, die eine App abfragen kann, auf 50 und verbessert die Privatsphäre, indem es die Aufzählung von Apps verhindert.
Entwickler sollten spezifische Methoden im Quellcode überprüfen, um den Aufbau und die Validierung von URL-Pfaden zu verstehen, wie application:didFinishLaunchingWithOptions:
und application:openURL:options:
. Zum Beispiel verwendet Telegram verschiedene Methoden zum Öffnen von URLs:
Methoden wie openURL:options:completionHandler:
sind entscheidend, um URLs zu öffnen und mit anderen Apps zu interagieren. Die Identifizierung der Nutzung solcher Methoden im Quellcode der App ist der Schlüssel zum Verständnis externer Kommunikationen.
Veraltete Methoden zur Handhabung von URL-Öffnungen, wie application:handleOpenURL:
und openURL:
, sollten identifiziert und auf Sicherheitsimplikationen überprüft werden.
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, veranschaulicht durch die Manipulation von URLs in der iGoat-Swift-App:
Laut diesem Beitrag könnten bösartige Apps andere Apps benutzerdefinierte Schemata registrieren, dann kann die bösartige App einen Browser öffnen, der alle Cookies der Safari-App mit ASWebAuthenticationSession hat.
Mit dem Browser kann die bösartige App eine von Angreifern kontrollierte Webseite laden, und TCC wird den mobilen Benutzer um Erlaubnis bitten, diese App zu öffnen. Dann könnte die bösartige Webseite auf eine Opferseite umleiten, zum Beispiel einen OAuth-Fluss mit dem Parameter prompt=none
. Wenn der Benutzer bereits im OAuth-Fluss angemeldet war, wird der OAuth-Fluss das Geheimnis über das benutzerdefinierte Schema der Opferanwendung zurücksenden.
Da die bösartige App es jedoch auch registriert hat und da der verwendete Browser innerhalb der bösartigen App ist, wird das benutzerdefinierte Schema in diesem Fall von der bösartigen App behandelt, die in der Lage sein wird, das OAuth-Token zu stehlen.
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)