Оценка безопасности мобильных приложений (Часть 2) — Тестирование приложения

Опубликовано: 6 Апреля, 2023

Введение

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

Подводя итог, мы пришли к выводу, что процесс оценки приложения должен включать:

  • Планирование
  • Тестирование приложений
  • Утверждение или отклонение заявки

В первой статье этой серии мы рассмотрели планирование, начальные этапы процесса проверки приложений.

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

Затем заявка передается ответственному лицу/команде и проходит через набор процедур анализа, выполняемых либо вручную, с помощью инструментов и служб (автоматизированных), либо с помощью комбинации всех трех способов.

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

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

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

Тонкости тестирования приложений

Несколько вещей, которые следует учитывать:

  • Обеспечьте процедуру, с помощью которой можно будет оценить безопасность приложения.
  • Убедитесь, что проведенный анализ соответствует тому, что согласовано или разрешено и указано в лицензионном соглашении для приложения, чтобы избежать нарушения лицензионного соглашения и юридических последствий в дальнейшем.
  • Тестирование должно проводиться после разработки приложения, но до его развертывания на мобильном устройстве.
  • Не забывайте тестировать обновления приложения — это очень важно
  • Используйте безопасный подход при тестировании (по возможности используйте шифрование для передачи и хранения).
  • Стратегия должна быть согласована с уникальными требованиями безопасности вашей организации, это следует тщательно продумать, поскольку необходимо указать требования безопасности организации, которые будут использоваться в качестве основы для процесса проверки.
  • Убедитесь, что любое предыдущее тестирование не считается окончательным, поскольку требования безопасности или уровень приемлемости риска одной организации могут сильно отличаться от требований другой организации.
  • Тестирование приложения может выполняться внутри или снаружи с помощью службы, инструмента или практического ручного тестирования или комбинации различных методов.

Тестирование приложения

Делегированная группа или отдельное лицо организуют отправку приложения для тестирования. Приложение будет отправлено анализатору (ам), который может быть внутренним или внешним по отношению к организации для анализа.

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

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

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

Рекомендуемые требования безопасности должны выглядеть следующим образом:

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

Тестирование по требованию

Требования следует протестировать, чтобы получить результат либо о нарушении требования, либо о том, что требование выполнено и является удовлетворительным.

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

Требование тестируется

Что следует учитывать в отношении приложения

Включение авторизованного функционала

Протестируйте пользовательский интерфейс (дисплеи, виртуальные клавиатуры, кнопки)

Протестируйте все физические атрибуты, используемые приложением (камеры, GPS, микрофоны, связь между устройствами).

Убедитесь, что звонки и сообщения не используются в целях функциональности приложения.

Убедитесь, что все эти атрибуты работают по назначению

Предотвращение несанкционированной функциональности

Обращайте внимание на преднамеренное вредоносное функционирование, нарушающее безопасность (функции, способствующие мошенническим действиям, краже информации, открывающие двери для атак)

Баннерная реклама иногда используется для обмана пользователей и организации фишинговых атак.

Обнаружение вредоносного ПО важно, но его эффективность не гарантируется на 100 %

Убедитесь, что приложение не взаимодействует с ненадежными сайтами, доменами или серверами.

Ограничение разрешений

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

Чем больше у него разрешений, тем он менее безопасен и тем выше потенциальная угроза безопасности.

Обратите внимание на следующие разрешения и внимательно подумайте, нужны ли они:

  • Доступ и хранение конфиденциальных данных (адресная книга, контакты, пароли и т. д.)
  • Доступ к камере
  • Доступ к микрофону
  • Ввод/вывод файлов и съемные носители (доступ к файлам)
  • Привилегированные команды (возможность активировать команды, разрешающие несанкционированный доступ к системе и атаки с повышенными правами)
  • Следует тщательно рассмотреть API и использовать только требуемые разрешенные

Защита конфиденциальных данных

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

Валидированная криптография должна использоваться и реализовываться правильно, а также должно использоваться подходящее управление ключами.

Цифровые сертификаты всегда должны быть правильно проверены

Необходимо учитывать утечку данных через различные несанкционированные сетевые маршруты (сотовая связь, Wi-Fi, Bluetooth, общие системные журналы).

Рекомендуется изучить журналы приложений, чтобы определить тип утечек данных.

Защита зависимостей кода приложения

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

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

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

Тестирование обновлений приложения

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

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

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

Таблица 1

Методы испытаний

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

Методы испытаний могут включать:

  • Проверка правильности
  • Анализ исходного или бинарного кода
  • Статический или динамический анализ
  • Ручное тестирование
  • Автоматизированное тестирование

Вывод

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

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