iOS Custom URI Handlers / Deeplinks / Custom Schemes
Basic Information
Prilagođeni URL šeme omogućavaju aplikacijama da komuniciraju koristeći prilagođeni protokol, kao što je detaljno opisano u Apple Developer Documentation. Ove šeme moraju biti deklarisane od strane aplikacije, koja zatim obrađuje dolazne URL-ove prema tim šemama. Ključno je validirati sve URL parametre i odbaciti sve neispravne URL-ove kako bi se sprečili napadi kroz ovaj vektor.
Primer je dat gde URI myapp://hostname?data=123876123
poziva specifičnu akciju aplikacije. Zapažena ranjivost bila je u Skype Mobile aplikaciji, koja je omogućila neovlašćene pozivne akcije putem skype://
protokola. Registrovane šeme se mogu naći u Info.plist
aplikacije pod CFBundleURLTypes
. Zlonamerne aplikacije mogu iskoristiti ovo ponovnim registracijama URI-a kako bi presreli osetljive informacije.
Application Query Schemes Registration
Od iOS 9.0, da bi se proverilo da li je aplikacija dostupna, canOpenURL:
zahteva deklarisanje URL šema u Info.plist
pod LSApplicationQueriesSchemes
. Ovo ograničava šeme koje aplikacija može da upita na 50, poboljšavajući privatnost sprečavanjem enumeracije aplikacija.
Testing URL Handling and Validation
Razvijači bi trebali da pregledaju specifične metode u izvor kodu kako bi razumeli konstrukciju i validaciju URL putanja, kao što su application:didFinishLaunchingWithOptions:
i application:openURL:options:
. Na primer, Telegram koristi različite metode za otvaranje URL-ova:
Testing URL Requests to Other Apps
Metode kao što su openURL:options:completionHandler:
su ključne za otvaranje URL-ova za interakciju sa drugim aplikacijama. Identifikacija korišćenja takvih metoda u izvor kodu aplikacije je ključna za razumevanje spoljne komunikacije.
Testing for Deprecated Methods
Zastarjeli metodi koji se bave otvaranjem URL-ova, kao što su application:handleOpenURL:
i openURL:
, treba da budu identifikovani i pregledani zbog bezbednosnih implikacija.
Fuzzing URL Schemes
Fuzzing URL shema može identifikovati greške u oštećenju memorije. Alati kao što je Frida mogu automatizovati ovaj proces otvaranjem URL-ova sa različitim payload-ima kako bi se pratili padovi, što je ilustrovano manipulacijom URL-ova u iGoat-Swift aplikaciji:
Hijackovanje prilagođenih URL šema
Prema ovom postu, zlonamerne aplikacije mogu registrovati prilagođene šeme drugih aplikacija, a zatim zlonamerna aplikacija može otvoriti pregledač koji ima sve kolačiće Safari aplikacije sa ASWebAuthenticationSession.
Sa pregledačem, zlonamerna aplikacija može učitati veb stranicu koju kontroliše napadač i TCC će tražiti od mobilnog korisnika dozvole za otvaranje te aplikacije. Zatim, zlonamerna veb stranica može preusmeriti na stranicu žrtve, na primer, OAuth tok sa parametrima prompt=none
. Ako je korisnik već bio prijavljen u OAuth toku, OAuth tok će poslati tajnu nazad u aplikaciju žrtve koristeći prilagođenu šemu aplikacije žrtve.
Međutim, pošto je zlonamerna aplikacija takođe registrovala tu šemu i pošto je korišćeni pregledač unutar zlonamerne aplikacije, prilagođena šema će u ovom slučaju biti obrađena od strane zlonamerne aplikacije koja će moći da ukrade OAuth token.
Reference
Last updated