奥飞寺的松晓晓
量子比特 | 官方账号
换个SIM卡就能解锁别人的手机吗?!
整个解锁过程不超过两分钟。
一位外国小伙无意中发现了手机的这个漏洞:
可以直接绕过手机本身的指纹和密码保护,通过切换SIM卡来更改屏幕解锁密码。
严格来说,该漏洞并非谷歌手机“独有”,而是系统本身的BUG,任何基于该漏洞的操作系统都可能受到影响。
比如有网友试用了开源的系统(刷机族常用的系统),发现也很“中招”:
有网友在自己的系统上尝试了这种破解方法,“它”!
但这还不是最离谱的事情,更离谱的是,这个家伙向谷歌报告了漏洞之后,安全团队花了将近半年的时间才修复该漏洞。
在讲这个漏洞和之间的拉锯战之前,我们先来回顾一下,这是一个什么样的漏洞?
2 分钟内破解手机锁屏
该小伙“贴心”地上传了一段视频,以破坏者的角度,记录了破解漏洞的全过程,整个过程不到两分钟。
不用多说,让我们来看看。
首先,用错误的指纹和手机密码来解锁手机,直到手机被锁定。
然后直接用另一张 SIM 卡替换手机中原来的 SIM 卡。
接下来使用错误的SIM卡密码(注意:这里的密码和手机密码不一样)来锁定SIM卡。
SIM卡被锁后,手机会要求输入PUK密码,PUK密码在SIM卡原包装上,如丢失可直接致电运营商查询。
PUK(密钥),SIM卡自带的PIN解锁码。
输入PUK密码后,可以直接重置新SIM卡的密码来解锁手机,手机原有的密码和指纹就被成功绕过了。
!
至于这个漏洞是如何被发现的,以及为何花了近半年的时间才修复,也是一个很有意思的过程。
以下是我弟弟的经历:
当时,他的手机电量已接近耗尽并关机,充电重启后,手机提示输入SIM卡PIN码,但他突然忘记了密码,尝试了几次后,“成功”锁定了手机。
要解锁,他需要输入PUK码。幸运的是,他找到了原包装,输入了PUK码。结果,重置SIM卡密码后,手机直接解锁了!
在发现这个大bug之后,这家伙向(VRP)提交了这份内部漏洞报告,也是从这个时候,这家伙和之间的“拉锯战”开始了。
他仔细查看了谷歌的设备安全奖励计划,发现自己最高可以获得10万美元的奖励,于是便申请了。
然而,提交报告一个月后,这家伙收到了安全团队的一封电子邮件:
安全团队认为该问题此前已被另一位外部研究人员报告过。
这位年轻人以为这封回复邮件的暗示是,自己将拿不到最高10万美元的悬赏金中的一分钱。
一个月后,小伙子收到了安全团队的邮件,称该漏洞仍在修复中……
又过了一个月,9月份谷歌发布了新的补丁,但该漏洞仍未修复......
但这家伙并不是轻易放弃的人。他直接去了谷歌办公室,用谷歌手机演示了这个漏洞。
然后他给了安全团队一个修复漏洞的最后期限:10月15日之前。对方的回复也很直白:这个bug不可能在10月份修复!

经过一番讨论,该小伙子与 建立了联系,并能够获得有关漏洞修复的实时反馈。
谷歌也确定了修复工作的具体时间:将在11月份进行。目前该漏洞已在11月5日谷歌的安全更新中得到解决。
值得一提的是,这家伙最终因为提交了漏洞获得了 7 万美元的奖励,不过谷歌也对此给出了解释,用这家伙的原话来说,是:
尽管我的报告是重复的,但正是由于我的报告,他们才开始着手修复,因此他们决定破例并奖励我美元。
文章最后附上了这位小伙子和谷歌的完整对话,有兴趣的可以自己去看看。
为什么会出现这样的漏洞呢?
现在,谷歌的工程师终于修补了这个漏洞。
然而,令他惊讶的是,这个错误修复远不止他想象的“一行代码补丁”。
从提交的修改来看,单是需要修改的文件就高达12个:
那么这个漏洞是怎么产生的呢?
简单来说,系统里有一个概念叫“安全屏幕”( ),这个屏幕包括两点,一是PIN、指纹、密码等直接解锁安全保护的屏幕操作,二是SIM PIN、SIM PUK等解锁手机锁定状态的各种操作。
这些操作都放在堆栈()中。
正常解锁手机时,可以直接使用PIN码、指纹或密码,但不能超过3次,否则会被锁定。
但是,如果您忘记了密码,并且手机被强制锁定(输入 3 次错误密码后),并且 SIM PIN 条目可见,则它将位于其他屏幕解锁操作之上,允许您解锁手机。
△堆叠原理
这时候如果你使用SIM卡自带的PUK密码,就可以通过一个叫“PUK重置组件”的模块调用.()函数来解锁手机,并继续在栈下面显示其他屏幕解锁操作。上图中那个家伙就是指纹锁屏。
△ 就是这个函数
请注意,.()函数并不是一个“特殊函数”,它不仅可以解锁SIM卡的手机锁屏,还可以解锁PIN、密码、指纹等普通锁屏……
这使得它极易受到竞争条件的影响,一旦两个线程的执行顺序出现一点错误,就可能导致屏幕解锁出现问题。
当两个或多个进程或线程同时执行时,就会出现竞争条件,最终结果取决于进程或线程执行的精确时间。
例如,如果在 PUK 重置组件模块调用 .() 函数之前某个操作改变了当前安全屏幕,则 .() 函数可能会误解指纹锁屏幕。
这里到了重点,由于手机SIM卡的状态是随时更新的(系统一直在监控SIM卡的状态),所以如果SIM卡的状态发生变化,系统也会更新当前的安全屏幕。
所以“PUK重置组件”一旦成功调用.()函数,就会在解锁PUK屏幕之前直接解锁指纹锁屏!
根据 公开的漏洞报告,它可能发生在 10 到 13 个系统上:
当然也有网友测试过,发现11好像没有受到影响,但是在12中却出现了。
有网友还发现,三星手机也“逃过一劫”:
现在, 工程师对 .() 函数进行了重构,简单来说就是给它打上一个小补丁,让它只能解锁标有“ ”的安全屏幕(也就是只能解锁手机的锁屏)。
该小伙本人对此并无异议,但有网友认为这并不是此漏洞的最佳解决方案:
永远不要假设任何错误都只有一个特殊情况。如果你不解决代码的底层逻辑,灾难就会一直存在。
你的 手机是否出现了这个 bug?
对话门户:
feed.bugs..me
参考链接:
[1]
[2]
- 超过-
MEET 2023 会议启动
邀您共商智能产业如何渡过周期
今年12月,智能未来大会将再次邀请智能科技产业、科研、投资等领域大咖嘉宾,共同探讨人工智能产业的突围之道。
欢迎智能科技企业莅临大会,分享突破,交流划时代变革,共襄盛举!点击链接或下图可查看大会详情: