Небезопасные настройки в AndroidManifest.xml. Флаг android:hasFragileUserData
Критичность: НИЗКИЙ | |
Способ обнаружения: SAST, APK |
Описание
Атрибут android:hasFragileUserData
определяет, показывать ли пользователю запрос на сохранение данных приложения, когда он его удаляет. Значение по умолчанию — false
. Работает с android>=10
(версия sdk: compileSdkVersion>=29
).
Приложение, собранное без явно определенного флага android:hasFragileUserData
в AndroidManifest.xml, не дает понять, обрабатывает ли оно важные пользовательские данные или нет. Если флаг выставлен со значением true
, но приложение хранит важные данные, есть риск оставить их на устройстве после удаления. Для этого пользователь должен включить тумблер Keep app data
при удалении приложения.
В результате данные как во внутреннем хранилище (/data/data/<package_name>
), так и во внешнем (в общем случае /storage/sdcard0/Android/data/<package_name>/
) не будут удалены.
Удобно использовать флаг android:hasFragileUserData
, если необходимо временно удалить приложение с устройства, а впоследствии установить его обратно и получить такое же состояние.
Однако злоумышленник, установивший переподписанное apk с таким же именем пакета, будет иметь доступ к этим данным.
Рекомендации
Рекомендуется явно указать данное значение, чтобы однозначно определить, обрабатывает ли приложение важные пользовательские данные или нет.
Пример безопасного кода (файл 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:label="@string/app_name"
android:hasFragileUserData="false" >
</application>
</manifest>