Приложение не обфусцировано
Критичность: НИЗКИЙ | |
Способ обнаружения: 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
-repackageclasses ''
Включение использования ProGuard для релизной сборки приложения:
buildTypes {
...
release {
minifyEnabled true
proguardFiles 'proguard-rules.pro', getDefaultProguardFile('proguard-android.txt')
}
}
Также хорошей практикой может служит обфускация используемых в проекте библиотек с открытым исходным кодом. В последнее время все больше и больше библиотек распространяются уже с готовыми конфигурационными файлами для обфускации. ProGuard умеет заглядывать внутрь архива, находить конфигурационные файлы библиотеки и добавлять его к остальным опциям. Проверьте каждую библиотеку, которую вы используете на наличие такого файла.
Если авторы библиотеки не упаковывают конфиг в архив, возможно они позаботились и написали правила на своем сайте, страничке репозитория или в README файле. Попробуйте самостоятельно найти конфиг для той версии библиотеки, которую вы используете.