首页 > 其他分享 >你真的安全吗?

你真的安全吗?

时间:2023-01-31 18:01:47浏览次数:36  
标签:漏洞 小哥 安全 密码 手机 真的 解锁 SIM

换个 SIM 卡,就能解锁别人的手机?!

并且整个解锁过程不超过两分钟。

一位外国小哥偶然间发现了谷歌 Pixel 手机上的这个漏洞:

能够直接绕过手机本身的指纹和密码保护,切换手机卡就能更改密码解锁屏幕。

严格来说,这个漏洞并非谷歌 Pixel 手机“独有”,而是 Android 系统中的一个 bug,任何基于 Android 搭建的操作系统都可能受到影响。

例如有网友试了试开源安卓系统 LineageOS(刷机党常用系统),就发现同样“中招了”:

你真的安全吗?_Android

不过这还不是最离谱的,更离谱的是这位小哥在向谷歌反馈之后,安全团队隔了近半年才修复这个漏洞。

在说小哥和谷歌关于这个漏洞的“拉锯战”之前,我们先回过头来看看这是个什么样的漏洞?

2 分钟内就能破解手机锁屏

小哥“贴心”地上传了以破坏者视角破解漏洞全过程的视频,整个过程花了不到两分钟。

话不多说,直接来看。

首先用错误的指纹和手机密码解锁手机,直至锁定。

你真的安全吗?_手机破解_02

然后用一张其他的 SIM 卡直接更换手机原来的 SIM 卡。

你真的安全吗?_Android_03

接下来再用错误的 SIM 卡密码(注意:这里的密码和手机密码不是一回事)锁定 SIM 卡。

你真的安全吗?_Android_04

SIM 卡被锁定后,手机便会索要其 PUK 密码,在这 SIM 卡的原始包装上,如果丢失也可直接打电话向运营商查询。

PUK(Personal Identification NumberUnlock Key),SIM 卡自带的 PIN 解锁码。

你真的安全吗?_Android_05

输入 PUK 密码后,直接重置新 SIM 的密码便能开锁,手机原有的密码和指纹都成功绕过。

你真的安全吗?_Android_06

至于是如何发现这个漏洞以及为什么过了近半年才修复这个漏洞,也是个很有意思的过程。

以下是小哥的经历:

当时手机电量快耗尽关机了,他充上电重新启动后,手机要求提供 SIM 卡的 PIN 码,但却突然忘记了密码,在乱试一通之后“成功”把手机锁定。

要解开这个锁定便需要 PUK 密码,所幸他找到了原有包装并输入了 PUK 码。结果,重置 SIM 卡密码后,手机竟然直接解锁了!

发现这个大 Bug 之后,小哥向谷歌(Android VRP)提交了这个内部漏洞报告,也是从这时开始,小哥和谷歌的“拉锯战”开始了。

不过在报告提交一个月后,小哥收到了 Android 安全团队的一份邮件:

Android 安全团队认为,这个问题另一位外部研究人员之前已经报告过了。

对此小哥认为,这份回邮的言外之意就是,最高十万美金的奖励他一分钱都拿不到。

时间又过了一个月,小哥收到安全团队的邮件,对方称漏洞还在修复中……

又又过了一个月,九月谷歌发布了新的补丁,但这个 Bug 依旧没有修复……

不过小哥也不是轻言放弃的人,他直接来到谷歌办公室,用谷歌 Pixel 手机演示了一下这个漏洞。

而后他给安全团队定了个漏洞修复期限:10 月 15 日之前。而对方的回复也很干脆:10 月份这个 Bug 修不好!

在拉扯一番后,小哥和谷歌建立了联系,能够实时得到漏洞修复的反馈。

谷歌方也确定了修复工作的具体时间:11 月份进行,现在这个漏洞已于 11 月 5 日谷歌的安全更新中被解决。

值得一提的是,关于提交漏洞的奖励,小哥最终也拿到了 7 万美金,不过谷歌对此还做出了一番解释,用小哥的原话来说,就是:


尽管我的报告是重复的,但正是因为我的报告,他们才开始着手修复。正因为如此,他们决定破例一次,并奖励给我 70000 美元。

小哥和谷歌的完整对话链接附在文末了,感兴趣的伙伴可以自行查看。(手动狗头)

究竟为什么会出现这样的漏洞?

现在,谷歌的安卓工程师们终于把这个漏洞给补上了。

然而让小哥惊讶的是,bug 修复远不止他想象的“一行代码补丁”那么简单。

从提交的修改情况来看,光是要改动的文件数量,就达到 12 个:

你真的安全吗?_手机破解_07

所以这个漏洞究竟是怎么出现的?

简单来说,Android 系统中有一个叫做“安全屏幕”(security screen)的概念,其中包含两种东西,一种是 PIN、指纹、密码等各种直接解锁密保的屏幕操作,另一种是 SIM PIN 和 SIM PUK 等各种解锁手机锁定状态的操作。

这些操作被放在一个栈(stack)中。

正常解锁谷歌手机时,直接用 PIN、指纹或密码都可以,但不能超过 3 次,否则就会被锁定。

但如果忘记密码,手机(在输入 3 次错误密码后)被强制锁定了,同时 SIM PIN 条目可见,它就会被放置在其他屏幕解锁操作之上,用来让你解除手机的锁定状态。这时候,如果使用 SIM 卡自带的 PUK 密码,就能通过一个叫“PUK 重置组件”的模块调用.dismiss() 函数,将手机锁定解除,并继续显示栈下面的其他屏幕解锁操作,在小哥的案例中是指纹锁屏。

你真的安全吗?_手机破解_08

这里注意,.dismiss() 函数可不是一个“专人专用”的函数,它并不只会解除 SIM 卡的手机锁定屏幕,连 PIN、密码和指纹之类的正常锁屏也能解锁……

这就导致它极容易受到竞态条件影响,一旦两个线程执行顺序出现一点儿误差,就可能导致屏幕解锁出现问题。

关键来了,由于手机 SIM 卡状态是随时更新的(系统一直在监视 SIM 卡状态),因此如果 SIM 卡状态发生变化,系统也会更新当前的安全屏幕。

所以一旦“PUK 重置组件”成功调用了.dismiss () 函数,它就会在解锁 PUK 屏幕之前,直接先解锁了指纹锁屏!


文章来源:雷峰网、安全圈

关注团队公众号,更多精彩内容等你解锁

你真的安全吗?_Android_09

标签:漏洞,小哥,安全,密码,手机,真的,解锁,SIM
From: https://blog.51cto.com/u_15945480/6029842

相关文章

  • 交越失真的解决方式
    推挽输出方式由于开关晶体管的交替特性,避免不了的会造成一定量的交越失真。可以使用二极管或者倍增的方式进行补偿。个人学习用途博客部分内容摘抄自网络......
  • 如何安全无污染使utools不更新+typora免费旧版
    utools自从更新到3.*.*之后的超级面板改变,对我这种小屏笔记本来说,是个非常不友好的更新,那个面板我只用了截图和取色两功能,却要占那么大的空间,看得我好不爽,于是我上网......
  • 对线程安全的理解
    当多个线程访问同一个对象时,如果不用做额外的控制,调用这个对象的行为都可以获得正确的结果,就说这个对象是线程安全的。线程安全准确地说是内存安全,堆是共享内存,可以被所......
  • go笔记-并发赋值安全性
    参考资料https://cloud.tencent.com/developer/article/1810536并发赋值安全/不安全的类型并发赋值安全的类型:字节型,布尔型、整型、浮点型、字符型、指针、函数这些......
  • 盘点保护隐私安全的浏览器,密码锁屏这个功能,真香
    在互联网时代,大家都比较关心自己的隐私安全。一些互联网公司和在线客服会跟踪用户的在线活动,收集用户的个人信息,有时候甚至因为个人的不良习惯导致信息泄露,因此选择隐私和......
  • Microsoft Azure 解决方案:如何创建Linux VM以及安全管理建议?
    51CTO博客地址:https://blog.51cto.com/14669127Azure培训视频地址:https://space.bilibili.com/2000820534企业如果采用云平台管理数据或者部署开发环境,但我们都知道Clo......
  • 解决多线程的安全问题方式二
    /***解决多线程中线程安全的方式二:同步方法,操作共享数据的是一个方法*1.同步方法仍然涉及到同步监视器,只是不需要显示的声明*2.非静态的同步方法,同步监视器是th......
  • Math.random()的安全风险
    Math.random()函数返回一个0~1之间的伪随机浮点数,其在V8中的实现原理是这样的:为了保证足够的性能,Math.random()随机数并不是实时生成的,而是直接生成一组随机数(64个),并放在......
  • 钢铁安全VR培训系统模拟真实事故现场,带来逼真感官体验
    每当谈及安全生产,总有人避之不及,觉得安全事故很遥远,但事实却告诉我们危险其实无处不在,安全问题必须重视起来。由广州华锐互动制作的钢铁生产3D事故安全警示教育视频,包含钢......
  • 登山扣上架亚马逊平台需要做什么安全标准测试呢?
    近期,亚马逊在严查登山扣及其相关产品,被抽查到没有相关认证的登山扣产品将直接被下架!而登山扣上亚马逊,需要做什么认证呢?什么是登山扣登山扣是扣子的一种,顾名思义其就是用来在......