写点什么

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

  • 2020-06-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-06-01 15:095602
用户头像
万佳 前InfoQ编辑

发布了 677 篇内容, 共 374.7 次阅读, 收获喜欢 1805 次。

关注

评论

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

学习感悟

shun123456789

配置融云SDK的自签证书

融云 RongCloud

sdk

叫练手把手教你读JVM之GC信息

叫练

JVM JVM简介 JVM笔记

融云即时通讯SDK集成 -- 定制UI(三) ——兼容Android Q

融云 RongCloud

即时通讯

跳转到@消息的位置

融云 RongCloud

即时通讯

融云清空历史消息 Android 端

融云 RongCloud

sdk

金三银四跳槽阿里必备:分布式/高并发/Redis,不看我真的怕你后悔

比伯

Java 编程 架构 面试 程序人生

弱网测试工具

Geek_6370d5

在融云 IMkit 会话界面基础上添加消息已读未读

融云 RongCloud

IM

关于融云聊天室KV 值的正确使用

融云 RongCloud

即时通讯

技术实践 | 网易云信 QUIC 加速服务架构与实践

网易云信

架构 音视频

融云即时通讯SDK集成 -- 定制UI(一) ——会话界面小改动

融云 RongCloud

即时通讯

项目延期了,怎么办?

石云升

项目管理 28天写作 职场经验 管理经验 3月日更

融云如何把图片消息的图片上传到自己的文件服务器

融云 RongCloud

sdk

markdown如何插入图片、音频、视频?

xiezhr

markdown markdown语法 音频

阿里大师口述:让你可以在简历上写精通SpringBoot

编程 架构 springboot

Android 端如何添加自定义表情

融云 RongCloud

IM

融云即时通讯SDK集成 -- 通知检查

融云 RongCloud

即时通讯

融云如何更换用户信息

融云 RongCloud

即时通讯

融云即时通讯SDK集成 -- 华为推送的点击跳转处理

融云 RongCloud

即时通讯

融云 IMkit 拦截或监听所有发送消息

融云 RongCloud

sdk

京东数科面试真题:常见的 IO 模型有哪些?Java 中的 BIO、NIO、AIO 有啥区别?

Java 架构 面试

融云IMKit 动态删除或添加plugin 的实现

融云 RongCloud

IM

融云即时通讯SDK集成 -- 定制UI(二) ——添加自定义表情库

融云 RongCloud

融云 IM SDK 集成 --- 刷新会话界面和会话列表界面

融云 RongCloud

IM

一卷河图赋太虚:HMS Core CG kit与移动游戏新可能

脑极体

融云 ConversationListFragment 会话列表添加头部布局

融云 RongCloud

sdk

2万字系统总结,带你实现 Linux 命令自由?

比伯

Java 编程 架构 面试 程序人生

融云聊天室属性 kv

融云 RongCloud

IM

唠一唠融云 VIVO push 无法跳转的解决方案

融云 RongCloud

sdk

唠一唠融云的消息扩展功能

融云 RongCloud

sdk

Sign in with Apple被曝零日漏洞,可远程劫持任意用户帐号_安全_万佳_InfoQ精选文章