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