Категория OWASP: MASVS-PLATFORM: Взаимодействие платформ
Обзор
Tapjacking — это аналог веб-уязвимости clickjacking для Android-приложений: вредоносное приложение обманным путём заставляет пользователя нажать элемент управления, важный для безопасности (кнопку подтверждения и т. д.), скрывая пользовательский интерфейс наложением или другими способами. На этой странице мы различаем два варианта атаки: полное и частичное перекрытие. При полном перекрытии злоумышленник перекрывает сенсорную область, в то время как при частичном перекрытии сенсорная область остаётся открытой.
Влияние
Атаки с использованием метода тапджекинга (Tapjacking) используются для обманного вынуждения пользователей выполнить определённые действия. Результат зависит от действия, на которое нацелен злоумышленник.
Риск: Полная окклюзия
При полной окклюзии злоумышленник перекрывает область касания, чтобы перехватить событие касания:
Смягчение последствий
Полное перекрытие предотвращается установкой в коде свойства View.setFilterTouchesWhenObscured(true)
. Это блокирует касания, передаваемые через наложение. Если вы предпочитаете декларативный подход, вы также можете добавить android:filterTouchesWhenObscured="true"
в файл макета для объекта View
, который вы хотите защитить.
Риск: частичная окклюзия
При приступах частичной окклюзии зона касания остается открытой:
Смягчение последствий
Вы можете устранить частичное перекрытие, вручную игнорируя события касания с флагом FLAG_WINDOW_IS_PARTIALLY_OBSCURED
. Стандартных мер защиты от этого сценария нет.
Android 16 и accessibilityDataSensitive
: Начиная с Android 16 (уровень API 16) и выше, разработчики могут использовать флаг accessibilityDataSensitive
для дополнительной защиты конфиденциальных данных от вредоносных служб доступности, которые не являются легитимными инструментами обеспечения доступности. Когда этот флаг установлен для конфиденциальных представлений (например, экранов входа, экранов подтверждения транзакций), он запрещает приложениям с разрешением на доступ к данным читать конфиденциальные данные или взаимодействовать с ними, если только они не объявлены как isA11yTool=true
в манифесте. Это обеспечивает более надежную защиту на системном уровне от перехвата данных и атак с использованием инъекций кликов, характерных для сценариев частичного перекрытия. Разработчики часто могут неявно включить accessibilityDataSensitive
, указав android:filterTouchesWhenObscured="true"
в своих файлах макета.
Конкретные риски
В этом разделе собраны риски, требующие нестандартных стратегий смягчения или смягченные на определенном уровне 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 (взрыва Toast) , когда злоумышленник помещает несколько уведомлений в очередь, находясь на переднем плане, и они продолжают запускаться даже после перехода приложения в фоновый режим.
Начиная с Android 12 (уровень API 31) фоновые уведомления и атаки с использованием пакетных уведомлений полностью нейтрализованы.
Риск: сэндвич с активностью
Если вредоносному приложению удастся убедить пользователя открыть его, оно все равно может запустить активность из приложения-жертвы и впоследствии наложить на нее свою собственную активность, формируя сэндвич активности и создавая атаку частичной окклюзии.
Смягчение последствий
См. общие меры по снижению риска частичной окклюзии. Для обеспечения глубокой защиты убедитесь, что вы не экспортируете действия, которые не требуют экспорта, чтобы злоумышленник не смог их скрыть.
Ресурсы
{% дословно %}Рекомендовано для вас
- Примечание: текст ссылки отображается, когда JavaScript отключен.
- андроид:экспортировано
- # Управление ключами {:#key-management}
- Запустить встроенный код DEX непосредственно из APK
Категория OWASP: MASVS-PLATFORM: Взаимодействие платформ
Обзор
Tapjacking — это аналог веб-уязвимости clickjacking для Android-приложений: вредоносное приложение обманным путём заставляет пользователя нажать элемент управления, важный для безопасности (кнопку подтверждения и т. д.), скрывая пользовательский интерфейс наложением или другими способами. На этой странице мы различаем два варианта атаки: полное и частичное перекрытие. При полном перекрытии злоумышленник перекрывает сенсорную область, в то время как при частичном перекрытии сенсорная область остаётся открытой.
Влияние
Атаки с использованием метода тапджекинга (Tapjacking) используются для обманного вынуждения пользователей выполнить определённые действия. Результат зависит от действия, на которое нацелен злоумышленник.
Риск: Полная окклюзия
При полной окклюзии злоумышленник перекрывает область касания, чтобы перехватить событие касания:
Смягчение последствий
Полное перекрытие предотвращается установкой в коде свойства View.setFilterTouchesWhenObscured(true)
. Это блокирует касания, передаваемые через наложение. Если вы предпочитаете декларативный подход, вы также можете добавить android:filterTouchesWhenObscured="true"
в файл макета для объекта View
, который вы хотите защитить.
Риск: частичная окклюзия
При приступах частичной окклюзии зона касания остается открытой:
Смягчение последствий
Вы можете устранить частичное перекрытие, вручную игнорируя события касания с флагом FLAG_WINDOW_IS_PARTIALLY_OBSCURED
. Стандартных мер защиты от этого сценария нет.
Android 16 и accessibilityDataSensitive
: Начиная с Android 16 (уровень API 16) и выше, разработчики могут использовать флаг accessibilityDataSensitive
для дополнительной защиты конфиденциальных данных от вредоносных служб доступности, которые не являются легитимными инструментами обеспечения доступности. Когда этот флаг установлен для конфиденциальных представлений (например, экранов входа, экранов подтверждения транзакций), он запрещает приложениям с разрешением на доступ к данным читать конфиденциальные данные или взаимодействовать с ними, если только они не объявлены как isA11yTool=true
в манифесте. Это обеспечивает более надежную защиту на системном уровне от перехвата данных и атак с использованием инъекций кликов, характерных для сценариев частичного перекрытия. Разработчики часто могут неявно включить accessibilityDataSensitive
, указав android:filterTouchesWhenObscured="true"
в своих файлах макета.
Конкретные риски
В этом разделе собраны риски, требующие нестандартных стратегий смягчения или смягченные на определенном уровне 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 (взрыва Toast) , когда злоумышленник помещает несколько уведомлений в очередь, находясь на переднем плане, и они продолжают запускаться даже после перехода приложения в фоновый режим.
Начиная с Android 12 (уровень API 31) фоновые уведомления и атаки с использованием пакетных уведомлений полностью нейтрализованы.
Риск: сэндвич с активностью
Если вредоносному приложению удастся убедить пользователя открыть его, оно все равно может запустить активность из приложения-жертвы и впоследствии наложить на нее свою собственную активность, формируя сэндвич активности и создавая атаку частичной окклюзии.
Смягчение последствий
См. общие меры по снижению риска частичной окклюзии. Для обеспечения глубокой защиты убедитесь, что вы не экспортируете действия, которые не требуют экспорта, чтобы злоумышленник не смог их скрыть.
Ресурсы
{% дословно %}Рекомендовано для вас
- Примечание: текст ссылки отображается, когда JavaScript отключен.
- андроид:экспортировано
- # Управление ключами {:#key-management}
- Запустить встроенный код DEX непосредственно из APK
Категория OWASP: MASVS-PLATFORM: Взаимодействие платформ
Обзор
Tapjacking — это аналог веб-уязвимости clickjacking для Android-приложений: вредоносное приложение обманным путём заставляет пользователя нажать элемент управления, важный для безопасности (кнопку подтверждения и т. д.), скрывая пользовательский интерфейс наложением или другими способами. На этой странице мы различаем два варианта атаки: полное и частичное перекрытие. При полном перекрытии злоумышленник перекрывает сенсорную область, в то время как при частичном перекрытии сенсорная область остаётся открытой.
Влияние
Атаки с использованием метода тапджекинга (Tapjacking) используются для обманного вынуждения пользователей выполнить определённые действия. Результат зависит от действия, на которое нацелен злоумышленник.
Риск: Полная окклюзия
При полной окклюзии злоумышленник перекрывает область касания, чтобы перехватить событие касания:
Смягчение последствий
Полное перекрытие предотвращается установкой в коде свойства View.setFilterTouchesWhenObscured(true)
. Это блокирует касания, передаваемые через наложение. Если вы предпочитаете декларативный подход, вы также можете добавить android:filterTouchesWhenObscured="true"
в файл макета для объекта View
, который вы хотите защитить.
Риск: частичная окклюзия
При приступах частичной окклюзии зона касания остается открытой:
Смягчение последствий
Вы можете устранить частичное перекрытие, вручную игнорируя события касания с флагом FLAG_WINDOW_IS_PARTIALLY_OBSCURED
. Стандартных мер защиты от этого сценария нет.
Android 16 и accessibilityDataSensitive
: Начиная с Android 16 (уровень API 16) и выше, разработчики могут использовать флаг accessibilityDataSensitive
для дополнительной защиты конфиденциальных данных от вредоносных служб доступности, которые не являются легитимными инструментами обеспечения доступности. Когда этот флаг установлен для конфиденциальных представлений (например, экранов входа, экранов подтверждения транзакций), он запрещает приложениям с разрешением на доступ к данным читать конфиденциальные данные или взаимодействовать с ними, если только они не объявлены как isA11yTool=true
в манифесте. Это обеспечивает более надежную защиту на системном уровне от перехвата данных и атак с использованием инъекций кликов, характерных для сценариев частичного перекрытия. Разработчики часто могут неявно включить accessibilityDataSensitive
, указав android:filterTouchesWhenObscured="true"
в своих файлах макета.
Конкретные риски
В этом разделе собраны риски, требующие нестандартных стратегий смягчения или смягченные на определенном уровне 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 (взрыва Toast) , когда злоумышленник помещает несколько уведомлений в очередь, находясь на переднем плане, и они продолжают запускаться даже после перехода приложения в фоновый режим.
Начиная с Android 12 (уровень API 31) фоновые уведомления и атаки с использованием пакетных уведомлений полностью нейтрализованы.
Риск: сэндвич с активностью
Если вредоносному приложению удастся убедить пользователя открыть его, оно все равно может запустить активность из приложения-жертвы и впоследствии наложить на нее свою собственную активность, формируя сэндвич активности и создавая атаку частичной окклюзии.
Смягчение последствий
См. общие меры по снижению риска частичной окклюзии. Для обеспечения глубокой защиты убедитесь, что вы не экспортируете действия, которые не требуют экспорта, чтобы злоумышленник не смог их скрыть.
Ресурсы
{% дословно %}Рекомендовано для вас
- Примечание: текст ссылки отображается, когда JavaScript отключен.
- андроид:экспортировано
- # Управление ключами {:#key-management}
- Запустить встроенный код DEX непосредственно из APK