Категория OWASP: MASVS-ПЛАТФОРМА: Взаимодействие платформы
Обзор
Tapjacking — это эквивалент веб-уязвимости кликджекинга в Android-приложениях. Вредоносное приложение обманом заставляет пользователя нажать на элемент управления, связанный с безопасностью (кнопку подтверждения и т. д.), скрывая пользовательский интерфейс наложением или другими способами. На этой странице мы различаем два варианта атаки: полная и частичная окклюзия. При полной окклюзии злоумышленник перекрывает область касания, а при частичной окклюзии область касания остается незакрытой.
Влияние
Атаки Tapjacking используются для того, чтобы обманом заставить пользователей выполнить определенные действия. Воздействие зависит от действия, на которое направлен злоумышленник.
Риск: Полная окклюзия
При полной окклюзии злоумышленник перекрывает область касания, чтобы перехватить событие касания:
Смягчения
Полную окклюзию можно предотвратить, установив в коде View.setFilterTouchesWhenObscured(true)
. Это блокирует касания, передаваемые наложением. Если вы предпочитаете декларативный подход, вы также можете добавить android:filterTouchesWhenObscured="true"
в файл макета для объекта View
, который вы хотите защитить.
Риск: Частичная окклюзия
При атаках частичной окклюзии область прикосновения остается незатененной:
Смягчения
Частичная окклюзия смягчается путем игнорирования вручную событий касания с флагом FLAG_WINDOW_IS_PARTIALLY_OBSCURED
. Защиты по умолчанию от этого сценария не существует.
Потенциальное предостережение: это средство защиты может помешать работе безобидных приложений. В некоторых случаях развертывание этого исправления невозможно, так как оно отрицательно повлияет на взаимодействие с пользователем, если частичная окклюзия вызвана безопасным приложением.
Специфические риски
В этом разделе собраны риски, которые требуют нестандартных стратегий смягчения или были устранены на определенном уровне SDK, и приведены здесь для полноты картины.
Риск: android.Manifest.permission.SYSTEM_ALERT_WINDOW
Разрешение SYSTEM_ALERT_WINDOW
позволяет приложению создавать окно, отображаемое поверх всех приложений.
Смягчения
В новых версиях Android реализовано несколько мер по снижению рисков, в том числе следующие:
- В Android 6 (уровень API 23) и более поздних версиях пользователи должны явно предоставить приложению разрешение на создание окна наложения.
- В Android 12 (уровень API 31) и более поздних версиях приложения могут передавать
true
вWindow.setHideOverlayWindows()
.
Риск: индивидуальный тост
Злоумышленник может использовать Toast.setView()
для настройки внешнего вида всплывающего сообщения. В Android 10 (уровень API 29) и более ранних версиях вредоносные приложения могут запускать такие всплывающие уведомления в фоновом режиме.
Смягчения
Если приложение предназначено для Android 11 (уровень API 30) или выше, система блокирует фоновые пользовательские всплывающие уведомления. Однако в некоторых случаях этого смягчения можно обойти, используя Toast Burst , когда злоумышленник ставит в очередь несколько всплывающих уведомлений, находясь на переднем плане, и они продолжают запускаться даже после того, как приложение переходит в фоновый режим.
Фоновые всплывающие уведомления и пакетные атаки полностью устранены начиная с Android 12 (уровень API 31).
Риск: сэндвич активности
Если вредоносному приложению удается убедить пользователя открыть его, оно все равно может запустить действие из приложения-жертвы и впоследствии наложить его на свое собственное действие, образуя сэндвич действий и создавая атаку частичной окклюзии.
Смягчения
См. общие меры по смягчению последствий частичной окклюзии. Для обеспечения глубокой защиты убедитесь, что вы не экспортируете действия, которые не нужно экспортировать, чтобы злоумышленник не смог объединить их.
Ресурсы
{% дословно %}Рекомендуется для вас
- Примечание. Текст ссылки отображается, когда JavaScript отключен.
- Android: экспортировано
- # Управление ключами {:#key-management}
- Запускайте встроенный код DEX прямо из APK