第 3 方密码自动填充扩展
3rd Party Password Autofill Extension
Apple 如何确保黑客无法将带有虚假域的虚假应用与 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 视图中查看所有匹配项并选择相关帐户详细信息。
Apple 如何确保黑客无法将带有虚假域的虚假应用与 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 视图中查看所有匹配项并选择相关帐户详细信息。