Sign in with Apple 被曝零日漏洞可远程劫持任意用户帐号

  5 月 30 日,印度漏洞安全研究专家 Bhavuk Jain 在官方博客中披露:Sign in with Apple(通过 Apple 登录)中存在一个零日漏洞,影响很严重,因为它允许攻击者远程劫持任意用户账户。

  Bhavuk Jain 在博客中写道,“今年 4 月,我在 Sign in with Apple 中发现一个零日漏洞(zero-day)。如果第三方应用使用了 Sign in with Apple(通过 Apple 登录),并且未部署额外的安全措施,那么它们均会受到该零日漏洞的影响。“

  最关键的是,该漏洞允许远程攻击者绕过身份验证,接管目标用户在第三方服务和应用中使用 Sign in with Apple 创建的账号。

  据了解,在去年的 WWDC 上,苹果正式推出属于自身个人的第三方登录服务——Sign in with Apple(通过 Apple 登录)。

  说起第三方登录,就必须提 OAuth。据阮一峰介绍:简单说,OAuth 就是一种授权机制。数据的所有者告诉系统,同意授权第三方应用进入系统,获取这一些数据。系统由此产生一个短期的进入令牌(token),用来代替密码,供第三方应用使用。

  现在,大多数第三方登录都是基于 OIDC 或者利用 OAuth 2.0 修改实现的。

  Sign in with Apple(通过 Apple 登录) 让用户能用自己的 Apple ID 轻松登录您的 app 和网站。用户不必填写表单、验证电子邮件地址和选择新密码,就能够正常的使用“通过 Apple 登录”设置账户并立即开始使用您的 app。所有账户都通过双重认证受到保护,具有极高的安全性,Apple 亦不会跟踪用户在您的 app 或网站中的活动。

  截至目前,有许多开发者已经将 Sign in with Apple 整合到应用程序中,比如国外的 Dropbox、Spotify、Airbnb、Giphy ,国内的喜马拉雅、懒饭、厨房故事等。这些应用程序未经测试,如果在验证用户时未采取其他任何安全措施,则可能被攻击者利用漏洞实现完全的账户接管。

  通过“Sign in with Apple”验证用户时,服务器会包含秘密信息的 JWT,第三方应用会使用 JWT 来确认登录用户的身份。

  Bhavuk Jain 发现,虽然苹果公司在发起请求前要求用户先登录到自己的苹果账户,但在下一步的验证服务器上,它并没有验证是否是同一个人在请求 JWT。

  因此,该部分机制中缺失的验证可能允许攻击者提供一个属于受害者的单独的苹果 ID,欺骗苹果服务器生成 JWT 有效的有效载荷,以受害者的身份登录到第三方服务中。

  Bhavuk Jain 说:“我发现我可以向苹果公司的任何 Email ID 请求 JWT,当这些令牌的签名用苹果公司的公钥做验证时,显示为有效。这在某种程度上预示着,攻击者能够最终靠链接任何 Email ID 来伪造 JWT,并获得对受害者账户的访问权限。”

  据悉,一个月前,他向苹果安全团队报告了这样的一个问题,为此苹果向其支付了 10 万美元的巨额赏金。目前,苹果已经对该漏洞进行了修复,并且还对服务器日志进行了调查,发现该漏洞没有被用来危害任何用户账户。

  值此 Java25 周年之际,你对 Java 的过往演进有哪些最深刻的印象?你和 Java 之间有何故事、亲身体验?你怎么样看待它的未来以及它的替代者?你对 Java 有哪些吐槽、寄语?面对云原生、AI 等技术趋势,Java 又会出现哪些可能的改进呢?

  即日起至 6 月 15 日 12 点,您只需在InfoQ 写作平台发布以“Java”为主题的与之相类似的文章,即可有机会获得写作现金奖励、极客时间免费专栏阅码等多重好礼,扫码

上一篇:
下一篇: