Перейти к содержанию

Приложение использует запрещенные разрешения

Описание

Приложение запрашивает или использует одно или несколько разрешений Android (permissions), которые явно запрещены к использованию согласно специфической политике безопасности, стандарту или требованиям, применимым к данному приложению.

Такой список "запрещенных" разрешений может определяться различными источниками:

  • Внутренняя политика компании: Стандарты безопасности, разработанные внутри организации для минимизации рисков.
  • Требования платформы/магазина: Правила конкретного магазина приложений (например, Google Play, RuStore, AppGallery или корпоративного каталога), которые могут запрещать определенные разрешения для определенных категорий приложений или в целом.
  • Регуляторные требования: Нормативы (например, GDPR, HIPAA, локальные законы о персональных данных), косвенно или прямо ограничивающие использование разрешений, дающих доступ к чувствительной информации.
  • Требования заказчика/проекта: Специфические ограничения, установленные для конкретного проекта или пользователя приложения.
  • Принцип минимальных привилегий: Разрешение может быть запрещено просто потому, что оно не соответствует заявленной функциональности приложения (например, калькулятор, запрашивающий доступ к контактам).

Использование разрешения, нарушающего установленный запрет, может привести к:

  • Нарушению политик и стандартов: Несоответствие внутренним или внешним требованиям, что может повлечь санкции или отказ в публикации/использовании приложения.
  • Повышенным рискам безопасности и конфиденциальности: Даже если разрешение стандартное для Android, его использование может быть сочтено неприемлемо рискованным в данном конкретном контексте.
  • Утрате доверия пользователей: Если приложение запрашивает разрешения, не соответствующие его назначению или нарушающие ожидания.
  • Эксплуатации уязвимостей: Некоторые разрешения могут открывать векторы атак или упрощать эксплуатацию других уязвимостей.

Эта проблема отличается от простого использования "опасных" разрешений Android тем, что здесь речь идет о нарушении конкретного, заранее определенного правила или списка.

Рекомендации

Для устранения данного несоответствия необходимо привести список используемых приложением разрешений в соответствие с действующей политикой.

  1. Определить источник политики:

    • Выясните, какой именно документ, стандарт или требование определяет список запрещенных разрешений для вашего приложения (внутренняя политика ИБ, требования магазина приложений, спецификация проекта и т.д.). Это первый и ключевой шаг.
  2. Проанализировать AndroidManifest.xml:

    • Внимательно изучите все теги <uses-permission> и <permission> (если вы определяете кастомные разрешения) в основном манифесте вашего приложения.
    • Сравните их с актуальным списком запрещенных разрешений из вашей политики.
    • Удалите из манифеста все разрешения, которые входят в запрещенный список.
    <manifest ...>
        <uses-permission android:name="android.permission.INTERNET" />
    
        <application ...>
            ...
        </application>
    </manifest>
    
  3. Проверить зависимости и сторонние SDK:

    • Проанализируйте объединенный манифест (merged manifest), который генерируется при сборке проекта. Он включает разрешения, добавляемые библиотеками. Используйте Android Studio (вкладка Merged Manifest) или инструменты командной строки.
    • Если сторонняя библиотека добавляет запрещенное разрешение, у вас есть несколько вариантов:
      • Обновить библиотеку до версии, где это разрешение больше не используется (если возможно).
      • Использовать атрибут tools:node="remove" в вашем AndroidManifest.xml для удаления конкретного разрешения, добавленного библиотекой (используйте с осторожностью, это может нарушить работу SDK).
      • Заменить библиотеку на альтернативную, не требующую запрещенных разрешений.
      • Отказаться от использования данной библиотеки.
        <uses-permission android:name="android.permission.SOME_FORBIDDEN_PERMISSION" tools:node="remove" />
        
  4. Установить процесс ревью разрешений:

    • Внедрите обязательный этап ревью при добавлении или изменении любых разрешений в приложении. Ревью должно включать проверку на соответствие политике.
  5. Принцип минимальных привилегий:

    • Запрашивайте только те разрешения, которые абсолютно необходимы для работы заявленной функциональности приложения. Регулярно пересматривайте список используемых разрешений.
  6. Проверка во время выполнения (Runtime Checks - Дополнительно):

    • Хотя основная проблема — декларация в манифесте, можно добавить runtime-проверки как дополнительный слой защиты, чтобы убедиться, что код случайно не пытается запросить у пользователя разрешение из запрещенного списка (хотя без декларации в манифесте запрос обычно невозможен для install-time permissions или завершится ошибкой для runtime permissions до Android 6).

Ссылки

  1. Permissions overview (Android Developers) - Обзор системы разрешений Android.
  2. Best practices for app permissions (Android Developers) - Рекомендации по работе с разрешениями.
  3. Inspect the merged manifest (Android Developers) - Как просматривать объединенный манифест.
  4. Manifest tag attributes (Android Developers) - Описание атрибутов манифеста, включая tools:node.
  5. OWASP Mobile Security Testing Guide - Android Permissions - Тестирование разрешений с точки зрения безопасности.
К началу