Функции тестирования и отладки

Категория OWASP: MASVS-CODE: Качество кода

Обзор

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

Примеры функций тестирования/отладки:

  • Скрытые меню
  • Параметры включения журналов отладки
  • Варианты изменения потока приложения
  • Варианты обхода процессов оплаты или подписки
  • Варианты обхода аутентификации
  • Тесты для действий, специфичных для приложения

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

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

Еще одной областью риска для приложения является атрибут android:debuggable, установленный в элементе AndroidManifest.xml <application> . Как сообщается в статье android:debuggable , развертывание рабочего приложения с вышеупомянутым набором значений позволяет злоумышленникам получать доступ к административным ресурсам, которые в противном случае недоступны.

Влияние

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

Смягчения

Избегайте использования компонентов отладки

Функции тестирования или отладки никогда не следует реализовывать в компонентах рабочих приложений, таких как действия, приемники вещания, службы или поставщики контента, поскольку в случае экспорта они могут быть запущены любым другим процессом на устройстве. Установка компонента отладки как неэкспортированного ( android:exported="false" ) не представляет собой действительную защиту возможностей, поскольку любое корневое устройство все равно может выполнить его с помощью инструмента Android Debug Bridge (ADB), если опция отладки включена.

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

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

Внедрение автоматизированных тестов пользовательского интерфейса.

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

Ресурсы