Приложение использует запрещенные разрешения
Описание
Приложение запрашивает или использует одно или несколько разрешений Android (permissions
), которые явно запрещены к использованию согласно специфической политике безопасности, стандарту или требованиям, применимым к данному приложению.
Такой список "запрещенных" разрешений может определяться различными источниками:
- Внутренняя политика компании: Стандарты безопасности, разработанные внутри организации для минимизации рисков.
- Требования платформы/магазина: Правила конкретного магазина приложений (например, Google Play, RuStore, AppGallery или корпоративного каталога), которые могут запрещать определенные разрешения для определенных категорий приложений или в целом.
- Регуляторные требования: Нормативы (например, GDPR, HIPAA, локальные законы о персональных данных), косвенно или прямо ограничивающие использование разрешений, дающих доступ к чувствительной информации.
- Требования заказчика/проекта: Специфические ограничения, установленные для конкретного проекта или пользователя приложения.
- Принцип минимальных привилегий: Разрешение может быть запрещено просто потому, что оно не соответствует заявленной функциональности приложения (например, калькулятор, запрашивающий доступ к контактам).
Использование разрешения, нарушающего установленный запрет, может привести к:
- Нарушению политик и стандартов: Несоответствие внутренним или внешним требованиям, что может повлечь санкции или отказ в публикации/использовании приложения.
- Повышенным рискам безопасности и конфиденциальности: Даже если разрешение стандартное для Android, его использование может быть сочтено неприемлемо рискованным в данном конкретном контексте.
- Утрате доверия пользователей: Если приложение запрашивает разрешения, не соответствующие его назначению или нарушающие ожидания.
- Эксплуатации уязвимостей: Некоторые разрешения могут открывать векторы атак или упрощать эксплуатацию других уязвимостей.
Эта проблема отличается от простого использования "опасных" разрешений Android тем, что здесь речь идет о нарушении конкретного, заранее определенного правила или списка.
Рекомендации
Для устранения данного несоответствия необходимо привести список используемых приложением разрешений в соответствие с действующей политикой.
-
Определить источник политики:
- Выясните, какой именно документ, стандарт или требование определяет список запрещенных разрешений для вашего приложения (внутренняя политика ИБ, требования магазина приложений, спецификация проекта и т.д.). Это первый и ключевой шаг.
-
Проанализировать
AndroidManifest.xml
:- Внимательно изучите все теги
<uses-permission>
и<permission>
(если вы определяете кастомные разрешения) в основном манифесте вашего приложения. - Сравните их с актуальным списком запрещенных разрешений из вашей политики.
- Удалите из манифеста все разрешения, которые входят в запрещенный список.
- Внимательно изучите все теги
-
Проверить зависимости и сторонние SDK:
- Проанализируйте объединенный манифест (merged manifest), который генерируется при сборке проекта. Он включает разрешения, добавляемые библиотеками. Используйте Android Studio (вкладка
Merged Manifest
) или инструменты командной строки. - Если сторонняя библиотека добавляет запрещенное разрешение, у вас есть несколько вариантов:
- Обновить библиотеку до версии, где это разрешение больше не используется (если возможно).
- Использовать атрибут
tools:node="remove"
в вашемAndroidManifest.xml
для удаления конкретного разрешения, добавленного библиотекой (используйте с осторожностью, это может нарушить работу SDK). - Заменить библиотеку на альтернативную, не требующую запрещенных разрешений.
- Отказаться от использования данной библиотеки.
- Проанализируйте объединенный манифест (merged manifest), который генерируется при сборке проекта. Он включает разрешения, добавляемые библиотеками. Используйте Android Studio (вкладка
-
Установить процесс ревью разрешений:
- Внедрите обязательный этап ревью при добавлении или изменении любых разрешений в приложении. Ревью должно включать проверку на соответствие политике.
-
Принцип минимальных привилегий:
- Запрашивайте только те разрешения, которые абсолютно необходимы для работы заявленной функциональности приложения. Регулярно пересматривайте список используемых разрешений.
-
Проверка во время выполнения (Runtime Checks - Дополнительно):
- Хотя основная проблема — декларация в манифесте, можно добавить runtime-проверки как дополнительный слой защиты, чтобы убедиться, что код случайно не пытается запросить у пользователя разрешение из запрещенного списка (хотя без декларации в манифесте запрос обычно невозможен для install-time permissions или завершится ошибкой для runtime permissions до Android 6).
Ссылки
- Permissions overview (Android Developers) - Обзор системы разрешений Android.
- Best practices for app permissions (Android Developers) - Рекомендации по работе с разрешениями.
- Inspect the merged manifest (Android Developers) - Как просматривать объединенный манифест.
- Manifest tag attributes (Android Developers) - Описание атрибутов манифеста, включая
tools:node
. - OWASP Mobile Security Testing Guide - Android Permissions - Тестирование разрешений с точки зрения безопасности.