案例学习:10万美刀的苹果0 day漏洞

文章图片
最近Apple一个登陆漏洞被安全人员BhavukJain所发现 , 利用该漏洞只需要EmailID就可以获取该用户常用网站和App账户所有信息 。 该漏洞在苹果SigninwithApple执行逻辑上 。 该漏洞影响面很大 , 所有使用SigninwithApple的第三方应用 , 如果没有额外的其他安全措施 , 则会导致该应用的用户账户被完全账户接管 。 由于该漏洞影响巨大 , 苹果SecurityBounty计划奖励了BhavukJain10万美金 。
今天我们就来一起学习一下这个漏洞细节以及BhavukJain如何发现该漏洞并获得大奖的 。
技术细节
SigninwithApple的工作原理与OAuth2.0类似 。 通过两种方法来实现:利用苹果服务器认证生成的JWT(JSONWebToken)或使用苹果认证服务器生成代码 , 代码可用于生成JWT 。

文章图片
下图显示了JWT创建和验证的工作方式 。

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

文章图片
bug
BhavukJain发现可以通过任意苹果EmailID发送JWT请求 , 当使用Apple的公钥验证这些token签名时 , 都会显示为有效 。 这样攻击者可以通过任意苹果EmailID伪造JWT获得该用户对应的账号信息和访问权限 。
漏洞验证过程(上图第二部)

文章图片
在提交任意emailID , 苹果会为该特定的EmailID生成了一个有效的JWT(id_token) 。
苹果认证服务器响应信息:

文章图片
该漏洞的影响非常大 , 因为可能允许实现任意用户的劫持 。 许多应用都已经集成了SigninwithApple以方便用户认证 。 各大社交应用都有支持 , 比如大家所熟识的Dropbox , Spotify , Airbnb , Giphy等 。
总结
【案例学习:10万美刀的苹果0 day漏洞】一个很简单认证过程 , 一个环节验证脱钩就可以造成重大的问题 。 这次苹果SigninwithApple漏洞影响很大 , 还好发现及时 , 苹果也为此支付了巨额赏金 。 苹果安全部分通过日志分析也没有发现该漏洞被利用证据 。 但是该类JWT的漏洞绝不是孤例 , 其他产品 , 其他公司开发难免会犯同样的错误 , "他山之玉 , 可以攻玉" , 希望这个案例能对大家有所启发 , 从中吸取教训 , 开发出更安全健壮的程序 。
推荐阅读
- 澎湃新闻|仝卓事件被写入公职人员学习读本 仝卓事件怎么回事
- 净流入|每年超10万人口逃离北京,超20万人口奔赴广深,为何?
- 仝卓事件通报成《公职人员政务处分法》学习读本案例
- 仝卓|成范本了!曝仝卓被写入公职人员学习读本 这下子真是大火了!
- 别再学习框架了,看看这些让你起飞的计算机基础知识
- 橘了一只猫|看看孕妈赵丽颖,学习如何打造十足的时尚感!
- 【部门动态】治安大队召开“坚持政治建警全面从严治警”专题学习会
- python深度学习:为什么要学习深度学习?
- 三农|学习贯彻全会精神 扎实做好“六稳”“六保”丨 萌萌的“多肉”稳稳的幸福
- 李霖|足够打一场战争!印军在拉达克集结10万重兵,这么多人留着过冬?
