安卓重大锁屏密码漏洞,国产手机有几个中招了?

上周,一条新闻吸引了托尼注意。


【资料图】

只用一张 SIM 卡,1 分钟不到就能解锁你的安卓手机?

一个国外小哥发现,不要刷机,不要电脑连线折腾,也不要 999 的 AK 火麒麟,只需要一张 自己准备的 SIM 卡 ,就可以解锁 别人的手机。

要知道这就意味着,如果你的手机丢了被人捡到,那陌生人可以用它自己的 随便一张 SIM 卡 就破解你们锁屏, 数据安全形同虚设。

而且这个 BUG 会影响到的设备除了谷歌自家的 Piexl 以外,还包括开源的 LineageOS。

刑啊老哥,这空手套白狼的办法,让我有了一丝丝犯罪的念头。。。

咳咳打住,咱们还是先来看看这哥们是咋操作的吧。

因为手机没电而发现的 BUG

整件事情的起因非常简单,在小哥经过了长途跋涉的旅行之后,他的手机因为缺电而关机了,于是就顺理成章的充电重启。

恰巧他的手机开了 SIM 卡锁,每次 重启手机 或者 插拔 SIM 卡 后都需要验证。

需要输入自己设置的 PIN 码解锁,只有三次机会 ▼

更不巧的是,他忘了自己设置的 PIN 码,三次机会都浪费了。

这时候 SIM 卡就进入了一个 “安全锁定” 模式,需要输入一个八位的 PUK 码 才能解锁。

同时它还要求你重新设置这张 SIM 卡的 PIN 码。

而如果输入错了 10 次 PUK 码,那这张 SIM 卡就会销毁。

所以在小哥找到自己的 SIM 卡包装,输入 PUK 码,重置了新的 PIN 码之后,他终于成功的进入了自己手机的系统。

PUK 码一般写在 SIM 卡的包装卡套上

或者可以打电话或者向营业厅查询 ▼

进入了自己手机的系统。。。

发现问题了嘛,在整个过程中,他不需要输入自己手机 锁屏密码, 就可以解锁手机。

但是一般来说,手机在插拔 SIM 卡或者重启之后,都是要强制你手动输入一次密码才行的。

一张自己的 SIM 卡,这么简单就可以绕过别人手机的安全防线? 托尼也找出了自己柜子底的 pixel 4a 试了试,按照小哥的教程一顿操作,结果真的打开了。。。

安卓的锁屏,就这???

此时已经输入了 PUK 码,重置 PIN 码中 ▼

谷歌的反应

按这 BUG 来说,那岂不是所有人的安卓设备都有安全性风险?

认识到这件事严重性的小哥也是第一时间把漏洞发给了 Google。

照到他自己的说法,这是他迄今为止最简单的一次报告了。。。 一共就五个步骤,两分钟不到的时间 就可以复现。

于是也顺便去查了一下谷歌的 “赏金榜单”,依据谷歌的说法,这种高危漏洞能拿到最高 10w 美元的奖励。

果然,比起一个大胆的想法。。。还是走正规路子来钱快。

但谷歌就不一样了,虽然收到这个堪称 “十万火急” 的 Bug ,但它的表现还是一如既往的风轻云淡。

开口就是 : 你这个 Bug 以前有人已经汇报过了 ( 虽然我们还没修 ), 我们不鼓励重复的 Bug 汇报 ” ( 10W 美元别想了!)

除了态度以外,行动也在摆烂,小哥提交 Bug 三个月后,谷歌依旧没有修好这个问题,一直到 9 月的安全补丁更新,小哥发现自己的问题还是能触发。。。

期间他自己还 跑到谷歌办公室 去了一趟,当场给员工当 场演示此 Bug ,但依旧没说好什么时候可以修复。。。

最后忍无可忍的小哥给谷歌下了 “ 最后通牒 ”。

你再不修,我就准备在 10 月 15 号公布这个问题辣!

从这句话开始,谷歌的态度突然变了,不但改口说可以给小哥 7w 美元 的奖励( 虽然你不是第一个发现的人,但是感谢有你我们才开始修理这个 Bug ),也开始积极沟通修 Bug 的时间。

