Apple爆出登录0day

Admin 2020-05-31 42人围观 ,发现0个评论 0dayApple登录0dayweb安全

Apple爆出登录0day  Web安全 第1张

Apple爆出登录0day 

如果我说,您的电子邮件ID就是我要接管您喜欢的网站或应用程序上的帐户所需的全部。 听起来吓人吧? 这就是“使用Apple登录”中的一个错误允许我执行此操作。

在4月份,我发现与Apple进行登录的零日时间影响了正在使用该服务的第三方应用程序,并且没有实施自己的其他安全措施。 该漏洞可能导致该第三方应用程序上的用户帐户被完全帐户接管,而无论受害者是否具有有效的Apple ID。

对于此漏洞,Apple根据其Apple Security Bounty计划向我支付了100,000美元。

技术细节

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

Apple爆出登录0day  Web安全 第2张

450/5000在第二步中,授权时,Apple会向用户提供一个选项,可以选择是否与第三方应用程序共享Apple电子邮件ID。 如果用户决定隐藏电子邮件ID,则Apple会生成自己的特定于用户的Apple中继电子邮件ID。 根据用户选择,在成功授权后,Apple将创建一个JWT,其中包含此电子邮件ID,然后第三方应用程序将使用该ID登录用户。
解码后的JWT的有效负载如下所示:

{
  "iss": "https://appleid.apple.com",  "aud": "com.XXXX.weblogin",  "exp": 158XXXXXXX,  "iat": 158XXXXXXX,  "sub": "XXXX.XXXXX.XXXX",  "c_hash": "FJXwx9EHQqXXXXXXXX",  "email": "contact@bhavukjain.com", // or "XXXXX@privaterelay.appleid.com"
  "email_verified": "true",  "auth_time": 158XXXXXXX,  "nonce_supported": true}

**BUG**

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

样品申请(第二步)

POST /XXXX/XXXX HTTP/1.1
Host: appleid.apple.com{"email":"www@yir6.cn"}

Here on passing any email, Apple generated a valid JWT (id_token) for that particular Email ID.

Sample Response

{
  "authorization" : {
    "id_token" : "eyJraWQiOiJlWGF1bm1MIiwiYWxnIjoiUlMyNTYifQ.XXXXX.XXXXX",    "grant_code" : "XXX.0.nzr.XXXX",    "scope" : [ "name", "email" ]
  },  "authorizedData" : {
    "userId" : "XXX.XXXXX.XXXX"
  },  "consentRequired" : false}

此漏洞的影响非常关键,因为它可能允许完全帐户接管。 许多开发人员已将登录与Apple集成在一起,因为对于支持其他社交登录的应用程序来说,登录是必需的。 仅举几个使用“使用Apple登录”的例子-Dropbox,Spotify,Airbnb,Giphy(现已被Facebook收购)。 这些应用程序未经测试,但如果在验证用户时未采取其他任何安全措施,则很容易受到帐户全部收购的攻击。

苹果还对他们的日志进行了调查,确定没有由于此漏洞引起的滥用或帐户泄露。

非常感谢Apple安全团队。

感谢您的阅读,在下一篇文章中见:)

请发表您的评论
请关注微信公众号
微信二维码
不容错过
Powered By 蚁人博客