【问题标题】:3rd Party Password Autofill Extension第 3 方密码自动填充扩展
【发布时间】:2019-08-09 07:07:15
【问题描述】:

Apple 如何确保黑客无法使用虚假域推送虚假应用以使用 iOS 密码自动填充功能?

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

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

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

此外,如果密码自动填充使用与通用链接相同的机制,并且在允许多个域的应用中使用关联域。当我们尝试在原生应用中使用自动填充扩展时,自动填充扩展会选择哪个域?

【问题讨论】:

    标签: ios autofill


    【解决方案1】:

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

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

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

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

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

    另外一个怎么样?

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

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

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

    【讨论】:

    • 太棒了!非常感谢 Paul 的详细解释。
    • 还有一个问题 我的应用程序有 3 个关联域,例如:applinks:test.domain1.com,applinks:test.domain2.com,applinks:test.domain3.com。但是我的密码自动填充应用程序仅获得 1 个服务标识符,而且 serviceIdentifier.identifier 也仅作为“domain3.com”。虽然我期待所有 3。这也是我所指的电话:developer.apple.com/documentation/authenticationservices/…
    猜你喜欢
    • 2010-12-13
    • 2019-09-02
    • 1970-01-01
    • 2023-01-10
    • 2011-11-15
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    相关资源
    最近更新 更多