第 3 方密码自动填充扩展

3rd Party Password Autofill Extension

A​​pple 如何确保黑客无法将带有虚假域的虚假应用与 iOS 密码自动填充功能一起使用?

例如,如果黑客创建了一个域为 linkedin.com 的应用程序,则用户可能正在使用密码自动填充功能,而假冒应用程序会将 linkedin.com 作为服务标识符传递给自动填充扩展程序。

我找到了一些关于关联域如何为通用 link 工作的文档,以确保服务标识符或域的真实性得到保证。

这是我阅读的 link 文档:https://developer.apple.com/documentation/security/password_autofill/setting_up_an_app_s_associated_domains

此外,如果密码自动填充使用与通用 link 相同的机制,并且应用中的关联域允许多个域。当我们尝试将自动填充扩展与本机应用程序一起使用时,哪个域会自动填充扩展?

应用程序和网站之间存在双向 link。

该应用在 info.plist 文件中列出了其关联的域。 关联域的网站在 apple-app-site-association 文件中提供其支持的应用程序的捆绑包 ID。

为了使密码自动填充起作用,link 的两个部分都需要到位。

查看您为 linkedin.com 提出的示例。

  • 攻击者可以发布将 linkedin.com 列为关联域的应用程序。
  • 该应用有一个包 ID,例如 com.badapple.trickyapp
  • 这个bundle id不会在linkedin.com apple-app-site-association文件中列出,因为攻击者没有能力改变那个文件;它由 linked in.
  • 控制
  • 因为没有匹配,所以不会自动触发自动填充。

换个方式怎么样?

  • linkedin.com apple-app-site-association 将包含其应用程序的包 ID,例如 com.linkedin.app
  • 攻击者无法发布具有该 bundle id 的应用程序,因为商店中已经有一个具有该 id 的应用程序(LinkedIn 官方应用程序),因此他们必须使用不同的 bundle id。
  • 此外,bundle ID 需要包含团队标识符,因此只有来自 LinkedIn 团队 的应用才可能匹配
  • 这又回到了第一种情况;没有自动填充

本质上,您需要控制应用程序和网站内容才能触发自动填充。

如果一个应用程序中列出了多个域,并且相关站点关联已到位,那么 iOS 将在快速输入栏上提供多个密码选择。如果钥匙串(或用户使用的任何密码提供程序)中有更多匹配项,则他们可以使用 "passwords..." 按钮在 table 视图中查看所有匹配项并选择相关帐户详细信息。