К профилю facebook
К профилю linkedin
M2-Insecure Data Storage
Вернуться назад

Решил вникнуть в тестирование безопасности мобильных приложений, ну и соответственно воспользовался чеклистом топовых уязвимостей от 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 браузера;

Какие данные отправляются третьим лицам.

 

Все, теперь поклацая эту уязвимость на специальном приложении, можете идти применять поиск на своем мобильном приложении, чтоб сделать его безопасным.

И ПОМНИТЕ ВСЕ ПОКАЗАННОЕ ВЫШЕ, СДЕЛАНО В ЦЕЛЯХ ОБУЧЕНИЯ!!!

МОЖНО ПРИМЕНЯТЬ ТОЛЬКО НА СВОИХ ПРОЕКТАХ, ПОСЛЕ РАЗРЕШЕНИЯ

gallery/выделение_138
gallery/выделение_139
gallery/выделение_145
gallery/выделение_140
gallery/выделение_141
gallery/выделение_146

Так как мы подняли приложение на эмуляторе, то нам теперь в терминале только остается войти в устройство это можно сделать такой командой adb shell, но перед этим надо глянуть есть ли девайс в списке,это можно сделать командой  adb devices. Если же вы на настоящем устройстве подняли приложение, то вам следует подключить свое устройство и подконектится так к нему, как и к эмулятору. В результате в консоле у вас должен быть такой вывод...

gallery/выделение_148

Затем лазить по структурам папок и файлов телефонного приложения становится простым, но устройство нужно рутировать, так как без рута вы будете видить такую ошибку, при использовании команды ls... 

Как пример можем найти этот каталог /data/data/app.package.name. Из этого видно, что мы можем смотреть любые файлы на украденном/найденном телефоне. Давайте теперь найдем нужный нам каталог, это мы сделаем с помощью команды в терминале cd data/data, а далее с помощью команды ls, найдем там такой каталог jakhar.aseem.diva из того списка выданных папок, это каталог нашего приложения diva.

gallery/выделение_149
gallery/выделение_151

Затем нам надо перейти в эту папку с помощью команды cd jakhar.aseem.diva. А в нем уже выполнить команду pwd

gallery/выделение_152

А теперь надо спулить наш каталог приложения на свой комп в какуе-то папочку. Это мы делаем так:

 

- для начала выйдем из нашего устройства, нажав любую комбинацию с Crtl, допустим crtl+D

- далее прописываем команду adb pull c указанным путем приложения  /data/data/jakhar.aseem.diva

 

Вот как это выглядит... 

gallery/выделение_153
gallery/выделение_154

На картинке выше, мы видим, что спулилось нам в директорию Desktop/Apps/div 3 файла, поэтому теперь переходим в ту директорию, находим там папку shared_prefs в которой будет лежать файл xml, с именем jakhar.assem.diva_preferences.xml а в нем наши данные логин и пароля. Откройте этот файл в любом редакторе, у меня был взят sublime...

gallery/выделение_155

Таким образом пароль введенный хоть один раз в приложение, если приложение имеет такую уязвимость, то злоумышленник легко может узнать его, с проведением такой последовательности действий.

 

К не безопасному хранению данных можно отнести такие категории:

- базы SQL

- Лог файлы

- SD card

- Cookie 

- XML в манифесте

- Хранилище бинарных данных

- Облачные хранилища

 

В разработке мобильных приложений это чаще всего наблюдается в внутренних процессах, то есть, способ, которым ОС кэширует:

- данные,

- изображения,

- нажатия клавиш,

- ведение журнала

- буферы;

 

Хотите узнать больше о различных уязвимостях и инструментах для поиски этих же уязвимостей, чтоб сделать ваш проект безопасным, для ваших пользователей? 

Мы организовываем тренинги по OWASP TOP 10. 

Буду рад вас видеть на тренинге!

 

Программа тут