换个SIM卡,能解锁别人的手机吗?
整个解锁过程不超过两分钟。
国外网络安全研究员偶然机会 David Schütz绕过安卓手机的锁屏方法非常简单,任何拿到手机的用户都可以解开手机。
整个过程只需要五个简单的步骤,大约两分钟。
虽然谷歌这个问题已经发布了。Android 更新前,锁屏漏洞持续了五个多月。
Schütz他是自己的Pixel 6 电池没电,输错 3 次 PIN 并使用 PUK(个人解锁密钥)代码恢复锁定 SIM 卡后,发现了这个漏洞。
令他惊讶的是,解锁了 SIM 并选择新的 PIN 代码后,设备不需要输入锁屏密码,而只需要扫描指纹。
出于安全原因,Android 重新启动时,设备总是需要输入锁屏密码或图案,因此直接解锁指纹是不正常的。
Schütz当他试图在不重启设备的情况下重现漏洞时,他认为他也可以绕过指纹提示直接进入主屏幕。
一般来说,利用漏洞主要有五个步骤。
1.为禁止锁定设备上的生物特征认证提供三个错误指纹;
2.设备中的 SIM 卡与设置了 PIN 由代码攻击者控制 SIM 卡热交换;
提示输入错误 SIM 三次卡密码,锁定 SIM 卡;
4.设备提示用户输入 SIM 个人解锁密钥 (PUK) 码,这是唯一的 8 用于解锁的位数 SIM 卡;
5.控制攻击者 SIM 输入新的 PIN 码。
安全漏洞影响广泛,几乎所有未更新2022年11月补丁的补丁都在运行 Android 10、11、12 、13 手机版本受到影响,这是一个难以想象的数量。
虽然这个漏洞的使用需要得对方的手机,但它仍然会产生巨大的影响,特别是对虐待他人、调查和丢失手机的用户。
2022年6月, Schütz 这个安全漏洞向谷歌报告,编号 CVE ID CVE-谷歌直到2022年11月7日才正式公布漏洞修复补丁。
另外,由于这个安全漏洞, Schütz 谷歌获得了7万美元的高额奖励。
现在,谷歌的安卓工程师终于弥补了这个漏洞。
但令人惊讶的是,bug修复远不止他想象的一行代码补丁。
根据提交的修改情况,仅需要更改的文件数量就达到12份:
那么这个漏洞到底是怎么出现的呢?
简单来说,Android有一个系统叫安全屏(security screen)概念包括两件事,一件是PIN、各种直接解锁密保的屏幕操作,如指纹和密码,另一种是SIM PIN和SIM PUK解锁手机锁定状态等各种操作。
这些操作被放在一个栈里(stack)中。
正常解锁谷歌手机时,直接用PIN、指纹或密码都可以,但不能超过3次,否则会被锁定。
但是如果忘记了密码,手机(输入三次错误密码后)被迫锁定,同时SIM PIN可以看出,它将被放置在其他屏幕解锁操作上,以解除手机的锁定状态。
此时,如果使用SIM卡自带的PUK密码可以通过一个名字PUK重置组件模块调用.dismiss()函数,解除手机锁定,继续显示栈下其他屏幕解锁操作,在弟弟的情况下是指纹锁屏。
这里注意,.dismiss()函数不是专人专用函数,不仅会解除SIM卡的手机锁定屏幕,连接PIN、正常的锁屏,如密码和指纹,也可以解锁……
这使得它很容易受到竞争条件的影响线程执行顺序有一点误差,可能会导致屏幕解锁问题。
举个栗子,如果是PUK重置组件模块调用.dismiss()函数前,操作改变了当前的安全屏幕,所以.dismiss()函数可能会误解锁指纹锁屏。
因为手机,关键来了SIM卡状态随时更新(系统一直在监控SIM卡状态),所以如果SIM卡状态发生变化,系统将更新当前的安全屏幕。
所以一旦“PUK重置组件成功调用.dismiss()函数会解锁PUK直接解锁指纹锁屏前的屏幕!
根据谷歌公开的漏洞报告,它在Android 10到Android 可能出现在13系统中。
现在,安卓工程师已经重构了.dismiss()函数,简单来说就是给它一个小补丁,让它只能用SimPuk标记的安全屏幕(即只能解除手机锁定屏幕)。
永远不要假设任何事情bug只有一种特殊情况。如果不解决代码的基本逻辑,灾难将永远存在。