2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

关注

评论

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

v04.03 鸿蒙内核源码分析(任务调度) | 任务是内核调度的单元 | 百篇博客分析 HarmonyOS 源码

鸿蒙研究站

HarmonyOS 任务栈 OpenHarmony 鸿蒙系统

产品经理技能手册

俞凡

产品经理 产品管理 认知

stm32-HAL使用usart发送中断判断发送标志库问题

良知犹存

stm32

【SpringCloud技术专题】「Hystrix源码」分析故障切换的运作流程

码界西柚

源码分析 SpringCloud Hystrix 熔断器 10月月更

模块九作业

河马先生

架构实战营

【LeetCode】合并两个有序链表Java题解

Albert

算法 LeetCode 10月月更

风雨兼程,零代码训练营第四期顺利结业

明道云

产品经理职业发展框架

俞凡

产品经理 产品管理 认知

iOS开发独家秘籍-代码块Code Snippets

iOSer

ios 代码 ios开发

Linux开发coredump文件分析实战分享

良知犹存

Linux

v05.05 鸿蒙内核源码分析(任务管理) | 任务池是如何管理的 | 百篇博客分析 HarmonyOS 源码

鸿蒙研究站

HarmonyOS OpenHarmony 鸿蒙系统 任务队列

模块9

Geek_ywh40v

别被vector最后一个元素erase错误

良知犹存

c++

模块九毕业设计

以吻封笺

数据库优化之explain 的使用和常用的SQL优化或索引优化

Regan Yue

数据库 数据库优化 Regan Yue 10月月更

k8s replicaset controller源码分析(1)-初始化与启动分析

良凯尔

Kubernetes 源码分析 Kubernetes源码 #Kubernetes#

小程序中如何显示Markdown文本

Changing Lin

10月月更

敬畏用户

FunTester

软件测试 测试 用户 FunTester 用户思维

5款良心工具,专治各种流氓顽固软件!

Jackpop

校友录小程序开发笔记三十一:校庆模块设计与实现

CC同学

SpringBoot 实战:优雅的使用枚举参数(原理篇)

看山

Java Spring Boot Effective Spring 10月月更

技术公众号小白互助网络

Felix

GitHub 微信公众号 自媒体

012云原生之微服务

穿过生命散发芬芳

云原生 10月月更

一文带你盘点“微服务”中的技术点

Simon郎

微服务 Spring Cloud spring cloud alibaba java

大神Jeff Dean相关的一些项目

春秋易简

在开源项目或工作项目中使用git建立fork仓库

良知犹存

git

stm32-HAL使用stop模式后DMA初始化的问题

良知犹存

stm32

阿里云云计算助理工程师认证(ACA)50个资源合集和备考题库 易筋 ARTS 打卡 Week 72

John(易筋)

ARTS 打卡计划

马拉车算法,其实并不难!!!

秦怀杂货店

数据结构 算法 LeetCode

业务中台数据一致性方案

慕枫技术笔记

后端 引航计划

模块九作业:设计电商秒杀系统

Felix

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