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)
Prilagođeni URL sheme omogućavaju aplikacijama da komuniciraju koristeći prilagođeni protokol, kao što je detaljno opisano u Apple Developer Documentation. Ove sheme moraju biti deklarisane od strane aplikacije, koja zatim obrađuje dolazne URL-ove prema tim shemama. 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 sheme mogu se naći u Info.plist
aplikacije pod CFBundleURLTypes
. Zlonamerne aplikacije mogu to iskoristiti ponovnim registracijom URI-a kako bi presreli osetljive informacije.
Od iOS 9.0, da bi se proverilo da li je aplikacija dostupna, canOpenURL:
zahteva deklarisanje URL shema u Info.plist
pod LSApplicationQueriesSchemes
. Ovo ograničava sheme koje aplikacija može da upita na 50, poboljšavajući privatnost sprečavanjem enumeracije aplikacija.
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:
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.
Zastarjele metode koje se bave otvaranjem URL-ova, kao što su application:handleOpenURL:
i openURL:
, treba identifikovati i pregledati zbog bezbednosnih implikacija.
Fuzzing URL shema može identifikovati greške u oštećenju memorije. Alati poput 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:
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 pod kontrolom napadača 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.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)