苹果支付十万刀的ID验证漏洞是怎样的?
【推荐学习】暗月渗透测试培训 十多年渗透经验,体系化培训渗透测试 、高效学习渗透测试,欢迎添加微信好友aptimeok 咨询。
如果我说,我只需要你的电子邮件ID就可以接管你在你最喜欢的网站或应用程序上的账号,听起来很可怕,不是吗?这其实是Sign in with Apple的一个漏洞。
在4月份,我发现苹果公司Sign in with Apple的一处0day漏洞,该系统影响了使用它的第三方应用程序,并且没有实施他们自己的额外安全措施,这个漏洞可导致完全接管第三方应用程序的用户帐户,而不管受害者是否拥有有效的Apple ID。
因为该漏洞,作为苹果安全奖励计划的一部分,苹果公司付给我10万美元。
技术细节:
“Sign in with Apple”的工作原理类似于OAuth 2.0,通过使用JWT (JSON Web令牌)或Apple服务器生成的代码,有两种方式对用户进行身份验证,代码用于生成JWT,下图展示了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
}
漏洞:
我发现我可以向JWTs 申请任意电子邮件 ID,当使用苹果的公钥验证这些令牌的签名时,它们显示为有效,这意味着攻击者可以通过将任何电子邮件ID链接到JWT,并获得对受害者账户的访问权,从而伪造JWT。
请求示例(第二步):
POST /XXXX/XXXX HTTP/1.1
Host: appleid.apple.com
{"email":"contact@bhavukjain.com"}
在这里,苹果为这个特定的电子邮件ID生成了一个有效的JWT (ID令牌)。
email响应示例:
{
"authorization" : {
"id_token" : "eyJraWQiOiJlWGF1bm1MIiwiYWxnIjoiUlMyNTYifQ.XXXXX.XXXXX",
"grant_code" : "XXX.0.nzr.XXXX",
"scope" : [ "name", "email" ]
},
"authorizedData" : {
"userId" : "XXX.XXXXX.XXXX"
},
"consentRequired" : false
}
该漏洞影响相当严重,因为它可以允许完全接管帐户,许多开发人员已经集成,因为对于支持其他社交登录的应用程序来说,这是必须的。举几个例子 – Dropbox,Spotify,Airbnb,Giphy(现被Facebook收购),这些应用程序未经测试,但如果在验证用户时没有任何其他安全措施,则同样可能受到完全帐户接管的影响。Sign in with Apple Sign in with Apple
苹果还对他们的日志进行了调查,确定没有因为这个漏洞而导致滥用或账户泄露。
====正文结束====
本文来自骨哥说事,经授权后发布,本文观点不代表立场,转载请联系原作者。