Перейти к содержанию

Отстуствует проверка блокировки экрана

Описание

Приложение не проверяет, установлен ли на устройстве надёжный экран блокировки (ПИН-код, пароль, графический ключ или биометрия) до выполнения чувствительных операций — например, генерации ключей, расшифровки токенов или запуска платёжного сценария.

На Android такую проверку можно выполнить через:

val km = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
if (!km.isDeviceSecure) {
    // Устройство без PIN/пароля — повышенный риск
}

или isKeyguardSecure (до API 23). (Android Developers, mas.owasp.org)

OWASP MASVS прямо рекомендует убеждаться, что устройство защищено экраном блокировки перед использованием локального хранилища или KeyStore-ключей. (mas.owasp.org)

Потенциальные последствия

  • Неавторизованный доступ к данным — злоумышленник, получив физический доступ к разблокированному устройству без PIN имеет существенно больше возможностей
  • Обход биометрии: при использовании KeyStore-ключей с флагом setUserAuthenticationRequired(true) аутентификация не сработает, если на устройстве нет защищённого экрана блокировки.
  • Несоответствие требованиям MASVS-RESILIENCE и политикам банков/финтех-приложений о необходимости device-level security.
  • Риск для корпоративных устройств — потерянный телефон без PIN значит мгновенный доступ к внутрикорпоративным данным.

Рекомендации

  1. Проверяйте isDeviceSecure() / isKeyguardSecure() и прекращайте работу чувствительных функций либо выводите предупреждение:

    if (!km.isDeviceSecure) {
        showLockRequiredDialog()
        return
    }
    
  2. Откажитесь от генерации/использования KeyStore-ключей если устройство не защищено; предложите пользователю настроить PIN/Face/Fingerprint.

Дополнительные рекомендации

  • Сообщайте пользователю причину ограничения (диалог «Для использования приложения установите PIN или биометрию»).
  • На корпоративном уровне применяйте MDM-профили, запрещающие запуск приложения при отсутствии экрана блокировки.

Ссылки

  1. KeyguardManager — isDeviceSecure() (Android Developers)
  2. OWASP MASVS — MASWE-0008: Missing Device Secure Lock Verification (mas.owasp.org)
  3. MASVS Test 0247 — Проверка защищённой блокировки экрана (mas.owasp.org)
  4. Android Developers — Secure sensitive activities (FLAG_SECURE) (Android Developers)
  5. Medium — Detecting screen-lock state in Android (medium.com)
К началу