作者 | 万佳
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 登录)。
现在,大多数第三方登录都是基于 OIDC 或者利用 OAuth 2.0 修改实现的。
根据苹果官方解释:
截至目前,有许多开发者已经将 Sign in with Apple 整合到应用程序中,比如国外的 Dropbox、Spotify、Airbnb、Giphy ,国内的喜马拉雅、懒饭、厨房故事等。这些应用程序未经测试,如果在验证用户时未采取其他任何安全措施,则可能被攻击者利用漏洞实现完全的账户接管。
据 Bhavuk Jain 的博客文章介绍,Sign in with Apple 的工作原理与 OAuth 2.0 类似,对用户身份的认证有两种办法:一种是利用 JWT(JSON Web Token),另一种是利用由 Apple 服务器生成的 code。
下面的示意图表示 JWT 创建和验证的工作方式。
通过“Sign in with Apple”验证用户时,服务器会包含秘密信息的 JWT,第三方应用会使用 JWT 来确认登录用户的身份。
Bhavuk Jain 发现,虽然苹果公司在发起请求前要求用户先登录到自己的苹果账户,但在下一步的验证服务器上,它并没有验证是否是同一个人在请求 JWT。
因此,该部分机制中缺失的验证可能允许攻击者提供一个属于受害者的单独的苹果 ID,欺骗苹果服务器生成 JWT 有效的有效载荷,以受害者的身份登录到第三方服务中。
Bhavuk Jain 说:“我发现我可以向苹果公司的任何 Email ID 请求 JWT,当这些令牌的签名用苹果公司的公钥进行验证时,显示为有效。这意味着,攻击者可以通过链接任何 Email ID 来伪造 JWT,并获得对受害者账户的访问权限。”
据悉,一个月前,他向苹果安全团队报告了这个问题,为此苹果向其支付了 10 万美元的巨额赏金。目前,苹果已经对该漏洞进行了修复,并且还对服务器日志进行了调查,发现该漏洞没有被用来危害任何用户账户。
参考阅读:
https://bhavukjain.com/blog/2020/05/30/zeroday-signin-with-apple/
【InfoQ 写作平台 —— Java 25 周年征文活动】
值此 Java25 周年之际,你对 Java 的过往演进有哪些最深刻的印象?你和 Java 之间有何故事、亲身体验?你如何看待它的未来以及它的替代者?你对 Java 有哪些吐槽、寄语?面对云原生、AI 等技术趋势,Java 又会出现哪些可能的改进呢?
即日起至 6 月 15 日 12 点,您只需在 InfoQ 写作平台发布以“Java”为主题的相关文章,即可有机会获得写作现金奖励、极客时间免费专栏阅码等多重好礼,扫码了解活动详情。