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

По данным Statista, в прошлом году мобильные приложения были скачаны более 255 млрд. раз по всему миру. Многие мобильные приложения по своей природе уязвимы для угроз безопасности. Вдобавок, большинство приложений, как правило, хранят в себе конфиденциальную информацию о пользователях, что делает их еще более привлекательными для кибер-преступников.
Фонд OWASP (некоммерческий фонд по безопасности программного обеспечения) регулярно изучает и составляет списки уязвимостей мобильных приложений, в особенности с открытым исходным кодом. Давайте рассмотрим самые распространенные из них:


1. Некорректное использование операционной системы

Наиболее распространенный вид уязвимостей. Вне зависимости от вида платформы (iOS или Android) необходимо соблюдать конкретные требования с целью обеспечения безопасности готового продукта. Тем не менее, некоторые разработчики либо пренебрегают этими правилами либо допускают ошибки.

Примеры нарушения протоколов безопасности, которые приводят к возможности неавторизованного доступа к устройству:

• ошибочное использование функции iOS Touch ID;
• некорректное применение iOS Keychain, когда пароли хранятся не в защищённом месте, а в локальном хранилище приложения;
• запрос неверных или чрезмерных разрешений платформы;
• открытые запросы в Android, позволяющие неавторизованное выполнение.


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

2. Утечка конфиденциальной информации

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

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

3. Уязвимость кода

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

Нередко при разработке приложений используются сторонние библиотеки, которые могут содержать в себе баги и быть недостаточно протестированы. Разработчик не в состоянии это контролировать т.к. у него нет доступа к исходному коду. Очень часто ошибки кода исправляют частичным переписыванием.
А также можно использовать автоматизированные инструменты для тестирования заполнения буфера и утечки памяти, создавать понятный исходный код, документировать. Для написания кода применять только согласованные шаблоны.


Как мы видим, количество загружаемых мобильных приложений с каждым годом увеличивается, вместе с этим растёт и число уязвимостей, а также совершенствуется схема хакерских атак. Устранение уязвимостей — это непрерывный процесс, который включает в себя анализ безопасности, патчинг, тестирование на проникновение и обучение разработчиков и тестировщиков на предмет безопасности приложений. Кроме того, необходимо отслеживать новые уязвимости и реагировать на них как можно быстрее, чтобы обеспечить безопасность мобильных приложений.

Вам нужна наша помощь?

Pomegranate Square

Читайте также