Приложение разрешает сетевые соединения по протоколу HTTP
Критичность: ВЫСОКИЙ | |
Способ обнаружения: 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>