写点什么

Sign in with Apple 被曝零日漏洞,可远程劫持任意用户帐号

  • 2020 年 6 月 01 日
  • 本文字数:1249 字

    阅读完需:约 4 分钟

Sign in with Apple被曝零日漏洞,可远程劫持任意用户帐号


5 月 30 日,印度漏洞安全研究专家 Bhavuk Jain 在官方博客中披露:Sign in with Apple(通过 Apple 登录)中存在一个零日漏洞,影响非常严重,因为它允许攻击者远程劫持任意用户账户。


Bhavuk Jain 在博客中写道,“今年 4 月,我在 Sign in with Apple 中发现一个零日漏洞(zero-day)。如果第三方应用使用了 Sign in with Apple(通过 Apple 登录),并且未部署额外的安全措施,那么它们均会受到该零日漏洞的影响。“


最关键的是,该漏洞允许远程攻击者绕过身份验证,接管目标用户在第三方服务和应用中使用 Sign in with Apple 创建的账号。



据了解,在去年的 WWDC 上,苹果正式推出属于自己的第三方登录服务——Sign in with Apple(通过 Apple 登录)。


说起第三方登录,就不得不提 OAuth。简单说,OAuth 是一种授权机制。数据的所有者告诉系统,同意授权第三方应用进入系统,获取这些数据。系统从而产生一个短期的进入令牌(token),用来代替密码,供第三方应用使用。

现在,大多数第三方登录都是基于 OIDC 或者利用 OAuth 2.0 修改实现的。


根据苹果官方解释:


"Sign in with Apple(通过 Apple 登录)"让用户能用自己的 Apple ID 轻松登录您的 app 和网站。用户不必填写表单、验证电子邮件地址和选择新密码,就可以使用“通过 Apple 登录”设置账户并立即开始使用您的 app。所有账户都通过双重认证受到保护,具有极高的安全性,Apple 亦不会跟踪用户在您的 app 或网站中的活动。


截至目前,有许多开发者已经将 Sign in with Apple 整合到应用程序中,比如国外的 Dropbox、Spotify、Airbnb、Giphy ,国内的喜马拉雅、懒饭、厨房故事等。这些应用程序未经测试,如果在验证用户时未采取其他任何安全措施,则可能被攻击者利用漏洞实现完全的账户接管。


据 Bhavuk Jain 的博客文章介绍,Sign in with Apple 的工作原理与 OAuth 2.0 类似,对用户身份的认证有两种办法:一种是利用 JWT(JSON Web Token),另一种是利用由 Apple 服务器生成的 code。


下面的示意图表示 JWT 创建和验证的工作方式。



通过“Sign in with Apple”验证用户时,服务器会包含秘密信息的 JWT,第三方应用会使用 JWT 来确认登录用户的身份。


Bhavuk Jain 发现,虽然苹果公司在发起请求前要求用户先登录到自己的苹果账户,但在下一步的验证服务器上,它并没有验证是否是同一个人在请求 JWT。


因此,该部分机制中缺失的验证可能允许攻击者提供一个属于受害者的单独的苹果 ID,欺骗苹果服务器生成 JWT 有效的有效载荷,以受害者的身份登录到第三方服务中。


Bhavuk Jain 说:“我发现我可以向苹果公司的任何 Email ID 请求 JWT,当这些令牌的签名用苹果公司的公钥进行验证时,显示为有效。这意味着,攻击者可以通过链接任何 Email ID 来伪造 JWT,并获得对受害者账户的访问权限。”


据悉,一个月前,他向苹果安全团队报告了这个问题,为此苹果向其支付了 10 万美元的巨额赏金。目前,苹果已经对该漏洞进行了修复,并且还对服务器日志进行了调查,发现该漏洞没有被用来危害任何用户账户。


参考资料:


Zero-day in Sign in with Apple


2020 年 6 月 01 日 15:095029
用户头像
万佳 InfoQ编辑

发布了 640 篇内容, 共 251.4 次阅读, 收获喜欢 1663 次。

关注

评论

发布
暂无评论
发现更多内容

酷家乐 UI 自动化测试平台实践

CPPAlien

测试框架 selenium BDD UI测试 活文档

自动化会提高测试覆盖率,那测试覆盖率是什么?

禅道项目管理

测试 自动化测试 测试覆盖率

数字化转型的终局:赛博朋克?社会主义?

龙归科技

数字化 软件系统 软件经济 赛博朋克

Android正确的保活方案,不要掉进保活需求死循环陷进

Halifax

android 大前端 kotlin 移动开发 语言 & 开发

Tensorflow保存神经网络参数有妙招:Saver和Restore

华为云开发者社区

神经网络 tensorflow 变量 Saver Restore

统信软件张磊:国产操作系统如何获得大众市场的认可?

Jessie

开源 最佳实践 新基建 企业动态 文化 & 方法

快速提升Golang编程能力:那就一起用Go做项目吧

博文视点Broadview

Vue进阶(幺幺零):ant-design-vue

No Silver Bullet

Vue 9月日更

【LeetCode】下一个更大元素 IJava题解

HQ数字卡

算法 LeetCode 9月日更

只需3步,快来用AI预测你爱的球队下一场能赢吗?

华为云开发者社区

机器学习 AI 华为云 modelarts 球赛

开放原子全球开发者峰会「开源治理」论坛预告(更新中)

开放原子开源基金会

【Flutter 专题】48 图解 Android 原生集成 Flutter Module

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 9月日更

Java基础知识查漏补缺

IT蜗壳-Tango

9月日更

vivo营销自动化技术解密|开篇

vivo互联网技术

Java 后端 软件架构设计 电商营销 平台搭建

对话华为云专家,摆脱无意义“内卷”

华为云开发者社区

面试 华为云 就业 内卷

简化IT运维工作,就要学会使用自动化运维工具!

行云管家

运维 云服务 IT运维

Java Stream 源码深入解析

Zexho

Java 源码 stream jdk8

研发人员如何进行有效沟通

KJ Meng

研发管理 团队协作 技术沟通 沟通艺术 软素质

大数据包围你我,技术人如何走知识分享之路

华为云开发者社区

大数据 开发者 技术人 华为云 知识分享

小游戏如何应对大流量?Shopee Shake 的大促实践

Shopee技术团队

后端 高并发 游戏 电商大促 Shopee

云资源生命周期管理怎么做?用什么软件好?

行云管家

云计算 云服务 云资源 生命周期管理

我爸电脑上有个加密压缩包,我给用 Python 给解开了

梦想橡皮擦

9月日更

Vue进阶(幺零九):npm install 遇到 -4048 错误的解决办法

No Silver Bullet

Vue 9月日更

纵观移动云对象存储发展历程,也少不了 Apache APISIX 的能力加持

Apache APISIX 中国社区

Apache api 网关 APISIX 企业案例 移动云

华为云GaussDB:发挥生态优势,培养应用型DBA

华为云开发者社区

数据库 开源 GaussDB 云数据库 dba

常见的安全应用识别技术有哪些?

郑州埃文科技

明道云在工程项目行业中的应用场景

明道云

安全系列之:跨域资源共享CORS

程序那些事

Java HTTP CORS 程序那些事 跨域资源共享

必示科技加入云计算标准和开源推进委员会,助力AIOps行业标准建设

BizSeer必示科技

AIOPS 智能运维 必示科技

手撸二叉树之二叉搜索树中俩个节点之和

HelloWorld杰少

9月日更

鲲鹏展翅|SphereEx 获华为鲲鹏技术认证

SphereEx

Sign in with Apple被曝零日漏洞,可远程劫持任意用户帐号-InfoQ