Критичность: НИЗКИЙ
Способ обнаружения: SAST, APK

Описание

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

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

 

Рекомендации

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

Одним из распространенных решений является использований правил встроенного обфускатора ProGuard, для автоматического включения / выключения обфускации в зависимости от типа сборки (release / debug).

Пример настроек ProGuard:

optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-dontpreverify
-verbose
-dump class_files.txt
-printseeds seeds.txt
-printusage unused.txt
-printmapping mapping.txt
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

-allowaccessmodification
-keepattributes *Annotation*
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable

Включение использования ProGuard для релизной сборки приложения:

buildTypes {
    ...
    release {
        minifyEnabled true
        proguardFiles 'proguard-rules.pro', getDefaultProguardFile('proguard-android.txt')
    }
}

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

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

Предыдущая Возможность создания резервной копии приложения
Следующая Слабый пароль шифрования базы данных
Содержание: