上周,一条新闻引起了托尼的注意。
只用一张SIM卡不到1分钟就能解锁安卓手机?
一个外国兄弟发现,不用刷手机,不用麻烦电脑连接,999 AK火麒麟也不要了。只需要一张自己准备的SIM卡就可以解锁别人的手机。
要知道,这就意味着如果你的手机丢了,有人捡到了,陌生人可以用自己的任意一张SIM卡解锁你的屏幕,数据安全没用。
而且,除了谷歌自己的Piexl,受此BUG影响的设备还包括开源的LineageOS。
惩罚,兄弟,这种空手套白狼的做法让我有点愧疚。。。
咳咳,停下来。先看看这家伙是怎么操作的。
因为手机没电而发现的 BUG
整件事的起因很简单。长途跋涉,哥哥的手机因为没电关机了,再充一次也就顺理成章了。
正好他的手机有SIM卡锁,每次重启手机或者插拔SIM卡都需要验证。
需要输入自己的PIN码才能解锁,只需要三次▼
更不幸的是,他忘记了自己的密码,三次机会都浪费了。
此时,SIM卡进入“安全锁定”模式,需要八位PUK码才能解锁。
同时还要求你重置这张SIM卡的PIN码。
如果你输错10次PUK密码,SIM卡就会被销毁。
所以在小哥找到他的SIM卡包,输入PUK码并重置新的PIN码后,他终于成功进入了他手机的系统。
PUK码一般写在SIM卡的包装卡套上。
或者可以打电话或者问营业厅▼
进入他手机的系统。。。
发现了问题,在整个过程中,他不用输入自己的手机锁屏密码就可以解锁手机。
但一般来说,SIM卡插上或者重启后,你都要手动输入密码。
自己的一张SIM卡就能这么简单绕过别人手机的安全线?托尼还在他的柜子底部找出了pixel 4a并试用了一下。他按照小哥哥的教程,结果真的开了。。。
安卓锁屏,就在这里???
此时,PUK码已经输入,PIN码中的▼复位。
谷歌的反应
依据这个BUG,大家的安卓设备不都是安全隐患吗?
意识到此事严重性的小弟也第一时间把漏洞发给了谷歌。
按照他自己的说法,这是他当前为止最简单的一份报告。。。只有五个步骤,不到两分钟就能重现。
所以我也顺便查了一下谷歌的“赏金榜”。依据谷歌的说法,这个高危漏洞可以获得高达10w美元的奖励。
果然,相比一个大胆的想法。。。还是走正规途径快速拿到钱。
但是谷歌不一样。虽然它收到了这个被称为“紧急”的Bug,但它的性能还是一如既往的轻盈。
开场是:“你的Bug之前已经被举报过了(虽然我们还没修复),我们不鼓励重复的Bug举报”(10W美金,算了!)
除了态度,动作也烂。哥哥提交Bug三个月后,谷歌还是没有修复问题。直到9月份更新了安全补丁,哥哥才发现自己的问题依然可以触发。。。
期间,他还去了谷歌的办公室,现场向员工演示了这个Bug,但他仍然没有说什么时候能修好。。。
最后,忍无可忍的小哥哥给谷歌下了“最后通牒”。
如果不修复,我就要在10月15日公布这个热点问题了!
从这句话开始,谷歌的态度突然转变。它不仅改口说可以给我小哥哥7w美金的奖励(虽然你不是第一个找到它的人,但是多亏了你我们才开始修复),还开始主动沟通修复的时间。
最后,这个问题终于在11月5日的安全更新中得到修复,漏洞号为CVE-2022-20465。
我们的手机可能应该更安全。
BUG 从哪里来?
手机好像已经走到尽头了,那么这个Bug是什么呢?
托尼本人并不是一个非常专业的程序员。看了小哥总结和Google修改的AOSP源代码
试着理解一点,我给大家看看。觉得自己说的不太好的,也欢迎在评论区补充。
Google这次做的改动还真不少▼
简单来说,Android上有个概念叫“安全屏”,它包括我们的锁屏密码,我们的指纹数据或者面部数据,还有今天的“罪魁祸首”——SIM卡的PIN码和SIM卡的PUK码。
这些安全屏幕是实时更新的,覆盖了显示屏,就像下图一样。虽然我的手机是锁着的,但是插入锁着的SIM卡后,SIM卡的PIN锁盖住了手机的密码锁。
反应有点慢,中间有加速▼
当一个“安全屏”完成了它的历史使命,它就会被摧毁。比如我们输入密码解锁屏幕,输入SIM卡的PIN码解锁手机SIM卡锁。
负责销毁它的函数称为getKeyGuardSecurityCallback()。disasset()函数(以下简称disasset())。
但是当这个问题出现的时候,。miss()负责破坏安全屏,但不负责消灭哪个安全屏。
也就是说,不管是锁屏还是PUK锁,遇到哪个就清理哪个。。。
但是,这个安全屏幕会处于“实时更新”状态——因为手机会时不时地检查SIM卡的状态。
因此,在我们通过PUK锁重置SIM卡的PIN码后。本来要破坏PIN码锁安全屏的miss()函数可能会先撞到指纹锁屏或者密码锁屏,然后先破坏。
砰,我们的手机解锁了。
这就是造成这个漏洞的原因,安卓后续的Bug修改方法很简单,就是准备在中加入“认知能力”。miss()函数。
让它在破坏安全屏之前认清是谁破坏的,以免伤及无辜。
面对 BUG,其它手机表现怎么样?
海外的故事告一段落,Bug被修改,我们的设备会更安全,发现问题的小哥哥也有了收益。
但是Tony觉得比起听原生Android的故事,人们可能更关心我们系统的性能。
正好我今年给这些新手机吃了柜子里的灰,就给你简单测试一下。
这里展示的都是手机系统,大概都是基于Android /AOSP 12开发的。
都是刚拿出来直接测的,最新补丁还没更新▼
按照小哥的方法,Tony操作起来猛如虎,结果有点出乎意料。
除了使用原生系统的像素,每一部手机都守住了自己的“安全底线”,挺过了这个问题。
也许吧。。。因为大家都自己重写了锁屏。
所以,虽然这个Bug听起来很离谱,很危险,但实际上应该对我们影响不大。
但还是希望谷歌未来能重视。这么简单的漏洞还能活到2022年。。。