Расширение автозаполнения пароля третьей стороны

#ios #autofill

#iOS #автозаполнение

Вопрос:

Как Apple гарантирует, что хакеры не смогут использовать поддельные приложения с поддельными доменами для работы с функцией автозаполнения пароля iOS?

Например, если хакер создает приложение со своим доменом как linkedin.com пользователь может использовать функцию автозаполнения пароля, и поддельное приложение пройдет linkedin.com в качестве идентификатора службы для расширения автозаполнения.

Я нашел некоторую документацию о том, как работают связанные домены для universal link, чтобы убедиться, что аутентичность идентификатора службы или домена гарантирована.

Вот ссылка на документ, который я прочитал: https://developer.apple.com/documentation/security/password_autofill/setting_up_an_app_s_associated_domains

Также, если автозаполнение пароля использует тот же механизм, что и universal link, и с соответствующими доменами в приложении, позволяющем использовать несколько доменов. к какому домену подключится расширение автозаполнения, когда мы попытаемся использовать расширение автозаполнения в собственном приложении?

Ответ №1:

Между приложением и веб-сайтом существует двусторонняя связь.

Приложение перечисляет связанные с ним домены в info.plist файле. Веб-сайт в соответствующем домене предоставляет идентификаторы пакета поддерживаемых приложений в apple-app-site-association файле.

Для того, чтобы автозаполнение пароля работало, обе части ссылки должны быть на месте.

Рассматривая пример, который вы предложили для linkedin.com .

  • Злоумышленник может опубликовать приложение, которое указано linkedin.com в качестве связанного домена.
  • У приложения есть идентификатор пакета, скажем, com.badapple.trickyapp
  • Этот идентификатор пакета не будет указан в linkedin.com apple-app-site-association файл, потому что злоумышленник не имеет возможности изменить этот файл; Он контролируется linkedin.
  • Поскольку совпадения нет, автозаполнение не будет запущено автоматически.

Как насчет другого способа?

  • The linkedin.com apple-app-site-association будет содержать идентификатор пакета для их приложения, скажем, com.linkedin.app .
  • Злоумышленник не может опубликовать приложение с этим идентификатором пакета, потому что в магазине уже есть приложение с этим идентификатором (официальное приложение LinkedIn), поэтому им приходится использовать другой идентификатор пакета.
  • Кроме того, идентификатор пакета должен включать идентификатор команды, поэтому могут совпадать только приложения из команды LinkedIn
  • Это возврат к первому случаю; автозаполнения нет

По сути, для запуска автозаполнения вам нужен контроль как над приложением, так и над содержимым веб-сайта.

Если в приложении указано несколько доменов и установлены соответствующие ассоциации сайтов, то iOS предложит несколько вариантов пароля на панели быстрого ввода. Если в связке ключей (или любом другом поставщике паролей, который использует пользователь) больше совпадений, они могут использовать кнопку «пароли …», чтобы просмотреть все совпадения в табличном виде и выбрать соответствующие данные учетной записи.

Комментарии:

1. Потрясающе!! Большое спасибо, Пол, за подробное объяснение.

2. Еще один вопрос к моему приложению, которое имеет 3 связанных домена, например: ссылки на приложения: test.domain1.com ссылки на приложения: test.domain2.com ссылки на приложения: test.domain3.com . Но мое приложение для автозаполнения пароля получает только 1 идентификатор службы, и это тоже serviceIdentifier.identifier только как «domain3.com «. Пока я ожидаю все 3. Я тоже имею в виду этот вызов: developer.apple.com/documentation/authenticationservices /…