呐,一个苹果洞赚10万美元的详细经验都在这里了~

 聚焦源代码安全,网罗国内外最新资讯!

编译:奇安信代码卫士团队

安全研究员 Bhavuk Jain  Sign in with Apple 功能中发现了一个严重漏洞,并因此获得10万美元的奖金。如下是奇安信代码卫士团队对博客文章内容的翻译:

如果我告诉你,我只需你的 Email ID 就能接管你最爱的网站或app的账户,害怕吗?而这恰恰就是Sign in with Apple(“通过苹果登录”)中一个漏洞如被利用而导致的后果。

4月份,我在Sign in with Apple中发现了一个 0day,它对第三方应用造成影响。这些第三方应用并未实现自身额外的安全措施。该 bug 可导致第三方应用上的用户账户遭完全接管,而不管受害者的 Apple ID 是否有效。

为此,苹果根据苹果安全奖励计划为我颁发了10万美元的奖金。

技术详情

Sign with Apple 和 OAuth 2.0的运作原理类似。认证用户的方式有两种,一种是使用JWT (JSON Web Token),一种是由苹果服务器生成的一个代码。这个代码之后被用于生成 JWT。如下图表表示了 JWT 的创建和验证过程。

在第2步,苹果在授权时会为用户提供两种选项,询问用户是否愿意和第三方应用共享 Apple Email ID。如果用户决定隐藏自己的 Email ID,那么苹果就会生成自己的特定用户的 Apple 中继 Email ID。根据用户的选择,在成功授权后,苹果会创建一个 JWT,它包含随后将被第三方应用用于用户登录的 Email ID  。

JWT 的 payload 解码后如下:

{
  "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 来了

我发现我能够向苹果请求获取任意 Email ID 的 JWT,而通过苹果的公钥验证这些令牌的签名后,它们就显示为合法签名。这意味着攻击者能够将任意 Email ID 与其连接伪造 JWT,并获得对受害者账户的访问权限。

简单请求(第2步):

POST /XXXX/XXXX HTTP/1.1
Host: appleid.apple.com


{"email":"contact@bhavukjain.com"}

在传递任意 email 时,苹果为这个特定的 Email ID 生成一个有效的 JWT (id_token)。

简单响应:

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

这个漏洞的影响非常严重,因为它可导致账户遭完全接管。鉴于支持其它社交账户登录的应用的强制要求,很多开发人员都集成了Sign in with Apple 功能。很多知名应用都在使用 Sign in with Apple,如 Dropbox、Spotify、Airbnb、Giphy(已被 Facebook 收购)。虽然并未对这些应用进行测试,但它们如果在验证用户方面并未部署其它安全措施,那么这些应用的用户账户就很容易遭完全接管。

苹果调查日志后发现并未出现因该漏洞而导致的滥用或账户受陷情况。

 


推荐阅读

我一口气发现7个Safari  0day,苹果奖了7.5万美元

苹果会修复这个 0day吗?有人借机发布越狱包且适用于当前iOS 版本

原文链接

https://bhavukjain.com/blog/2020/05/30/zeroday-signin-with-apple/

题图:Pixabay License

本文由奇安信代码卫士编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 www.codesafe.cn”。

奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的

产品线。

    点个 “在看” ,加油鸭~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值