Приложение 1. Описание модулей для сбора информации
Система включает более двадцати модулей для сканирования и сбора информации о приложении. Каждый модуль отвечает за сбор «своей» информации. Список всех модулей представлен на вкладке Модули страницы Профиль. Из списка можно выбрать и настроить модули, которые будут включены при сканировании приложения с данным профилем.
Чтобы применить измененные настройки модуля, необходимо нажать кнопку Изменить внизу блока настроек. У модулей, которые не имеют настроек, кнопка Изменить отсутствует.
Примечание
Для функционирования некоторых модулей достаточно статических данных и установка/запуск приложения для сбора информации о его работе не обязательны. Для обозначения таких модулей используется метка «Использование данного модуля не требует запуска приложения». Например, см. описание модуля «Поиск чувствительной информации по энтропии».
Описание модулей приведено ниже.
Активные проверки
Активные проверки - это модуль, осуществляющий отправку запросов, содержащих Payloads, в целевое приложение и отслеживающий результаты обработки этих запросов. По сути это фаззинг открытых для взаимодействия точек в приложении.
Настройки разделяются на несколько подразделов:
Раздел Активность
Включает в себя различные настройки по атакам на экспортированные Activity и DeepLink`и.
- Использовать - определяет, будут ли проводиться атаки на эти компоненты системы.
- Посылать нажатие с key code перед каждой атакой - определяет, какое событие отправлять перед атакой. По умолчанию key code = 3 (альтернатива выходу на рабочий стол или нажатию на кнопку Home).
- Посылать нажатие с key code после каждой атаки - определяет, какое событие отправлять перед атакой. По умолчанию key code = 4 (альтернатива нажатию на кнопку Back).
- Атаковать активность переднего плана - так как Активность переднего плана всегда экспортирована, данная настройка определяет, имеет ли смысл ее атаковать.
- Исключенные из атак классы Активностей - какие классы исключить из атак. Допустимо указание как полного имени Activity (com.google.firebase.auth.internal.GenericIdpActivity), так и короткого, например, GenericIdpActivity.
- Подстановка в диплинки и параметры Интентов - список Payloads, которые будут подставляться в параметры отправляемых запросов (помимо предопределенных в системе). По факту, это fuzzing-лист. Есть возможность в запросы подставлять имя пакета приложения, для этого в строке укажите параметр {pkg}. Например, при сканировании приложения com.swdf.buggen, и при payload https://{pkg}.evil.com в результате будет отправлен payload https://com.swdf.buggen.evil.com.
Раздел Навигация Фрагментов в Jetpack
Включает в себя различные настройки по атакам на фрагменты навигации при использовании JetpackNavigation в приложении.
- Использовать - определяет, будут ли проводиться атаки на эти компоненты системы.
- Посылать нажатие с key code перед каждой атакой - определяет, какое событие отправлять перед атакой. По умолчанию key code = 3 (альтернатива выходу на рабочий стол или нажатию на кнопку Home).
- Посылать нажатие с key code после каждой атаки - определяет, какое событие отправлять перед атакой. По умолчанию key code = 4 (альтернатива нажатию на кнопку Back).
- Атаковать активность переднего плана - так как Активность переднего плана всегда экспортирована, данная настройка определяет, имеет ли смысл ее атаковать.
- Исключенные из атак классы Активностей - какие классы исключить из атак. Допустимо указание как полного имени Activity (com.google.firebase.auth.internal.GenericIdpActivity), так и короткого, например, GenericIdpActivity.
- Исключенные из атак классы Фрагментов - какие классы исключить из атак. Допустимо указание как полного имени класса Фрагмента (com.google.firebase.auth.internal.GenericIdpActivity), так и короткого, например, GenericIdpActivity.
Раздел Использовать атаки на Compose-навигацию
Включает в себя различные настройки по атакам на Composable-приложения, как полностью написанные на этом фреймворке, так и самописные.
- Использовать - определяет, будут ли проводиться атаки на эти компоненты системы.
- Посылать нажатие с key code перед каждой атакой - определяет, какое событие отправлять перед атакой. По умолчанию, key code = 3 (альтернатива выходу на рабочий стол или нажатию на кнопку Home).
- Посылать нажатие с key code после каждой атаки - определяет, какое событие отправлять перед атакой. По умолчанию, key code = 4 (альтернатива нажатию на кнопку Back).
- Исключенные из атак классы Активностей - какие классы исключить из атак. Допустимо указание как полного имени Activity (com.google.firebase.auth.internal.GenericIdpActivity), так и короткого, например, GenericIdpActivity.
- Исключенные из атаки роуты навигации - какие роуты исключить из атак, чтобы избежать негативного воздействия на приложение или данные.
- Список роутов для проверки - несмотря на то, что Стингрей собирает роуты для проверки как в статике, так и в динамике, какая-то часть из них может пройти мимо анализа. Если заранее известен список роутов (или хочется быть уверенным в проверке нужного роута), возможно добавить их в данный список.
- Список Payloads - список Payloads, которые будут подставляться в параметры отправляемых запросов при атаках на навигацию (помимо предопределенных в системе). По факту, это fuzzing-лист.
Важно
Чтобы все выполненные настройки применились к модулю, необходимо нажать на кнопку Изменить внизу блока настроек.
Базы данных
Модуль предназначен для сбора и анализа баз данных (включая зашифрованные), которые используются в приложении.
Этот модуль зависит от модуля Файлы приложения и анализирует данные, полученные в процессе работы последнего. Если модуль Файлы приложения выключен, включить модуль Базы данных невозможно.
Для более детального анализа приложения модулем Базы данных желательно также включить модуль Используемые файлы.
Настройки Поиск по внутренней директории и Поиск на SD карте позволяют выбрать хранилище, в котором будет производиться сбор баз данных и выполняться их анализ.
Файлы приложения
Файлы приложения - это модуль для сбора и анализа файлов, которые сохраняет приложение в своей директории во время работы.
Для архитектуры Android c помощью настроек Поиск по внутренней директории и Поиск на SD карте можно выбрать или исключить хранилище, в котором будет производиться сбор файлов и выполняться их анализ.
Примечание
Для архитектуры iOS эти настройки не предусмотрены.
Исключенные файлы
В настройках модуля можно добавлять в исключения файлы, таким образом они не будут анализироваться. По умолчанию в исключения уже добавлены несколько шаблонных строк.
Для добавления файлов в исключения необходимо нажать на кнопку Добавить напротив заголовка настройки Исключенные файлы, ввести необходимую строку в появившемся поле Значение, а затем нажать на кнопку Добавить напротив поля Значение.
Файлы можно исключать из анализа модуля следующим образом:
- /data/data/out.test.app/shared_prefs/common.xml — исключить из анализа файл common.xml, находящийся в директории shared_prefs;
- *.xml — исключить из анализа все xml-файлы;
- /data/data/out.test.app/shared_prefs/*.xml — исключить из анализа все xml-файлы, находящиеся в директории shared_prefs.
Поле Значение настройки Исключенные файлы регистронезависимо, поэтому строки *.MKV
и *.mkv
будут равнозначны.
Для удаления исключения из настройки Исключенные файлы необходимо напротив строки исключения нажать на кнопку Удалить, а затем подтвердить действие в появившемся диалоговом окне.
Исключенные директории
Аналогичным образом, чтобы добавить в исключения директорию, необходимо нажать на кнопку Добавить напротив заголовка настройки Исключенные директории и в появившееся поле Значение ввести необходимую строку, а затем нажать на кнопку Добавить напротив поля.
Директории можно исключать из анализа модуля следующим образом:
- /data/data/out.test.app/files — исключить все файлы в директории files. При этом файлы в поддиректории /data/data/out.test.app/files/temp не будут исключены;
- /data/data/out.test.app/files/* — исключить все файлы в директории files и всех ее поддиректориях.
Кроме того, для уникальных директорий можно использовать более короткую строку */files/* — она равнозначна примеру выше.
Поле Значение настройки Исключенные директории регистронезависимо, поэтому строки /data/data/out.test.app/files
и /dAtA/DaTa/out.test.APP/files
будут равнозначны.
Чтобы удалить директорию из исключений, необходимо напротив строки исключения нажать на кнопку Удалить, а затем подтвердить действие в появившемся диалоговом окне.
Важно
Чтобы все выполненные настройки применились к модулю, необходимо нажать на кнопку Изменить внизу блока настроек.
Исключенные из первичного анализа директории
Если требуется исключить директорию из анализа модулем Файлы приложения, необходимо нажать на кнопку Добавить напротив заголовка настройки Исключенные из первичного анализа директории и в появившееся поле Значение ввести необходимую строку, затем нажать на кнопку Добавить напротив поля. Исключение из первичного анализа подразумевает под собой непосредственное исключение директории из анализа модулем Файлы приложения, но на сбор данных указанным модулем настройка не влияет, поэтому анализ исключенной директории будет выполнен модулями, работа которых связана с обработкой собранных ранее данных (например, модуль Поиск ранее найденной чувствительной информации), т.е. будет выполнен вторичный анализ данных.
Исключенные из первичного анализа файлы
Аналогичным образом, чтобы исключить файл из анализа модулем Файлы приложений, необходимо нажать на кнопку Добавить напротив заголовка настройки Исключенные из первичного анализа файлы и в появившееся поле Значение ввести необходимую строку, затем нажать на кнопку Добавить напротив поля. Файл будет исключен из анализа модулем Файлы приложения, но останется в собранных данных модуля.
Мониторинг логов приложения
Мониторинг логов приложения - это модуль для мониторинга сообщений, которые приложение записывает в системный журнал.
Настройки
Для архитектуры Android в качестве настроек модуля представлены следующие данные:
- Тэг - определяет, нужно ли фильтровать сообщения для анализа по определенному тэгу.
*
означает отсутствие фильтрации - анализируем все, что есть. - Уровень, для которого отслеживать сообщения (Info, Warning, Error, Debug или Все уровни).
- Источник - не используется.
Поиск чувствительной информации по энтропии
Модуль предназначен для поиска чувствительной информации по энтропии.
Модуль зависит от модулей Файлы приложений, Мониторинг логов приложения и SAST — если все перечисленные модули отключены, то энтропийный анализ будет недоступен.
Использование данного модуля не требует запуска приложения.
Можно выбрать или исключить данные, собранные ранее модулями SAST, Мониторинг логов приложения и Файлы приложений, с помощью настроек в разделе Модули, в результатах которых будет выполняться поиск. Из данных выбранных модулей, согласно настройкам (исключения файлов, директорий и т. д.) извлекаются все строки, каждая из них разбивается на слова и для каждого слова вычисляется энтропия Шеннона. Если значение вычисленной энтропии выше, чем указанное в настройках, строка отмечается, как потенциально содержащая чувствительную информацию.
Поля Минимальная длина найденной информации и Максимальная длина найденной информации позволяют задать диапазон длины строки, которая будет попадать в анализ на энтропию.
Также задается Максимальный размер файлов, в которых будет осуществляться анализ строк, и порог срабатывания в поле Предел.
Примечание
Значения длины информации, размера файла и порога срабатывания либо можно задать стрелками, появляющимися при наведении курсора на соответствующее поле, либо ввести с помощью клавиатуры.
Кроме этого, используя поля Исключенные строки, Исключенные директории и Исключенные файлы, можно исключить из поиска соответствующие элементы.
Примечание
В данных полях поддерживается использование регулярных выражений.
Исключенные строки
В настройках модуля можно добавлять в исключения символьные строки, не являющиеся чувствительной информацией. Таким образом, они не будут включены в результаты анализа.
Для добавления в исключения символьных строк необходимо нажать кнопку Добавить справа от заголовка Исключенные строки, ввести необходимую строку в появившемся поле Значение, а затем нажать кнопку Добавить.
Исключенные директории
Аналогичным образом, чтобы добавить в исключения директорию, необходимо нажать кнопку Добавить справа от заголовка Исключенные директории, ввести необходимую строку в появившемся поле Значение, а затем нажать кнопку Добавить.
Директории можно исключать из анализа, указывая их имена (допускается использование символа «*»):
- /data/data/out.test.app/files — исключить все файлы в директории files. При этом файлы в поддиректории /data/data/out.test.app/files/temp исключены не будут;
- /data/data/out.test.app/files/* — исключить все файлы в директории files и всех ее поддиректориях.
Кроме того, для уникальных имен директорий можно использовать короткую строку */files/* — она равнозначна значению, указанному в примере выше.
Поле Значение настройки Исключенные директории не зависит от регистра — строки /data/data/out.test.app/files
и /dAtA/DaTa/out.test.APP/files
равнозначны.
Для удаления директории из списка исключений необходимо в настройке Исключенные директории справа от удаляемой строки нажать кнопку Удалить, а затем подтвердить действие в появившемся диалоговом окне.
Исключенные файлы
В настройках модуля можно добавлять в исключения файлы. Для таких файлов анализ проводиться не будет. По умолчанию в исключения уже добавлены несколько шаблонных строк.
Для добавления в исключения файлов необходимо нажать кнопку Добавить справа от заголовка Исключенные файлы, ввести необходимую строку в появившемся поле Значение, а затем нажать кнопку Добавить.
Файлы можно исключать из анализа, указывая их имена и/или директории (допускается использование символа «*»):
- /data/data/out.test.app/shared_prefs/common.xml — исключить файл common.xml в директории shared_prefs;
- *.xml — исключить все xml-файлы;
- /data/data/out.test.app/shared_prefs/*.xml — исключить все xml-файлы в директории shared_prefs.
Поле Значение настройки Исключенные файлы не зависит от регистра — строки *.MKV
и *.mkv
равнозначны.
Для удаления исключения из списка необходимо в настройке Исключенные файлы справа от удаляемой строки нажать кнопку Удалить, а затем подтвердить действие в появившемся диалоговом окне.
Дамп памяти приложения
Модуль предназначен для получения и анализа дампа памяти приложения (heapdump).
После работы с приложением с устройства из соответствующего процесса выполняется получение его памяти в соответствующем формате. Этот файл анализируется, как текстовое представление. Он доступен для скачивания и впоследствии может быть загружен в профильные инструменты по работе с подобными файлами (профилировщики памяти) в ручном режиме.
Данный модуль позволяет отслеживать хранение различной чувствительной информации в памяти дольше, чем это необходимо. Примером таких данных могут быть пароли, ключи шифрования, сессионные идентификаторы и т. д.
Информация о ключах
Модуль предназначен для анализа безопасности хранилищ, в которых сохраняются ключи шифрования.
Модуль зависит от модулей Файлы приложений, SAST и Используемые файлы — если все перечисленные модули отключены, то анализ информации о ключах будет недоступен.
Для Android-приложений с помощью настроек Поиск по внутренней директории и Поиск на SD карте можно выбрать хранилище, для которого будет выполняться анализ безопасности.
Во время анализа все файлы приложения и файлы из ресурсов (в зависимости от настроек) проходят проверку, являются ли они хранилищем ключей и хранилищем какого именно типа (bks, jks, ssh и т. д.). Также проводится анализ содержимого данных хранилищ. В случае обнаружения внутри хранилища зашифрованных данных, а также, если сам контейнер с ключами защищен паролем, проводится попытка подбора пароля из списка наиболее распространенных. В случае успеха в результирующий дефект выводится информация о пароле хранилища и его содержимом.
Уровень критичности результирующего дефекта определяется тем, что именно находится в хранилище (приватные или публичные ключи, сертификаты и т. д.) и где оно расположено (это определяет, имеют ли к нему доступ другие приложения/пользователи).
Отслеживание Activity
Модуль предназначен для мониторинга Activity, которые запускаются во время работы приложения. Помимо отслеживания факта запуска Activity, модуль также сохраняет и анализирует Intent и его содержимое.
В качестве результата работы модуля представлен полный Intent, с которым была вызвана данная Activity, и все содержимое Intent, включая дополнительные параметры, extras и т. д.
На основе этой информации осуществляется анализ того, что и каким образом передает приложение как внутри себя, так и во внешние Activity.
Отслеживание Broadcast Receiver
Отслеживание Brodcast Receiver - это модуль для мониторинга использования и регистрации BroadcastReceiver во время работы приложения.
В качестве результата работы модуля представлен полный Intent, который принимает в себя зарегистрированный в приложении Receiver, и все его содержимое, включая дополнительные параметры, extras и т.д. Отслеживаются как статические, так и динамические Broadcast Receivers.
На основе этой информации осуществляется анализ, что и каким образом получает приложение как внутри себя, так и от сторонних компонентов.
Отслеживание Broadcast Sender
Модуль предназначен для мониторинга Broadcast сообщений, которые обрабатываются в приложении.
В качестве результата работы модуля представлен полный Intent, который отправляет зарегистрированный в приложении Sender, и все содержимое Intent, включая дополнительные параметры, extras и т. д.
На основе этой информации осуществляется анализ того, что и каким образом отправляет приложение как внутри себя, так и в сторонние компоненты.
Проверка криптографии
Проверка криптографии - модуль проверки качества использования существующих методов защиты критически важной информации в целевом приложении.
При работе данного модуля производится перехват операций по шифрованию данных и проверяются аргументы, с которыми они вызваны, например:
- Длину и «случайность» (энтропию) ключа шифрования.
- Корректность выбора алгоритма шифрования, его режима и дополнения.
- Количество итераций для процессов KBDF.
- Качество используемой «соли» и вектора инициализации.
- И многие другие параметры, на основе которых принимается решение о том или ином дефекте безопасности.
Отслеживание Intent
Отслеживание Intent - это модуль для мониторинга Intent, которые используются и обрабатываются во время работы приложения. Данный модуль зависит от модулей Отслеживание Activity, Отслеживание Broadcast Receiver, Отслеживание Broadcast Sender и Отслеживание Services - если все перечисленные модули отключены, Отслеживание Intent недоступно.
Представляет собой консолидированный список всех Intent, которые принимает или обрабатывает приложение в рамках межпроцессного взаимодействия (IPC). Результаты являются суммой Intent из модулей, указанных в настройках модуля.
Отслеживание Services
Модуль предназначен для мониторинга операций с Services, которые запускает или использует приложение во время работы.
В качестве результата работы модуля представлен полный Intent, с которым были вызваны любые сервисы как внутри, так и из сторонних приложений, и все содержимое Intent, включая дополнительные параметры, extras и т. д.
На основе этой информации осуществляется анализ того, что и каким образом передает или получает приложение при взаимодействии с сервисами.
Работа с Shared Preferences
Работа с Shared Preferences - это модуль для мониторинга операций, связанных с изменением содержимого Shared Preferences.
Данный модуль частично пересекается с результатами модуля Содержимое Shared Preferences, но в данном случае это отслеживание работы в динамике. То есть, можно определить что и в какой момент записывало или считывало приложение в/из Shared Preferences. Это бывает полезно для анализа качества очистки внутренней директории приложения после logout пользователя или для мониторинга, какие чувствительные данные и какое время находились на устройстве.
Сетевая активность
Сетевая активность - это модуль, предназначенный для перехвата и анализа сетевого взаимодействия приложения с сервером.
В настройках модуля есть возможность управления отключением SSL Pinning при запуске приложения с помощью чекбокса Отключение SSL Pinning (включен по умолчанию).
При выключенном значении, отключение SSL Pinning не производится. При этом, если трафик приложения по-прежнему виден, создается дефект «Отсутствие или некорректная реализация SSL Pinning». Видимость трафика при выключенном значении означает, что приложение не проверяет сертификат сервера или чрезмерно доверяет системным сертификатам на устройстве.
При включенном значении осуществляются попытки автоматического отключения SSL Pinning при помощи переопределения методов, отвечающих за проверку сертификата пользователя. При этом, если трафик приложения перехватывается, то дефект не выводится, так как это намеренное изменение логики работы приложения.
Примечание
Если даже при включенном значении настройки, приложение работает некорректно и нет связи с сервером, это означает, что SSL Pinning осуществлен качественно и в автоматическом режиме не отключается.
Для корректной работы приложения в таком случае, рекомендуется отключение данного модуля или работа с приложением без пиннинга.
Кроме возможности отключения SSL Pinning в модуле имеются настройки:
- Включение перехвата сообщений WebSocket.
- Включение HTTP/2.
- Включение SSL Insecure.
Исключенные домены
Чтобы исключить какой-либо домен из анализа сетевого взаимодействия, необходимо нажать на кнопку Добавить напротив заголовка настройки Исключенные домены и в появившееся поле Значение ввести необходимую строку, а затем нажать на кнопку Добавить напротив поля.
Исключения бывают необходимы, так как инструмент использует принцип «прозрачного проксирования» и в результаты сканирования могут попадать сетевой трафик и данные от системных приложений Android.
Настраиваемые заголовки запросов
Параметр Настраиваемые заголовки запросов позволяет добавить в сетевые запросы заголовок и задать его значение с помощью соответствующих полей.
Важно
Чтобы применить все вновь заданные настройки модуля, необходимо нажать кнопку Изменить внизу блока настроек.
Интеграция с Oversecured
Модуль предназначен для интеграции c системой статического анализа Oversecured.
Интеграция с AppScreener
Модуль предназначен для интеграции c системой статического анализа Solar AppScreener.
Обход проверок окружения
Модуль предназначен для обхода проверок окружения и их отслеживания. Он обходит проверки приложений на эмулятор и root/Jailbreak и одновременно отслеживает их. Если Android-приложение не осуществляет проверок, добавляются дефекты «Отсутствие проверки на root-доступ» и/или «Отсутствие проверки на запуск на эмуляторе». Если приложение делает проверку только одного типа (например, ищет только файлы типа su или только подозрительные пакеты), то будут добавлены дефекты «Недостаточная проверка на root-доступ» и/или «Недостаточная проверка на запуск на эмуляторе». Если же проверка на эмулятор и проверка на root осуществляется двумя и более способами, то дефект не выводится.
Примечание
-
Модуль не может отследить, проверяет ли приложение статические поля Build.*, чтобы выявить запуск на эмуляторе. Необходимо иметь в виду, что для устранения дефекта «Недостаточная проверка на запуск на эмуляторе» необходимо реализовать три типа проверок (если один из типов это проверка статических полей).
-
Некоторые приложения могут использовать новые проверки, которые модуль не обходит. В таком случае рекомендуется обратиться в службу поддержки для изучения новых способов обхода и добавления их в данный модуль.
В настройках модуля для архитектуры Android имеется возможность включения Обхода внешнего сервиса проверки окружения, либо Отключения системного вызова kill(), которое позволяет обходить принудительное завершение приложения. Использование обеих настроек одновременно невозможно, т.к. это может повлиять на работу модуля, приложения и на результат сканирования в целом.
Модуль для архитектуры iOS обходит проверки приложений на Jailbreak и одновременно отслеживает их.
Примечание
Некоторые приложения могут использовать новые проверки, которые модуль не обходит. В таком случае рекомендуется обратиться в службу поддержки для изучения новых способов обхода и добавления их в данный модуль.
В модуле для архитектуры iOS есть достаточно большое количество настроек, которые определяют, что именно будет перехватываться и ответы от каких функций подменяться.
-
Базовые - проверки, которые реализованы в большинстве приложений для обнаружения JailBreak-доступа. В большинстве случаев включения этих настроек достаточно для того, чтобы обойти проверку в приложении.
- Подмена проверок файловой системы.
- Подмена переменных окружения.
- Подмена проверок URL-схем.
- Подмена загруженных в память библиотек.
-
Расширение на фреймворки - перехват методов для разных популярных фреймворков по определению Jailbreak.
- Обход проверок фреймворка Foundation.
- Обход проверок других фреймворков.
-
Дополнительные - проверки, которые не так часто реализуются, но с их помощью можно отследить наличие Jailbreak на устройстве.
- Подмена вызовов Syscall.
- Скрытие известных Jailbreak-приложений.
- Подмена запросов на Symlinks.
- Обход проверок в Obj Runtime.
- Скрытие отладки приложения.
- Обход проверок MachBootstrap.
-
Опасные - настройки, при включении которых приложение с большой долей вероятности может не запуститься. Но в некоторых случаях, они помогают обойти самые изощренные проверки.
- Обход проверок в памяти.
- Усиленная песочница приложения.
- Обход низкоуровневых проверок.
- Обход проверок на Tweaks.
-
Проверки в Runtime - настройки, которые корректируют работу модуля относительно среды выполнения кода приложения.
- Обход проверок Flutter-приложений.
- Обход защиты от записи экрана.
Важно
Чтобы все выполненные настройки применились к модулю, необходимо нажать на кнопку Изменить внизу блока настроек.
SAST
Модуль предназначен для статического анализа исходного кода приложения и содержимого сборки. Данный модуль для своей работы не требует установки и запуска приложения.
Обфускация
Если выбрана настройка Проверка обфускации (по умолчанию), будет выполнен анализ уровня обфускации приложения. По умолчанию минимальный уровень обфускации — 20%. Задать минимально допустимый уровень для приложения можно в поле Предел. Кроме того, в полях Максимальная длина имени и Минимальное количество цифр можно задать проверку длины и читаемости имен после обфускации соответственно.
Значения допустимого предела обфускации, длины имен и количества цифр можно задать стрелками, появляющимися при наведении на соответствующее поле, либо ввести с помощью клавиатуры.
Если выбрана настройка Декомпиляция (по умолчанию), будет выполнена попытка получения исходного кода приложения с дальнейшим анализом результатов декомпиляции. В зависимости от объема и сложности приложения, эта процедура может потребовать значительного времени и вычислительных ресурсов.
Примечание
Для архитектуры iOS настройки обфускации и декомпиляции не предусмотрены.
Исключенные директории
Чтобы добавить директорию в исключения, необходимо нажать кнопку Добавить справа от заголовка Исключенные директории, ввести необходимую строку в появившемся поле Значение, а затем нажать кнопку Добавить.
Директории можно исключать из анализа, указывая их имена (допускается использование символа «*»):
- /data/data/out.test.app/files — исключить все файлы в директории files. При этом файлы в поддиректории /data/data/out.test.app/files/temp исключены не будут;
- /data/data/out.test.app/files/* — исключить все файлы в директории files и всех ее поддиректориях.
Кроме того, для уникальных имен директорий можно использовать короткую строку */files/* — она равнозначна значению, указанному в примере выше.
Поле Значение настройки Исключенные директории не зависит от регистра — строки /data/data/out.test.app/files
и /dAtA/DaTa/out.test.APP/files
равнозначны.
Для удаления директории из списка исключений необходимо в настройке Исключенные директории справа от удаляемой строки нажать кнопку Удалить, а затем подтвердить действие в появившемся диалоговом окне.
Расширения файлов
Для добавления в исключения файлов по расширению необходимо нажать кнопку Добавить справа от заголовка Расширения файлов, ввести необходимое расширение (например, wav
— без кавычек или других символов) в появившемся поле Значение, а затем нажать кнопку Добавить.
Поле Значение настройки Расширения файлов не зависит от регистра — строки MKV
и mkv
равнозначны.
Для удаления исключения из настройки Расширения файлов необходимо справа от удаляемой строки нажать кнопку Удалить, а затем подтвердить действие в появившемся диалоговом окне.
Исключенные файлы
Для архитектуры iOS также имеется настройка, позволяющая непосредственно указать файлы, которые необходимо исключить из анализа модулем. По умолчанию в исключения уже добавлены iTunesMetadata.plist и несколько других файлов.
Для добавления в исключения файлов необходимо нажать кнопку Добавить справа от заголовка Исключенные файлы, ввести необходимую строку в появившемся поле Значение, а затем нажать кнопку Добавить.
Файлы можно исключать из анализа, указывая их имена и расширения.
Поле Значение настройки Исключенные файлы не зависит от регистра — строки Сommon.XML
и common.xml
равнозначны.
Для удаления исключения из списка необходимо в настройке Исключенные файлы справа от удаляемой строки нажать кнопку Удалить, а затем подтвердить действие в появившемся диалоговом окне.
Примечание
Для архитектуры Android возможность исключения файлов по имени не предусмотрена.
Поиск ранее найденной чувствительной информации
Модуль позволяет проверить отсутствие найденной одним из модулей чувствительной информации в данных других модулей.
Для архитектуры Android данный модуль основывается на результатах работы модулей Файлы приложения, Мониторинг логов приложения, Дамп памяти приложения, Информация о ключах, Отслеживание Activity, Отслеживание Broadcast Sender, Отслеживание Services, Работа с Shared Preferences, Сетевая активность, SAST и Используемые файлы. В них же выполняется поиск ранее найденной чувствительной информации. Если все перечисленные выше модули отключены, модуль Поиск ранее найденной чувствительной информации будет недоступен.
Для архитектуры iOS данный модуль основывается на результатах работы модулей Дамп архива приложения, Файлы приложения, Мониторинг логов приложения, Информация о ключах и SAST.
Настройка Поиск производных от найденной информации позволяет провести более тщательный анализ данных для обнаружения чувствительной информации, которая была некачественно «скрыта». В качестве производных будут взяты хэш-суммы md5, sha1, sha256, sha512 и значение base64. Все эти производные вместе с исходным значением будут искаться во всех собранных данных приложения. Такой подход хорошо работает, если при аутентификации на сервере мы получили сессионный идентификатор и он, например, по ошибке попал в системный журнал или был закэширован на файловой системе. Другой частый случай — это сохранение хэш-значения чувствительной информации (например, md5 от пароля пользователя) в файлах приложения.
В настройках можно исключить модули, в собранных данных которых не должен выполняться поиск ранее найденной информации.
Чтобы задать минимальную длину информации, которую модуль будет считать чувствительной, необходимо в поле Минимальная длина найденной информации задать нужное значение (по умолчанию — 3). Значение можно задать стрелками, появляющимися при наведении на поле, либо ввести с помощью клавиатуры.
Список исключений
В настройках модуля можно добавлять в исключения символьные строки, не являющиеся чувствительной информацией. Таким образом, они не будут включены в результаты анализа.
Для добавления в исключения символьных строк необходимо нажать кнопку Добавить справа от заголовка Список исключений, ввести необходимую строку в появившемся поле Значение, а затем нажать кнопку Добавить.
Содержимое Shared Preferences
Содержимое Shared Preferences - это модуль, предоставляющий информацию о содержимом Shared Prefences на момент окончания сканирования.
Модуль зависит от модуля Файлы приложения, так как является производным от него. То есть, из файлов приложения отбираются файлы, относящиеся к Shared Preferences и выводятся в качестве результатов работы отдельного модуля для удобства просмотра и навигации.
Мониторинг логов системы
Мониторинг логов системы - это модуль сбора записей журнала системы (устройства), рассылаемых различными методами целевого приложения.
Модуль работает по принципу перехвата сообщений, которые отправляются при помощи Java-метода Log.*()
.
IAST модуль
Модуль реализует IAST анализ, основанный на построении графа вызовов методов, которые используются в построении классического tainted flow, но в динамике.
Данный модуль определяет все потенциальные точки входа в приложение, в которые могут попасть контролируемые пользователем данные, и проводит отслеживание этих данных во время работы приложения. То есть модуль отслеживает, как именно эти данные в дальнейшем используются и куда попадают. В случае попадания этих данных в потенциально опасные точки выхода из приложения (обращение к файловой системе, открытие URL в WebView, попадание данных в запрос к базе данных и т. д.), выдается соответствующий этим точкам выхода дефект. К примеру, если данные поступили от AppLink/DeepLink в одном из параметров и в дальнейшем попали в метод открытия WebView, то будет заведен дефект «Возможность открытия произвольного URL в WebView». Аналогично проводится дополнительная валидация потенциальных уязвимостей.
В рамках работы данного модуля предусмотрен механизм автоматического вызова различных экспортируемых (доступных для других пользователей и приложений компонентов и методов) данных для уточнения анализа и улучшения покрытия вне зависимости от действий пользователя в приложении во время сканирования.
В результате выявления дефекта показан полный flow (путь) данных от точки входа в приложение до точки выхода. Несмотря на то, что это динамика, модуль позволяет определить, где именно в декомпилированном коде была вызвана указанная в деталях дефекта функция, что позволяет построить путь движения данных не только в динамике, но и по коду приложения.
Поиск секретов сторонних сервисов
Поиск секретов сторонних сервисов - это модуль проверки валидности найденных правилами (см. разделы «Правила» проекта, «Правила анализа на уровне компании») строк, отвечающих типичным признакам секретов сторонних сервисов. Настройками модуля можно определить, в собранных данных каких модулей будет выполняться поиск и проверка секретов: SAST, Мониторинг логов приложения, Используемые файлы, Файлы приложения. Если ни один из перечисленных модулей не выбран, модуль Поиск секретов сторонних сервисов будет недоступен.
Так же можно выбрать сервисы и типы секретов, поиск и проверка которых будет выполняться модулем. Следует обратить внимание, что для JWT-токенов имеется настройка срока жизни ключа (по умолчанию 5 дней), которая отвечает за критичность уязвимости в случае подтверждения валидности токена.
Отдельно стоит отметить опцию Multi secret.
В некоторых сервисах для аутентификации пользователя или клиента применяется несколько значений, например, client_id и client_token, а иногда количество может доходить до 4-5 значений. При этом однозначно идентифицировать, что найденный client_id будет относиться к конкретному сервису невозможно из-за слишком общего названия. Поэтому вычисляется декартово произведение всех найденных и подходящих секретов от каждого сервиса и они проверяются для каждого по очереди. Это может занять определенное время, поэтому данная настройка вынесена отдельно. И для ускорения работы или отсутствия доступа к сервисам можно включать или выключать данную опцию.
Используемые файлы
Модуль предназначен для сбора и анализа файлов, которые приложение использует во время работы. Это могут быть как файлы внутри директории приложения, так и любые другие файлы в системе.
Данный модуль зависит от модуля Файлы приложения, так как является производным от него.
При этом данный модуль отслеживает любые обращения к файлам в системе, даже если их фактически нет. В процессе проверки наличия на устройстве root-доступа могут быть вызваны функции проверки файла в определенных директориях или попытка записи вне директории приложения. Такие методы также отслеживаются и логируются.
В результатах сканирования можно просмотреть содержимое файлов, к которым обращалось приложение во время работы, для отслеживания хранения в них различной чувствительной информации.
Дамп архива приложения
Модуль предназначен для анализа содержимого архива приложения. Он позволяет скачать из дампа памяти на устройстве расшифрованный бинарный файл для его последующего анализа и поиска в нем чувствительной информации.
Для iOS настройки модуля позволяют задать минимальную длину информации, которая будет взята на анализ предустановленными правилами (см. разделы «Правила» проекта, «Правила анализа на уровне компании»). По умолчанию минимальная длина - 5 символов.
Проверка возможности использования пользовательских клавиатур
Модуль предназначен для анализа приложения на возможность использования пользовательских клавиатур, которые заменяют собой системные.
Использование сторонних клавиатур и делегация им полного доступа (а это необходимо для корректной работы) позволяет устанавливать интернет-соединения и получать доступ к другим системным ресурсам, что может повлечь за собой утечку данных пользователей.
Анализ KeyChain
Модуль предназначен для получения данных из KeyChain и анализа их содержимого на предмет хранения чувствительной информации в открытом виде или некорректных настроек при сохранении. Выполняется на этапе анализа (после работы с приложением).
Для работы модуля требуется запуск приложения на устройстве.
Анализ компонент с открытым исходным кодом
Анализ компонент с открытым исходным кодом - модуль автоматизированного SCA-анализа, или анализа состава приложения с целью нахождения фрагментов с открытым исходным кодом (OSS, Open Source Software) и их дальнейшей проверки.
Данный модуль предоставляет возможность определить подверженность приложения атаке на цепочку поставок под названием MavenGate. Модуль определяет, есть ли среди используемых библиотек потенциально опасные, домен для которых свободен или был куплен, начиная с января 2024 года.
Для работы модулю необходимо предоставить SBOM-файл (см. раздел «Запуск сканирования»), сгенерированный при помощи инструмента CycloneDX. Если файл не загружен, во время сканирования модуль запускаться не будет.
Позже, данный модуль будет работать для определения уязвимостей в OpenSource-компонентах из SBOM-файла, помогая не допустить проблем в используемых библиотеках.
Настройки
Настройки представляют из себя список доменов/библиотек, которые исключены из поиска для ускорения времени работы и возможности внести внутренние библиотеки в список исключений.
Каждый домен представлен строкой, которая может быть как полной, например android.com или включать в себя символ «*», означающий, что на его месте может быть любой набор букв (wildcard).
Статический анализатор потока данных
Статический анализатор потока данных - модуль, который анализирует байт-код приложения методом taint-анализа.
Приложение дизассемблируется, после чего определяются входные точки (как через UI от пользователя, так и для IPC с другими приложениями). От этих входных точек по полученному байт-коду строятся графы вызовов и анализируются потоки данных. Если один из возможных графов приводит к потенциально опасным точкам (запись в базу, передача в WebView и т.д.), генерируется соответствующий дефект.
У модуля на данный момент нет настроек.