Рекомендации по безопасности для резервного копирования

Категория OWASP: MASVS-CODE: Качество кода

Обзор

Резервное копирование приложений направлено на сохранение данных пользователей, чтобы их можно было позже восстановить на новом устройстве или в случае потери данных. Существующие рекомендации по безопасности в отношении резервного копирования приложений различаются в зависимости от версии Android и производителя устройства. Общей темой является то, что эти рекомендации направлены на предотвращение утечки конфиденциальных данных.

Стандартная система резервного копирования Android обеспечивает наиболее безопасное, надежное и простое решение для приложений по резервному копированию своих данных в облако или переносу данных на новое устройство с помощью автоматического резервного копирования (которое включено по умолчанию , не требует каких-либо действий для реализации и может также может быть расширен) и резервное копирование ключ-значение . Мы рекомендуем использовать это решение, поскольку оно сохраняет полученные данные резервной копии в каталогах, к которым не могут получить доступ другие 3p-приложения, а также облегчает шифрование при хранении, шифрование при передаче и конфигурации, позволяющие исключать конфиденциальные данные из резервных копий.

Если вместо этого в приложении реализовано решение для резервного копирования, не зависящее от стандартной системы резервного копирования Android, это может увеличить вероятность ошибок, приводящих к утечке конфиденциальных данных. Примеры нестандартных решений резервного копирования, подвергающих утечке пользовательские данные, включают приложения, предлагающие возможность «экспорта» или «резервного копирования», которая создает копию данных приложения в каталогах, доступных для чтения другими приложениями, и, следовательно, подвержена утечке (либо напрямую или через другие уязвимости).

Влияние

Соблюдение рекомендаций по безопасности при настройке резервного копирования приложений предотвращает потенциальную утечку конфиденциальных данных, которые могут содержать резервные копии. В зависимости от фактических данных и намерений злоумышленника утечка конфиденциальных данных может привести к раскрытию информации, выдаче себя за пользователя и финансовым потерям.

Смягчения

Используйте стандартную систему резервного копирования Android.

Стандартная система резервного копирования Android всегда шифрует данные резервного копирования при передаче и хранении. Это шифрование применяется независимо от используемой версии Android и наличия на вашем устройстве экрана блокировки. Начиная с Android 9, если на устройстве установлен экран блокировки, то данные резервной копии не только шифруются, но и шифруются ключом, неизвестным Google (секрет экрана блокировки защищает ключ шифрования, обеспечивая таким образом сквозное шифрование). ).

В целом не забывайте соблюдать рекомендации по хранению и безопасности данных .

Если ваша резервная копия содержит особенно конфиденциальные данные, мы рекомендуем либо исключить эти данные, либо, если вы не можете их исключить, потребовать сквозного шифрования, как описано в следующем разделе.

Исключение данных из резервной копии

Вы можете указать, какие данные следует исключить из резервной копии, с помощью файла правил, который обычно называется backup_rules.xml и размещается в папке приложения res/xml . Существуют некоторые различия в настройке правил резервного копирования в зависимости от используемой версии Android:

Затем настройте файл backup_rules.xml в соответствии с требованиями к сохранению данных и безопасности приложения, следуя обновленному формату конфигурации .

Формат, необходимый для конфигурации файла backup_rules.xml , позволяет разработчикам определять собственные правила резервного копирования как для передачи в облаке, так и для передачи с устройства на устройство (D2D) . Если атрибут <device-transfer> не установлен, все данные приложения будут перенесены во время миграции D2D. Важно подчеркнуть, что даже если целевое приложение ориентировано на Android 12 или выше, для устройств под управлением Android 11 (уровень API 30) всегда следует указывать отдельный файл с дополнительным набором правил резервного копирования .

  • Для Android версии 11 и ниже добавьте атрибут android:fullBackupContent к элементу <application> в AndroidManifest.xml :
  • xml xml <application android:name="com.example.foo" android:fullBackupContent="@xml/backup_rules_full"> … </application>

Затем настройте файл backup_rules.xml в соответствии с требованиями к сохранению данных и безопасности приложения, используя синтаксис, описанный в статье о резервном копировании пользовательских данных .

Требуется сквозное шифрование

Если вы не можете исключить конфиденциальные данные из резервной копии, мы рекомендуем включить сквозное шифрование, что означает разрешение резервного копирования только на Android 9 или более поздней версии и только при установленном экране блокировки. Этого можно добиться, используя флаг requireFlags="clientSideEncryption" , который необходимо переименовать в disableIfNoEncryptionCapabilities и установить в true начиная с Android 12 .

Если вы не можете использовать стандартную систему резервного копирования Android

Если вы не можете использовать стандартную систему резервного копирования Android, то безопасное хранение данных резервной копии, а также указание того, какие данные следует исключить из резервной копии, становится более сложной задачей. Это необходимо указать на уровне кода, и, следовательно, оно подвержено ошибкам и риску утечки данных. В этом сценарии также рекомендуется регулярно тестировать вашу реализацию, чтобы убедиться в отсутствии изменений в ожидаемом поведении резервного копирования.

Ресурсы