Croc

Динамический анализ мобильных приложений Android и iOS с использованием устройств и эмуляторов

Динамический анализ мобильных приложений Android и iOS с использованием устройств и эмуляторов Динамический анализ мобильных приложений Android и iOS с использованием устройств и эмуляторов Динамический анализ мобильных приложений Android и iOS с использованием устройств и эмуляторов
14.09.2022

Количество кибератак на российские компании продолжает расти: во втором квартале 2022 года их число увеличилось на 31% по сравнению с первым триместром. Одна из самых популярных целей хакеров – мобильные приложения. За первую половину текущего года количество атак на API выросло на 200%. Эксперты считают, что в настоящий момент под угрозой находится до 90% мобильных программ.

Существуют как минимум две проблемы, из-за которых у хакеров сегодня так много возможностей для совершения кибератак на отечественные продукты. Во-первых, компании-разработчики часто оставляют безопасность на потом, пренебрегают проверками, стремясь как можно скорее выпустить релизы. Во-вторых, с рынка ИБ ушли многие иностранные вендоры, в том числе поставщики инструментов динамического анализа.

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

Динамический анализ мобильных приложений

Основная задача динамического анализа – отследить, как приложение ведет себя на устройстве, к каким системным вызовам обращается, как взаимодействует с другими программами, что передает на сервер и как хранит данные. К динамическим методам можно отнести практики DAST, IAST и тестирование API.

DAST (Dynamic Application Security Testing) — это тестирование «черного ящика». Практика позволяет в автоматизированном режиме обнаружить уязвимости в развернутом и функционирующем приложении. Поиск слабых мест реализуется за счет проверки всех точек доступа по HTTP, имитации внешних атак с применением распространенных уязвимостей, моделирования случайных действий пользователей. Преимущество DAST заключается в том, что метод позволяет найти проблемы аутентификации и конфигурации сервера и другие слабые места, которые заметны только при входе пользователя в приложение. Все это невозможно обнаружить с помощью статического анализа (SAST).

IAST (Interactive Application Security Testing) — практика интерактивного тестирования безопасности приложений, разработанная для того, чтобы устранять недостатки SAST и DAST, которые являются относительно старыми методами. IAST осуществляет анализ приложения в режиме реального времени, исследует его изнутри, когда оно работает. Метод проверяет, как выполняется код приложения, анализирует потоки данных, конфигурации, HTTP-запросы и ответы, библиотеки, фреймворки, информацию о внутреннем подключении. За счет этого IAST, в отличие от SAST и DAST, может покрывать проверками больший объем кода и выдавать более точные результаты.

Тестирование API — это анализ программного интерфейса приложения. API — один из самых важных компонентов системы, он соединяет клиента с сервером, управляет бизнес-процессами и представляет другие части, важные для пользователя. Тестирование API позволяет проверить функциональность приложения, убедиться в том, что оно работает качественно.

Таким образом, динамический анализ решает сразу несколько важных задач:

  1. Анализирует безопасность приложения без доступа к его исходному коду: метод исследует поведение работающей программы на мобильном устройстве без необходимости доступа к коду;
  2. Находит уникальные типы уязвимостей, которые невозможно обнаружить с помощью других практик анализа;
  3. Подтверждает уязвимости: с помощью динамического анализа можно проверить ошибки, найденные другими практиками, и определить, какие из них на самом деле эксплуатируемые.

Помимо всего этого, после проведения динамического анализа специалисты ИБ получают подробную информацию о том, как работает приложение. Ее можно использовать для дальнейшего поиска более сложных уязвимостей.

Проблемы имплементации динамического анализа

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

  1. Окружение для тестирования. Чтобы провести динамический анализ, приложение нужно где-то запустить. Сделать это можно с помощью виртуальных устройств (эмуляторов и симуляторов) или реальных мобильных гаджетов, которые нужно поддерживать в актуальном и рабочем состоянии.
  2. Работа с приложением. Для проведения полноценного динамического анализа нужно взаимодействовать с приложением и реализовывать в нем определенные сценарии (аутентификацию, переход к экранам, проведение бизнес-операций и так далее).
  3. Интеграция в непрерывный CI/CD процесс. Необходимо в автоматическом режиме доставлять новые версии тестируемых приложений на устройства.

Последние две проблемы решаются автоматизацией тестирования. В этой статье мы подробнее поговорим об организации окружения для проведения анализа на Android и iOS.

Тестовое окружение для приложений iOS и Android

Для динамического тестирования мобильных приложений на базе Android понадобятся реальные устройства на этой же операционной системе или эмуляторы анализируемых девайсов. Эмуляторы — это программы, которые аппаратно и программно имитируют работу необходимого устройства. Они настраиваются в виртуальной среде, после чего команда может проводить полноценное непрерывное тестирование. Для анализа мобильных приложений на базе iOS удобнее использовать реальные гаджеты. Также существуют iOS-симуляторы – программы, созданные в виртуальной среде, которые копируют конфигурацию и поведение нужного устройства, но не имитируют аппаратную часть, в отличие от эмуляторов. Для работы iOS-симуляторов нужен компьютер Mac, и эти программы имеют ряд ограничений, не позволяющих проводить полноценное тестирование безопасности.

Использование эмуляторов для динамического анализа приложений Android

Платформа Стингрей проводит тестирование безопасности приложений Android с помощью эмуляторов. Они полностью имитируют работу устройств и могут быть запущены на ПК с любой операционной системой. Такой подход имеет несколько преимуществ:

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

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

Использование устройств для динамического анализа приложений iOS

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

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

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

  3. Обновление устройств — еще одна проблема, которая может доставить немало неудобств. С каждым новым релизом в конфигурации продукта что-то меняется. Чтобы не вносить изменения руками, мы также разработали и внедрили в Стингрей механизм автоматического обновления конфигурации устройств: при выходе очередного релиза система сама все актуализирует.

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

Заключение

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

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


Комментарии 0