Особенности мобильных приложений на платформе iOS, использующих логин и пароль клиентов для доступа к платному контенту

Разработчики мобильных приложений зачастую сталкиваются с необходимостью хранить конфиденциальные данные пользователя на пользовательском устройстве. Это могут быть, например, номер кредитной карточки или аутентификационные данные. В этой статье мы поговорим о типичных ошибках реализации хранения конфиденциальных данных с точки зрения информационной безопасности на примере мобильной платформы iOS. Обычно настройки приложения хранятся в конфигурационных файлах. Библиотека Cocoa Touch, используемая при разработке приложений для мобильной платформы iOS, предоставляет слой абстракции для хранения настроек приложения в классе NSUserDefaults. Класс NSUserDefaults реализует нелюбимый многими шаблон проектирования «Одиночка» (более известный как Singleton), предоставляя доступ к интерфейсу над стандартным конфигурационным файлом приложения. Стандартный файл конфигурации приложения располагается в его домашней директории по относительному адресу Library/Preferences/…plist. Как и другие файлы, расположенные в «песочнице», он не доступен на чтение для других приложений пользовательского уровня. Исключения составляют устройства, подвергнутые модификациям политики безопасности системы (jailbroken-устройства). Многие разработчики по достоинству оценили удобство работы с классом NSUserDefaults. Подавляющее число приложений используют его для хранения внутренних настроек и/или настроек пользователя. К сожалению, удобство использования редко коррелирует с безопасностью. Хранение конфиденциальных данных пользователя в стандартном файле настроек является типичной ошибкой разработчиков, приводящей к утечке пользовательской информации. В результате исследования исходного кода Приложения А на наличие ошибок в контексте информационной безопасности было выявлено, что приложение сохраняет данные аутентификации пользователя в конфигурационном файле настроек. Загрузив Приложение А на iPad под управление оригинальной операционной системы iOS версии 6.1.3, мы прошли стадию аутентификации и принялись за исследование файла настроек приложения.imageРис. 1. Загрузка приложения на iPad Для демонстрации уязвимости мы использовали приложение iExplorer, доступное для операционных систем семейств Windows NT и Mac OS X. Приложение iExplorer представляет собой графический файловый менеджер для устройств под управлением iOS. Находим Приложение А в списке установленных приложений и открываем Library/Preferences/.plist на чтение.imageРис. 2. Внешний вид приложения iExplorer c доступом к нужному файлуimageРис. 3. Конфигурационный файл с конфиденциальной информациейЧитать дальше →

© Habrahabr.ru