最后,终于在 11 月 5 日的安全更新中这个问题得到了修复,漏洞编号 CVE-2022-20465。

我们的手机,大抵可能应该也许是更加安全了。

BUG 从哪里来?

手机看上去是告一段落了,那这 Bug 到底是个咋回事呢?

托尼自己也不是非常专业的程序员,在看了 小哥总结 + 谷歌修改的 AOSP 源码 之后,

试着稍微那么理解了一下下,抛砖引玉将给大家看看,感觉讲的不太好的差友,也欢迎在评论区补充。

这次谷歌改动的地方还挺多的 ▼

简单来说就是在安卓上有个叫做 “ 安全屏幕 ” 的概念,它包括了我们的 锁屏密码 ,我们的 指纹数据 或者是 面部数据 ,也包括今天的 “ 罪魁祸首 ” —— SIM 卡 PIN 码 以及 SIM 卡的 PUK 码

这些安全屏幕呢,是 实时更新,覆盖显示 ,就像下图一样,虽然我的手机锁屏了,但是在插入加了锁的 SIM 卡之后,SIM 卡 PIN 码锁就覆盖了手机的密码锁。

反应有点慢,中间剪了一段加速 ▼

而当一个 “ 安全屏幕 ” 完成了它的历史使命之后就要被 销毁 ,就比如说我们输入密码解锁屏幕,输入 SIM 卡的 PIN 码解锁手机SIM 卡锁。

负责销毁它的函数,叫做 getKeyguardSecurityCallback().dismiss() 函数( 下面简称 dismiss( ) )

但是到这问题出现了,.dismiss() 它虽然负责销毁安全屏幕, 可是它不负责消除哪一个安全屏幕。

也就是说不论是锁屏,还是 PUK 锁, 碰上哪个就会清理掉哪个 。。。

而偏偏这个安全屏幕会处在一个 “ 实时更新 ” 的状态 —— 因为手机会时不时检测 SIM 卡的状态。

所以在我们通过 PUK 锁重置完 SIM 卡 PIN 码之后,本来要销毁 PIN 码锁这个安全屏幕的.dismiss() 函数可能就会先撞上 “指纹锁屏” 或者 “密码锁屏” 这个安全屏幕,然后把它先行销毁。

啪,我们的手机就解锁了。

这就这次漏洞的成因,而安卓后续的 Bug 修改方式呢则是很简单,准备给 .dismiss() 函数增加 “ 认识能力 ”。

让它在销毁安全屏幕之前能 认出来销毁的是谁,省的乱杀无辜。

面对 BUG,其它手机表现怎么样?

海外的故事告一段落了,Bug 得到了修改,我们的设备会更加的安全,发现问题的小哥也收获了收入。

不过托尼感觉比起听 原生安卓 的故事,大家可能更关心 我们手上的系统 表现的怎么样。

正巧今年新出的这几台手机我在柜子里吃灰,于是呢就给各位差友简单测试了一波。

手机的系统都展示在这里了,基本都是基于 安卓/AOSP 12 开发的。

都是刚拿出来直接测的,没有更新最新补丁 ▼

按照小哥的方法,托尼一顿操作猛如虎的测试下来,结果有点出乎意料。

除了用原生系统的 Pixel,每一台手机都守住了自己的 “ 安全底线 ” ,均在这个问题面前幸存了下来。

可能。。。因为大家都是自己重写了锁屏吧。

所以,这个 Bug 虽然听起来挺离谱和危险,但是其实对咱们应该影响不大。

但还是希望谷歌未来上上心吧,这么简单的漏洞,还能活到 2022 。。。

关键词: 这个问题 十万火急

推荐DIY文章
主机存在磨损或划痕风险 PICO4便携包宣布召回
穿越湖海!特斯拉Cybertruck电动皮卡可以当“船”用
vivoXFold+折叠旗舰开售 配备蔡司全焦段旗舰四摄
飞凡R7正式上市 全系标配换电架构
中兴Axon30S开售 拥有黑色蓝色两款配色
荣耀MagicBookV14 2022正式开售 搭载TOF传感器
it