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)
Niestandardowe schematy URL umożliwiają aplikacjom komunikację za pomocą niestandardowego protokołu, jak szczegółowo opisano w dokumentacji dewelopera Apple. Te schematy muszą być zadeklarowane przez aplikację, która następnie obsługuje przychodzące adresy URL zgodnie z tymi schematami. Kluczowe jest walidowanie wszystkich parametrów URL oraz odrzucanie wszelkich źle sformułowanych adresów URL, aby zapobiec atakom przez ten wektor.
Podano przykład, w którym URI myapp://hostname?data=123876123
wywołuje określoną akcję aplikacji. Zauważona podatność występowała w aplikacji Skype Mobile, która pozwalała na nieautoryzowane akcje połączeń za pomocą protokołu skype://
. Zarejestrowane schematy można znaleźć w Info.plist
aplikacji w sekcji CFBundleURLTypes
. Złośliwe aplikacje mogą to wykorzystać, ponownie rejestrując URI, aby przechwytywać wrażliwe informacje.
Od iOS 9.0, aby sprawdzić, czy aplikacja jest dostępna, canOpenURL:
wymaga zadeklarowania schematów URL w Info.plist
w sekcji LSApplicationQueriesSchemes
. Ogranicza to schematy, które aplikacja może zapytać do 50, zwiększając prywatność poprzez zapobieganie enumeracji aplikacji.
Programiści powinni zbadać konkretne metody w kodzie źródłowym, aby zrozumieć konstrukcję i walidację ścieżek URL, takie jak application:didFinishLaunchingWithOptions:
i application:openURL:options:
. Na przykład, Telegram wykorzystuje różne metody do otwierania URL-i:
Metody takie jak openURL:options:completionHandler:
są kluczowe do otwierania URL-i w celu interakcji z innymi aplikacjami. Identyfikacja użycia takich metod w kodzie źródłowym aplikacji jest kluczowa dla zrozumienia komunikacji zewnętrznej.
Przestarzałe metody obsługujące otwieranie URL-i, takie jak application:handleOpenURL:
i openURL:
, powinny być zidentyfikowane i przeanalizowane pod kątem implikacji bezpieczeństwa.
Fuzzing schematów URL może zidentyfikować błędy związane z uszkodzeniem pamięci. Narzędzia takie jak Frida mogą zautomatyzować ten proces, otwierając URL-e z różnymi ładunkami w celu monitorowania awarii, co ilustruje manipulacja URL-ami w aplikacji iGoat-Swift:
Zgodnie z tym postem, złośliwe aplikacje mogą rejestrować niestandardowe schematy innych aplikacji, a następnie złośliwa aplikacja może otworzyć przeglądarkę, która ma wszystkie ciasteczka aplikacji Safari za pomocą ASWebAuthenticationSession.
Za pomocą przeglądarki złośliwa aplikacja może załadować stronę internetową kontrolowaną przez atakującego, a TCC poprosi użytkownika mobilnego o pozwolenie na otwarcie tej aplikacji. Następnie złośliwa strona internetowa może przekierować na stronę ofiary, na przykład na przepływ OAuth z parametrem prompt=none
. Jeśli użytkownik był już zalogowany w przepływie OAuth, przepływ OAuth wyśle sekret z powrotem do aplikacji ofiary, używając niestandardowego schematu aplikacji ofiary.
Jednakże, ponieważ złośliwa aplikacja również go zarejestrowała i ponieważ używana przeglądarka znajduje się wewnątrz złośliwej aplikacji, niestandardowy schemat będzie w tym przypadku obsługiwany przez złośliwą aplikację, która będzie mogła ukraść token OAuth.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)