Категория OWASP: MASVS-CODE: Качество кода
Обзор
Выпуск производственных сборок, включающих функции тестирования или отладки, может негативно повлиять на состояние безопасности приложения. Эти функции используются, чтобы помочь разработчикам обнаруживать и идентифицировать ошибки в предполагаемых вариантах использования приложения до или после выпуска новой версии, и не должны быть общедоступными.
Примеры функций тестирования/отладки:
- Скрытые меню
- Параметры включения журналов отладки
- Варианты изменения потока приложения
- Варианты обхода процессов оплаты или подписки
- Варианты обхода аутентификации
- Тесты для действий, специфичных для приложения
Все вышеперечисленное может быть использовано злоумышленником для изменения предполагаемого потока работы приложения или получения системной информации для адаптации дальнейших атак.
Риск, связанный с оставлением открытыми функций тестирования или отладки, может варьироваться в зависимости от действия, связанного с самими возможностями отладки.
Еще одной областью риска для приложения является атрибут android:debuggable, установленный в элементе AndroidManifest.xml <application>
. Как сообщается в статье android:debuggable , развертывание рабочего приложения с вышеупомянутым набором значений позволяет злоумышленникам получать доступ к административным ресурсам, которые в противном случае недоступны.
Влияние
Взаимодействие злонамеренного пользователя с функцией тестирования или отладки в производственной сборке может привести к неожиданным результатам. Влияние любого действия напрямую связано с разрешениями, назначенными функции. Чем выше разрешения, тем большее влияние может оказать активная эксплуатация. Такие функции в приложении могут использоваться для обхода ряда мер защиты, обхода платного доступа, получения информации, связанной с системой или пользователем, или запуска действий по тестированию.
Смягчения
Избегайте использования компонентов отладки
Функции тестирования или отладки никогда не следует реализовывать в компонентах рабочих приложений, таких как действия, приемники вещания, службы или поставщики контента, поскольку в случае экспорта они могут быть запущены любым другим процессом на устройстве. Установка компонента отладки как неэкспортированного ( android:exported="false" ) не представляет собой действительную защиту возможностей, поскольку любое корневое устройство все равно может выполнить его с помощью инструмента Android Debug Bridge (ADB), если опция отладки включена.
Ограничьте функции отладки или тестирования промежуточными сборками.
Выполнение любой функции тестирования или отладки в приложениях должно быть ограничено только ограниченным набором промежуточных сборок, чтобы только разработчики могли отлаживать или тестировать функции приложения в контролируемой среде. Этого можно добиться, создав специальную тестовую или отладочную сборку приложения и расширенные инструментальные тесты для него, чтобы гарантировать, что любая функция тестирования или отладки выполняется в изолированной версии.
Внедрение автоматизированных тестов пользовательского интерфейса.
При выполнении тестов приложения выбирайте автоматизированные тесты пользовательского интерфейса, поскольку они повторяемы, могут выполняться в отдельной среде и не подвержены человеческим ошибкам.
Ресурсы
- Руководство разработчика по расширенным настройкам тестирования
- Руководство для разработчиков по автоматизации UI-тестов
- Android: отлаживаемый
- Android: экспортировано
- Отлаживаемые приложения на Android Market
- Может ли отладочный код вызывать уязвимости безопасности?