iOS Custom URI Handlers / Deeplinks / Custom Schemes
To jest podsumowanie związanych informacji z https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/
Podstawowe informacje
Niestandardowe schematy URL umożliwiają aplikacjom komunikację za pomocą niestandardowego protokołu, jak szczegółowo opisano w Dokumentacji dla programistów Apple. Te schematy muszą być zadeklarowane przez aplikację, która następnie obsługuje przychodzące adresy URL zgodnie z tymi schematami. Ważne jest, aby sprawdzać wszystkie parametry URL i odrzucić wszelkie nieprawidłowe adresy URL, aby zapobiec atakom przez ten wektor.
Przykładem jest URI myapp://hostname?data=123876123
, który wywołuje określoną akcję aplikacji. Zauważono podatność w aplikacji Skype Mobile, która umożliwiała nieautoryzowane akcje połączeń za pomocą protokołu skype://
. Zarejestrowane schematy można znaleźć w pliku Info.plist
aplikacji w sekcji CFBundleURLTypes
. Złośliwe aplikacje mogą wykorzystać to, ponownie rejestrując adresy URL w celu przechwycenia poufnych informacji.
Rejestracja schematów zapytań aplikacji
Od wersji iOS 9.0, aby sprawdzić, czy aplikacja jest dostępna, canOpenURL:
wymaga zadeklarowania schematów URL w pliku Info.plist
w sekcji LSApplicationQueriesSchemes
. Ogranicza to schematy, które aplikacja może zapytać do 50, zwiększając prywatność poprzez zapobieganie wyliczaniu aplikacji.
Testowanie obsługi i walidacji adresów URL
Programiści powinni sprawdzić konkretne metody w kodzie źródłowym, aby zrozumieć konstrukcję i walidację ścieżki adresu URL, takie jak application:didFinishLaunchingWithOptions:
i application:openURL:options:
. Na przykład, Telegram korzysta z różnych metod otwierania adresów URL:
Testowanie żądań URL do innych aplikacji
Metody takie jak openURL:options:completionHandler:
są kluczowe do otwierania adresów URL w celu interakcji z innymi aplikacjami. Zidentyfikowanie użycia takich metod w kodzie źródłowym aplikacji jest kluczowe dla zrozumienia komunikacji zewnętrznej.
Testowanie przestarzałych metod
Metody obsługujące otwieranie adresów URL, takie jak application:handleOpenURL:
i openURL:
, które są przestarzałe, powinny być zidentyfikowane i przeanalizowane pod kątem implikacji dla bezpieczeństwa.
Fuzzowanie schematów URL
Fuzzowanie schematów URL może pomóc w identyfikacji błędów korupcji pamięci. Narzędzia takie jak Frida mogą zautomatyzować ten proces, otwierając adresy URL z różnymi ładunkami, aby monitorować ewentualne awarie, jak to zostało pokazane na przykładzie manipulacji adresami URL w aplikacji iGoat-Swift:
Odwołania
Last updated