iOS Custom URI Handlers / Deeplinks / Custom Schemes
Basic Information
Користувацькі URL-схеми дозволяють додаткам спілкуватися, використовуючи власний протокол, як детально описано в документації Apple Developer. Ці схеми повинні бути оголошені додатком, який потім обробляє вхідні URL відповідно до цих схем. Важливо перевіряти всі параметри URL та відкидати будь-які неправильно сформовані URL, щоб запобігти атакам через цей вектор.
Наводиться приклад, де URI myapp://hostname?data=123876123
викликає певну дію програми. Відзначена вразливість була в додатку Skype Mobile, який дозволяв неприпустимі дії дзвінків через протокол skype://
. Зареєстровані схеми можна знайти в Info.plist
додатка під CFBundleURLTypes
. Зловмисні програми можуть використовувати це, повторно реєструючи URI для перехоплення чутливої інформації.
Application Query Schemes Registration
З iOS 9.0, щоб перевірити, чи доступний додаток, canOpenURL:
вимагає оголошення URL-схем у Info.plist
під LSApplicationQueriesSchemes
. Це обмежує схеми, які може запитувати додаток, до 50, підвищуючи конфіденційність, запобігаючи перерахуванню додатків.
Testing URL Handling and Validation
Розробники повинні перевірити конкретні методи в вихідному коді, щоб зрозуміти побудову та валідацію URL-адрес, такі як application:didFinishLaunchingWithOptions:
та application:openURL:options:
. Наприклад, Telegram використовує різні методи для відкриття URL-адрес:
Тестування URL запитів до інших додатків
Методи, такі як openURL:options:completionHandler:
, є критично важливими для відкриття URL для взаємодії з іншими додатками. Визначення використання таких методів у вихідному коді додатка є ключовим для розуміння зовнішніх комунікацій.
Тестування застарілих методів
Застарілі методи, що обробляють відкриття URL, такі як application:handleOpenURL:
та openURL:
, повинні бути виявлені та переглянуті на предмет безпекових наслідків.
Фаззинг URL схем
Фаззинг URL схем може виявити помилки корупції пам'яті. Інструменти, такі як Frida, можуть автоматизувати цей процес, відкриваючи URL з різними навантаженнями для моніторингу на предмет збоїв, що ілюструється маніпуляцією URL у додатку iGoat-Swift:
Викрадення користувацьких URL-схем
Згідно з цим постом, шкідливі програми можуть реєструвати інші програми з користувацькими схемами, тоді шкідлива програма може відкрити браузер, який має всі куки Safari App за допомогою ASWebAuthenticationSession.
За допомогою браузера шкідлива програма може завантажити веб-сторінку, контрольовану зловмисником, і TCC запитає у мобільного користувача дозволи на відкриття цієї програми. Потім шкідлива веб-сторінка може перенаправити на сторінку жертви, наприклад, на OAuth потік з параметром prompt=none
. Якщо користувач вже увійшов у OAuth потік, OAuth потік надішле секрет назад до жертви, використовуючи користувацьку схему жертви.
Однак, оскільки шкідлива програма також зареєструвала її і оскільки використовуваний браузер знаходиться всередині шкідливої програми, користувацька схема в цьому випадку буде оброблятися шкідливою програмою, яка зможе вкрасти OAuth токен.
Посилання
Last updated