Небезопасные настройки в AndroidManifest.xml. Флаг android:requestLegacyExternalStorage
Критичность: НИЗКИЙ | |
Способ обнаружения: SAST, APK |
Описание
Приложение Android, собранное с атрибутом android:requestLegacyExternalStorage=true
в AndroidManifest.xml, предоставляет доступ к каталогам и различным типам мультимедийных файлов, хранящихся во внешнем хранилище. Этот флаг используется в старой модели доступа к файлам, которая не поддерживается в новых версиях Android.
- Если в AndroidManifest присутствует атрибут
android:requestLegacyExternalStorage=true
иtargetSDK >=30
, то он игнорируется системой, так как, начиная с Android 11, поддерживается только scoped-хранилище данных. - Если
targetSDK = 29
— дефолтное значение атрибута false (если он не представлен в манифесте). - Если
targetSDK >= 28
— дефолтное значение атрибута true (если он не представлен в манифесте).
Пример уязвимой конфигурации (файл 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:icon="@drawable/ic_launcher"
android:requestLegacyExternalStorage="true"
android:label="@string/app_name" >
<activity
android:name=".PrivateActivity"
android:label="@string/app_name"
android:exported="false" />
</application>
</manifest>
Рекомендации
Рекомендуется не устанавливать атрибут android:requestLegacyExternalStorage
и использовать только scoped-хранилище, чтобы гарантировать лучшую защиту приложений и пользовательских данных на внешнем хранилище.