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

Описание

Приложение Android, собранное с включенным режимом отладки (флаг android:debuggable = True в AndroidManifest.xml) может позволить злоумышленнику получить доступ к конфиденциальной информации, контролировать поток выполнения приложения и также получить возможность выполнение кода в контексте приложения.

 

Пример уязвимого кода (файл AndroidManifest.xml)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.appsec.android.activity.privateactivity" >

<application
<!-- *** Включенние отладочного режима *** -->
android:debuggable="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >

<activity
android:name=".PrivateActivity"
android:label="@string/app_name"
android:exported="false" />

</application>
</manifest>

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

При сборке релизной версии приложения убедитесь, что отключена возможность отладки приложения. Отключить возможность отладки можно удалив атрибут android: debuggable из тега <application> в файле манифеста или установив для атрибута android: debuggable значение false в файле манифеста.

 Пример безопасного кода

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.appsec.android.activity.privateactivity" >

<application
<!-- *** Выключенние отладочного режима *** -->
android:debuggable="false"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >

<activity
android:name=".PrivateActivity"
android:label="@string/app_name"
android:exported="false" />

</application>
</manifest>

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

android {
    defaultConfig {
        ...
        ...
    }
    buildTypes {
        release {
            // *** Отключение отладочного режима для релизной сборки приложения *** //
            debuggable false
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

        debug {
            applicationIdSuffix ".debug"
            // *** Включение отладочного режима для целей разработки *** //
            debuggable true
        }
Предыдущая Вывод sensitive-информации в системный лог
Следующая Небезопасный алгоритм подписи
Содержание: