Небезопасное использование глубоких ссылок

Категория OWASP: MASVS-ПЛАТФОРМА: Взаимодействие платформы

Обзор

Риски безопасности, связанные с глубокими ссылками, проистекают из их основной способности обеспечивать плавную навигацию и взаимодействие в мобильных приложениях. Уязвимости глубоких ссылок возникают из-за недостатков в реализации или обработке глубоких ссылок. Эти недостатки могут быть использованы злоумышленниками для получения доступа к привилегированным функциям или данным, что потенциально может привести к утечке данных, нарушению конфиденциальности и несанкционированным действиям. Злоумышленники могут использовать эти уязвимости с помощью различных методов, таких как перехват глубоких ссылок и атаки с проверкой данных.

Влияние

Отсутствие надлежащего механизма проверки глубоких ссылок или небезопасное использование глубоких ссылок может помочь злоумышленникам в выполнении таких атак, как обход проверки хоста, межприложенные сценарии и удаленное выполнение кода в контексте разрешений уязвимого приложения. В зависимости от характера приложения это может привести к несанкционированному доступу к конфиденциальным данным или функциям.

По своей конструкции Android позволяет нескольким приложениям регистрировать фильтры намерений для одного и того же URI глубокой ссылки. Чтобы вредоносные приложения не перехватывали глубокие ссылки, предназначенные для вашего приложения, реализуйте атрибут android:autoVerify в intent-filter в AndroidManifest приложения. Это позволяет пользователям выбирать предпочтительное приложение для обработки глубоких ссылок, гарантируя запланированную работу и предотвращая их автоматическую интерпретацию вредоносными приложениями.

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

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

  <!-- Make sure you explicitly set android:autoVerify to "true". -->
  <intent-filter android:autoVerify="true">
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <category android:name="android.intent.category.BROWSABLE" />
  
      <!-- If a user clicks on a shared link that uses the "http" scheme, your
           app should be able to delegate that traffic to "https". -->
      <data android:scheme="http" />
      <data android:scheme="https" />
  
      <!-- Include one or more domains that should be verified. -->
      <data android:host="..." />
  </intent-filter>

Глубокие ссылки могут включать дополнительные параметры, которые служат целевому намерению, например, для выполнения дальнейших действий. Основой безопасной обработки глубоких ссылок является строгая проверка данных. Все входящие данные по глубоким ссылкам должны тщательно проверяться и очищаться разработчиками, чтобы предотвратить внедрение вредоносного кода или значений в законное приложение. Это можно реализовать, проверив значение любого параметра глубокой ссылки по предопределенному списку ожидаемых значений.

Приложения должны проверять другие соответствующие внутренние состояния, такие как состояние аутентификации или авторизации, прежде чем раскрывать конфиденциальную информацию. Примером может быть награда за прохождение уровня игры. В этом случае стоит проверить предварительное условие прохождения уровня и, если нет, перенаправить на главный экран.

Ресурсы