Категория OWASP: MASVS-ПЛАТФОРМА: Взаимодействие платформы
Обзор
Атрибут android:exported
определяет, может ли компонент (активность, сервис, приемник вещания и т. д.) запускаться компонентами других приложений:
- Если
true
, любое приложение может получить доступ к действию и запустить его по точному имени класса. - Если
false
, только компоненты одного и того же приложения, приложения с тем же идентификатором пользователя или привилегированные системные компоненты могут запускать это действие.
Логика значения этого атрибута по умолчанию со временем менялась и различалась в зависимости от типов компонентов и версий Android. Например, на уровне API 16 (Android 4.1.1) или ниже для элементов <provider>
по умолчанию установлено значение true
. Если этот атрибут не задан явно, существует риск того, что на некоторых устройствах будут разные значения по умолчанию.
Влияние
Ситуация с разными значениями по умолчанию означает, что вы можете случайно раскрыть внутренние компоненты приложения. Несколько примеров последствий могут быть следующими:
Атаки типа «отказ в обслуживании». Другие приложения неправомерно получают доступ к внутренним компонентам для изменения внутренних функций вашего приложения. Утечка конфиденциальных данных. Выполнение кода в контексте уязвимого приложения.
Смягчения
Всегда явно устанавливайте атрибут android:exported
. Это не оставит места для интерпретации и четко сигнализирует о вашем намерении относительно видимости компонента.
Рекомендуется для вас
- Примечание: текст ссылки отображается, когда JavaScript отключен.
- # Управление ключами {:#key-management}
- Запускайте встроенный код DEX прямо из APK
- Угон