Решил вникнуть в тестирование безопасности мобильных приложений, ну и соответственно воспользовался чеклистом топовых уязвимостей от OWASP TOP 10. Ведь востребованность в мобильных приложениях растет с каждым годом, а про безопасность данных пользователей этого приложения мало кто задумывается, при разработке приложения. Поэтому давайте сделаем наши приложения безопасными с помощью этой шпаргалки.
В этом приложении есть разные виды уязвимостей, но нас сейчас интересует именно второй вид уязвимости Insecure Data Storage, по этому давайте выберем соответствующий 5-й пункт этой трабле, чтоб поюзать ее и понять серьезность траблы.
А теперь давайте немного разберем эту уязвимость M2-Insecure Data Storage. Она находится на втором месте OWASP top 10. Начал с нее потому что она самая легкая из 10 существующих. Пользователь попадает под эту угрозу если:
- злоумышленник нашел потерянный телефон или крадет мобильное устройство вашего пользователя
- пользователь установил вредоносное ПО или другое пере упакованное приложение, действующее от имени противника, которое выполняется на мобильном устройстве.
Из выше сказанного, с помощью доступного программного обеспечения, злоумышленник просто получает доступ к просмотру каталогов приложения, которые часто содержат хранимую личную информацию (PII) или другие конфиденциальные данные.
Небезопасное хранения данных возникают, когда разработчики предполагают, что пользователи или вредоносные программы не будут иметь доступ к файловой системе мобильного устройства и конфиденциальной информации в хранилищах данных на устройстве. По этому, вы как QA, должны ожидать, что злоумышленник или вредоносная программа будут проверять хранилища конфиденциальных данных. Следует избегать использования плохих библиотек шифрования. Rooting или jailbreaking мобильного устройства обходят любые средства шифрования, если данные не защищены должным образом, все, что нужно для просмотра данных приложения - это всего навсего специализированные инструменты.
И так давайте перейдем к практике и глянем как это работает... Запустим наше уязвимое приложение через какой-то эмулятор. Я использую приложение Diva. Его можно найти тут...
Давайте представим что это страница регистрации, мы введем туда свои данные логин: svyat и пароля: 123456, для того, чтоб последующие разы нас авторизировало и посмотрим, что будет дальше...
Надо моделировать вектор угрозы данной уязвимости для вашего мобильного приложения, ОС, платформ и среды, чтобы понять как мобильное приложение, как API-интерфейсы обрабатывают эти активы. Очень важно увидеть, как они обрабатывают следующие типы функций:
Кеширование URL (как запроса, так и ответа);
Кэширование нажатий клавиш;
Кэширование буфера копирования / вставки;
Фоновая обработка приложений;
Промежуточные данные;
Логирование;
Хранение данных HTML5;
Объекты cookie браузера;
Какие данные отправляются третьим лицам.
Все, теперь поклацая эту уязвимость на специальном приложении, можете идти применять поиск на своем мобильном приложении, чтоб сделать его безопасным.
Так как мы подняли приложение на эмуляторе, то нам теперь в терминале только остается войти в устройство это можно сделать такой командой adb shell, но перед этим надо глянуть есть ли девайс в списке,это можно сделать командой adb devices. Если же вы на настоящем устройстве подняли приложение, то вам следует подключить свое устройство и подконектится так к нему, как и к эмулятору. В результате в консоле у вас должен быть такой вывод...
Затем лазить по структурам папок и файлов телефонного приложения становится простым, но устройство нужно рутировать, так как без рута вы будете видить такую ошибку, при использовании команды ls...
Как пример можем найти этот каталог /data/data/app.package.name. Из этого видно, что мы можем смотреть любые файлы на украденном/найденном телефоне. Давайте теперь найдем нужный нам каталог, это мы сделаем с помощью команды в терминале cd data/data, а далее с помощью команды ls, найдем там такой каталог jakhar.aseem.diva из того списка выданных папок, это каталог нашего приложения diva.
Затем нам надо перейти в эту папку с помощью команды cd jakhar.aseem.diva. А в нем уже выполнить команду pwd
А теперь надо спулить наш каталог приложения на свой комп в какуе-то папочку. Это мы делаем так:
- для начала выйдем из нашего устройства, нажав любую комбинацию с Crtl, допустим crtl+D
- далее прописываем команду adb pull c указанным путем приложения /data/data/jakhar.aseem.diva
Вот как это выглядит...
На картинке выше, мы видим, что спулилось нам в директорию Desktop/Apps/div 3 файла, поэтому теперь переходим в ту директорию, находим там папку shared_prefs в которой будет лежать файл xml, с именем jakhar.assem.diva_preferences.xml а в нем наши данные логин и пароля. Откройте этот файл в любом редакторе, у меня был взят sublime...
Таким образом пароль введенный хоть один раз в приложение, если приложение имеет такую уязвимость, то злоумышленник легко может узнать его, с проведением такой последовательности действий.
К не безопасному хранению данных можно отнести такие категории:
- базы SQL
- Лог файлы
- SD card
- Cookie
- XML в манифесте
- Хранилище бинарных данных
- Облачные хранилища
В разработке мобильных приложений это чаще всего наблюдается в внутренних процессах, то есть, способ, которым ОС кэширует:
- данные,
- изображения,
- нажатия клавиш,
- ведение журнала
- буферы;