iOS Custom URI Handlers / Deeplinks / Custom Schemes

Support HackTricks

Basic Information

Aangepaste URL skemas stel toepassings in staat om te kommunikeer met 'n aangepaste protokol, soos in die Apple Developer Documentation uiteengesit. Hierdie skemas moet deur die toepassing verklaar word, wat dan inkomende URL's volgens daardie skemas hanteer. Dit is van kardinale belang om alle URL parameters te valideer en enige verkeerd geformateerde URL's te verwerp om aanvalle deur hierdie vektor te voorkom.

'n Voorbeeld word gegee waar die URI myapp://hostname?data=123876123 'n spesifieke toepassingsaksie aanroep. 'n Genoemde kwesbaarheid was in die Skype Mobile toepassing, wat ongereguleerde oproepaksies via die skype:// protokol toegelaat het. Die geregistreerde skemas kan in die toepassing se Info.plist onder CFBundleURLTypes gevind word. Kwaadwillige toepassings kan dit benut deur URI's weer te registreer om sensitiewe inligting te onderskep.

Application Query Schemes Registration

Vanaf iOS 9.0, om te kontroleer of 'n toepassing beskikbaar is, vereis canOpenURL: dat URL skemas in die Info.plist onder LSApplicationQueriesSchemes verklaar word. Dit beperk die skemas wat 'n toepassing kan navraag doen tot 50, wat privaatheid verbeter deur toepassingse enumerasie te voorkom.

<key>LSApplicationQueriesSchemes</key>
<array>
<string>url_scheme1</string>
<string>url_scheme2</string>
</array>

Toetsing van URL-hantering en -validasie

Ontwikkelaars moet spesifieke metodes in die bronkode ondersoek om URL-padkonstruksie en -validasie te verstaan, soos application:didFinishLaunchingWithOptions: en application:openURL:options:. Byvoorbeeld, Telegram gebruik verskeie metodes om URL's te open:

func application(_ application: UIApplication, open url: URL, sourceApplication: String?) -> Bool {
self.openUrl(url: url)
return true
}

func application(_ application: UIApplication, open url: URL, sourceApplication: String?,
annotation: Any) -> Bool {
self.openUrl(url: url)
return true
}

func application(_ app: UIApplication, open url: URL,
options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
self.openUrl(url: url)
return true
}

func application(_ application: UIApplication, handleOpen url: URL) -> Bool {
self.openUrl(url: url)
return true
}

Toetsing van URL-versoeke na Ander Apps

Metodes soos openURL:options:completionHandler: is van kardinale belang om URL's te open om met ander apps te kommunikeer. Die identifisering van die gebruik van sulke metodes in die app se bronne kode is sleutels tot die begrip van eksterne kommunikasie.

Toetsing vir Verouderde Metodes

Verouderde metodes wat URL-opening hanteer, soos application:handleOpenURL: en openURL:, moet geïdentifiseer en hersien word vir sekuriteitsimplikasies.

Fuzzing URL Skemas

Fuzzing URL skemas kan geheue korrupsie foute identifiseer. Gereedskap soos Frida kan hierdie proses outomatiseer deur URL's met verskillende payloads te open om vir crashes te monitor, soos geïllustreer deur die manipulasie van URL's in die iGoat-Swift app:

$ frida -U SpringBoard -l ios-url-scheme-fuzzing.js
[iPhone::SpringBoard]-> fuzz("iGoat", "iGoat://?contactNumber={0}&message={0}")
Watching for crashes from iGoat...
No logs were moved.
Opened URL: iGoat://?contactNumber=0&message=0

Aangepaste URL skema kaping

Volgens hierdie pos kan kwaadwillige toepassings ander toepassings se aangepaste skemas registreer, dan kan die kwaadwillige toepassing 'n blaaier oopmaak wat al die koekies van die Safari-toepassing het met ASWebAuthenticationSession.

Met die blaaiers kan die kwaadwillige toepassing 'n webblad wat deur 'n aanvaller beheer word, laai en TCC sal die mobiele gebruiker vra om toestemming te gee om daardie toepassing oop te maak. Dan kan die kwaadwillige webblad na 'n slagofferbladsy herlei, byvoorbeeld 'n OAuth-stroom met die parameter prompt=none. As die gebruiker reeds ingelog was in die OAuth-stroom, sal die OAuth-stroom die geheim terugstuur na die slagoffer-toepassing met behulp van die aangepaste skema van die slagoffer-toepassing. E however, omdat die kwaadwillige toepassing dit ook geregistreer het en omdat die gebruikte blaaiers binne die kwaadwillige toepassing is, sal die aangepaste skema in hierdie geval hanteer word deur die kwaadwillige toepassing wat in staat sal wees om die OAuth-token te steel.

Verwysings

Ondersteun HackTricks

Last updated