写点什么

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:095606
用户头像
万佳 前InfoQ编辑

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

关注

评论

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

Seata x 2022 开源之夏 ,一起来做开源达人!

阿里巴巴云原生

阿里云 云原生 seata 开源之夏

Java 8 开始新增的 Optional 类 - Optional 对象中的返回

HoneyMoose

Tomcat安全优化

jiangxl

tomcat Java web

Redis「7」实现分布式锁

Samson

redis 学习笔记 5月月更

在线文本列表差集计算工具

入门小站

工具

基于Redis6.2.6版本部署Redis Cluster集群

jiangxl

5月25日,阿里云开源 PolarDB-X 将迎来重磅升级发布

阿里云数据库开源

开源 开源数据库 国产数据库 PolarDB-X 数据库·

五、浅谈容器逃逸

穿过生命散发芬芳

5月月更 容器逃逸

【架构训练营】模块一作业

知北游

云钉一体:EventBridge 联合钉钉连接器打通云钉生态

阿里巴巴云原生

阿里云 云原生 事件总线 EventBridge

Flutter 开源状态管理插件一览

岛上码农

flutter ios 安卓 移动端开发 5月月更

linux之grep使用技巧

入门小站

Linux

【LeetCode】链表的中间结点Java题解

Albert

LeetCode 5月月更

在线HTML转CSV工具

入门小站

工具

JAVA程序对应不同的部署环境针对配置文件如何管理

jiangxl

Java tomcat

实现 LRU 缓存算法

Se7en

学生管理系统架构设计

Justin1024

架构实战营-模块1作业

Gavin.Yang

数据库连接池 -Druid 源码学习(八)

wjchenge

Druid 数据库连接池

架构实战营 模块一作业

Gor

通过JConsoler监控Tomcat的JVM内存

jiangxl

Redis Cluster集群收缩主从节点详细教程

jiangxl

架构训练营 模块一作业

小马

「架构实战营」

Cocos creatorの摇杆操控运动

空城机

Cocos 5月月更

⭐万字长篇超详细的图解Tomcat中间件方方面面储备知识⭐

jiangxl

tomcat Java web

Linux环境下部署Jpress大型博客网站

jiangxl

Bootstrap 和 WordPress 的区别

海拥(haiyong.site)

bootstrap Wordpress 博客部署 WordPress 5月月更

毫秒级返回数据,58同城 DBA 团队选择 TDengine 解决传感器数据处理难题

TDengine

数据库 tdengine

微信业务架构&学生管理系统架构

intelamd

“学生管理系统”毕设架构设计

Pengfei

架构设计原则

开启Tomcat管理注主页功能

jiangxl

tomcat

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