换SIM卡可以解锁别人的手机吗? !
但整个解锁过程不超过两分钟。
一次偶然的机会,美国网络安全研究员David Schütz发现了一种极其简单的方法,可以绕过Android手机的屏幕保护程序,任何收到手机的用户都可以解锁手机。
整个过程只需要五个简单的步骤,大约需要两分钟。
事实上,微软已经针对这个问题发布了Android更新,并且在更新之前,屏幕保护程序错误已经持续了五个多月。
Schütz 表示,他在 Pixel 6 电池没电、连续 3 次输入错误的 PIN 码并使用 PUK(个人解锁密钥)码恢复锁定的 SIM 卡后发现了该漏洞。
令他惊讶的是,解锁 SIM 卡并选择新的 PIN 码后,设备没有要求输入屏幕保护程序密码,只是进行指纹扫描。
出于安全考虑,Android设备在重启时总是需要输入屏保密码或图案,所以直接用指纹解锁并不正常。
Schütz 继续进行实验,当他尝试在不重新启动设备的情况下重现该错误时,他认为他也可以绕过指纹提示,直接走到主屏幕。
一般来说,利用此漏洞有五个主要步骤。
1. 提供三个错误的指纹以禁用锁定设备上的生物识别认证;
2、将设备中的SIM卡与攻击者控制的、设置了PIN码的SIM卡进行热插拔;
3、提示输入错误的SIM卡密码3次,锁定SIM卡;
4. 设备提示用户输入SIM个人解锁密钥(PUK)码,该码是用于解锁SIM卡的唯一的8位数字;
5. 输入攻击者控制的 SIM 卡的新 PIN 码。
该安全漏洞的影响非常广泛。 几乎所有运行Android 10、11、12和13版本且未更新2022年11月补丁的手机都深受影响。 这是一个难以想象的数字。
事实上,这个漏洞需要被用来获取对方的手机,而这仍然会产生巨大的影响,特别是对于强奸他人、被调查、丢失手机的用户来说。
2022 年 6 月,Schütz 向 Microsoft 报告了此安全漏洞,编号为 CVEIDCVE-2022-20465。 不过,直到2022年11月7日,微软很快就会公布针对该漏洞的补丁。
此外,Schütz 因这一安全漏洞还获得了微软 70,000 美元的奖励。
现在,微软的Android工程师终于修补了这个漏洞。
但令人惊讶的是,bug 修复远远超出了他想象中的“一行代码补丁”。
从提交的修改来看安卓手机锁屏软件,仅需要修改的文件数量就达到了12个:
那么这个漏洞是怎么出现的呢?
简单来说,Android系统中有一个叫做“安全屏幕”的概念,其中包括两件事,一是直接解锁安全屏幕的PIN、指纹、密码等屏幕操作,二是诸如SIMPIN和SIMPUK用于解锁手机的锁定状态。
这个操作是放在一个栈(stack)中的。
正常解锁微软手机时,可以直接使用PIN、指纹或密码,但不能超过3次,否则会被锁定。
但如果您忘记密码,手机将被强制锁定(输入错误密码3次后),并且SIMPIN条目同时可见,它将被放置在其他屏幕解锁操作之上,以便您解锁电话。
此时如果使用SIM卡自带的PUK密码,可以通过一个名为“PUK重置组件”的模块调用.dismiss()函数来解锁手机,并继续在栈下方显示其他屏幕解锁操作。 就我而言,它是指纹屏幕保护程序。
请注意,.dismiss() 函数不是“仅限个人”函数。 它不仅可以解锁SIM卡的手机锁屏,还可以解锁PIN、密码、指纹等普通屏保...
这使得它极易受到竞争条件的影响。 一旦两个线程的执行顺序稍有偏差,就可能会导致屏幕解锁出现问题。
例如,如果“PUK重置组件”模块调用.dismiss()函数之前有更改当前安全屏幕的操作安卓手机锁屏软件,则.dismiss()函数可能会误解指纹锁屏保。
关键来了,因为手机的SIM卡的状态是随时更新的(系统还在监控SIM卡的状态),所以如果SIM卡的状态发生变化,系统也会更新当前的安全屏幕。
所以一旦“PUK重置组件”成功调用.dismiss()函数,在解锁PUK屏幕之前也会直接解锁指纹屏保!
根据微软公开的漏洞报告,可能出现在Android10到Android13系统中。
现在,Android工程师重新改造了.dismiss()函数,简单地在上面打了一个小补丁,使其只能解锁带有“SimPuk”标记的安全屏幕(即只能解锁手机锁屏)。
永远不要假设任何错误都只有一种特殊情况。 如果不解决代码的底层逻辑,灾难将永远存在。