Какие данные воруют в iOS-приложениях и как избежать проблем
Безопасность и конфиденциальность личной жизни для каждого из нас крайне важна, но далеко не всегда удается сохранить в тайне от общественности и злоумышленников информацию, которая находится на мобильном устройстве.
Да, разработчики операционных систем и самих устройств пытаются предотвратить возможность утечки данных, однако всевозможные хакеры постоянно находят уязвимые места в системах защиты данных, взламывают устройства и получают доступ к таким личным данным пользователя, как имя и фамилия, пароль, e-mail, фотографии и видео, номера банковских карт, токен, через который осуществляется связь с API.
При желании, должном уровне квалификации и ресурсах, злоумышленник может получить доступ практически к любой информации в мобильном устройстве, поэтому каждый разработчик должен знать, как обезопасить приложение от взлома и предотвратить утечку данных.
Как происходит утечка данных приложения
Получить доступ к любым данным приложений и устройств злоумышленник может при их передаче или узнав Apple ID. А зная Apple ID, можно легко получить доступ к зашифрованной базе данных Keychain. Осенью 2017 года талантливый разработчик Феликс Крауз доказал, что заполучить Apple ID можно достаточно просто, «вшив» в код приложения всего 30 строк вредоносного кода.
Такие изменения в коде приложения создают всплывающее окно, имитирующее системное, и запрашивающее уникальный Apple ID. Если вовремя не заметить угрозу, то злоумышленник может завладеть учетной записью пользователя со всеми негативными вытекающими последствиями для него. Достаточно популярными среди хакеров являются атаки Man-in-the-middle, позволяющие получать такую конфиденциальную информацию, как логины и пароли к аккаунтам, номера банковских карт и другие данные.
Сравнительно недавно данные между бэкендом и клиентской частью передавались посредством протокола HTTP, и при этом передача осуществлялась в нешифрованном виде. Такой подход к передаче данных делал их легкой добычей для хакеров, но когда защита приложения стала одним из главных приоритетов разработчиков, был создан более безопасный протокол HTTPS.
Передача информации по этому протоколу происходит через специальный зашифрованный канал, и в теории такой способ должен был сделать утечку данных невозможной. Но и здесь злоумышленники нашли «лазейку» в виде механизма подмены сертификатов. Подмененный сертификат обманывает приложение и обходит защиту, поскольку система воспринимает его валидным.
Существует несколько вариантов «заставить» систему посчитать сертификат подлинным. Например, можно добавить «нужный» сертификат в соответствующее хранилище в приложении, воспользоваться реверс-инжинирингом или попытаться обойти SSL pinning. Возможен вариант и с модификацией, при которой вредоносный сертификат злоумышленника вшивается в код программы.
Как обезопасить и уберечь приложение от взлома и утечки данных?
Каждый разработчик должен не только знать, как защитить приложение, но и донести эту информацию заказчику. Это необходимо для того, чтобы он при заказе программы понимал, что можно сделать для обеспечения защиты сервиса и данных пользователей, и все ли механизмы защиты будут учтены в разработке приложения.
Остановимся на главных из них. Во-первых, если приложению для работы необходим доступ к камере, галерее и другим внутренним ресурсам устройства, сервис должен запросить соответствующее разрешение у пользователя. В противном случае приложение рискует просто не пройти проверку в App Store. Выше мы отмечали, что утечка данных возможна в момент обмена с сервером.
Для обеспечения безопасности на сервере должен быть установлен SSL-сертификат и настроен протокол HTTPS. Обращение приложения к серверу должно осуществляться посредством токена, уникального набора символов, который в свою очередь должен храниться в зашифрованной базе данных от Apple – Keychain.
Если в процессе работы программы были выявлены уязвимости, их необходимо оперативно исправлять с помощью выпуска обновлений. Иногда в обновлениях от корпорации Apple изменяется политика безопасности приложения, что также необходимо учитывать разработчикам.
Описанные способы помогут обезопасить данные при обмене между сервером и клиентской частью, но существует еще и вероятность физического взлома, когда устройство попадает в руки злоумышленника. Чтобы обезопасить себя от подобных проблем, крайне желательно настраивать доступ через Face ID, Touch ID или пароль, хранящийся в защищенной базе Keychain.
Желательно предусмотреть безопасный ввод данных посредством textfield и textview. Во многих банковских приложениях при сворачивании происходит размывание экрана, что скрывает конфиденциальную информацию от посторонних «любопытных» глаз.
Злоумышленники нашли множество способов воровства личных данных пользователей и продолжают создавать механизмы для обхода систем защиты приложений и устройств. Опытные квалифицированные разработчики смогут свести к минимуму вероятность взлома приложения и утечки данных, учтут в процессе создания программы все возможные нюансы и организуют систему безопасности на самом высоком уровне.