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

Описание
В настройках AndroidManifest выставлен атрибут android:usesCleartextTraffic=true, разрешающий приложению взаимодействие с любыми серверами по незащищенному протоколу http. Данная настройка зависит от нескольких параметров и её значение по умолчанию также зависит от targetSDK, указанный в манифесте приложения:
Если в AndroidManifest присутствует атрибут android:networkSecurityConfig — то значение android:usesCleartextTraffic не учитывается, так как все настройки сети определяются внутри файла сетевой конфигурации.
- Если targetSDK =< 27 — дефолтное значение атрибута true (если он не представлен в манифесте)
- Если targetSDK >= 28 — дефолтное значение атрибута 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="true" android:icon="@drawable/ic_launcher" android:usesCleartextTraffic="true" android:label="@string/app_name" > <activity android:name=".PrivateActivity" android:label="@string/app_name" android:exported="false" /> </application> </manifest>
Рекомендации
Рекомендуется явно отключить возможность передачи данных по незащищенному протоколу http, для этого необходимо выставить атрибуту android:usesCleartextTraffic значение 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="true" android:icon="@drawable/ic_launcher" android:usesCleartextTraffic="false" android:label="@string/app_name" > <activity android:name=".PrivateActivity" android:label="@string/app_name" android:exported="false" /> </application> </manifest>