使用Apple Zero Day登录

2020-05-31 00:24:36

如果我说,我只需要你的电子邮件ID就可以接管你在你最喜欢的网站或应用程序上的账户。听起来很可怕,对吧?这就是苹果登录的一个bug允许我做的事情。

在4月份,我发现苹果的零日登录影响了使用它的第三方应用程序,这些应用程序没有实施他们自己的额外安全措施。此漏洞可能导致该第三方应用程序上的用户帐户被完全接管,而不管受害者是否拥有有效的Apple ID。

由于这个漏洞,苹果公司根据他们的苹果安全赏金计划向我支付了10万美元。

苹果的登录功能类似于OAuth 2.0。通过使用JWT(JSON Web Token)或Apple服务器生成的代码对用户进行身份验证有两种可能的方式。然后使用该代码生成JWT。下图显示了JWT创建和验证的工作原理。

在第二步中,在授权的同时,苹果给用户一个选择,要么与第三方应用程序共享苹果电子邮件ID,要么不共享。如果用户决定隐藏电子邮件ID,Apple将生成自己的特定于用户的Apple中继电子邮件ID。根据用户选择,在成功授权后,Apple会创建包含此电子邮件ID的JWT,然后第三方应用程序将使用该ID登录用户。

{";ISS";:";https://appleid.apple.com";,";Aud";:";com.XXXX.weblogin";,";exp";:158XXXXXXX,";iat";:158XXXXXXX,";sub";:";XXXX.XXXXX.XXXX";,";c_hash"。,";电子邮件";:";[电子邮件受保护]";,//或";[电子邮件受保护]";";电子邮件_验证";:";true";,";auth_time";:158XXXXXXX,";NONCE_SUPPORTED";:true}。

我发现我可以向苹果请求JWTs的任何电子邮件ID,当使用苹果的公钥验证这些令牌的签名时,它们显示为有效。这意味着攻击者可以通过将任何电子邮件ID链接到JWT并获得对受害者帐户的访问权限来伪造JWT。

在这里,当传递任何电子邮件时,Apple为该特定电子邮件ID生成一个有效的JWT(Id_Token)。

{";授权";:{";id_Token";:";eyJraWQiOiJlWGF1bm1MIiwiYWxnIjoiUlMyNTYifQ.XXXXX.XXXXX";,";授权代码";:";XXX.0.nzr.XXXX";,";范围";:[";名称";,";电子邮件";]},";授权数据";:{";userid";:";XXX.XXXXX.XXXX";},";consentRequired";:false}。

此漏洞的影响相当严重,因为它可能会允许完全接管帐户。很多开发者已经集成了苹果的登录,因为支持其他社交登录的应用程序是强制性的。举几个使用苹果Sign-in的例子-Dropbox,Spotify,Airbnb,Giphy(现在被Facebook收购)。这些应用程序没有经过测试,但如果在验证用户时没有任何其他安全措施,则可能容易受到完全帐户接管的攻击。

苹果还对他们的日志进行了调查,确定没有因为这个漏洞而误用或泄露账户。