換個(gè)SIM卡,能解鎖別人的手機(jī)嗎?

整個(gè)解鎖過(guò)程不超過(guò)兩分鐘。

國(guó)外網(wǎng)絡(luò)安全研究員偶然機(jī)會(huì) David Schütz繞過(guò)安卓手機(jī)的鎖屏方法非常簡(jiǎn)單,任何拿到手機(jī)的用戶(hù)都可以解開(kāi)手機(jī)。

整個(gè)過(guò)程只需要五個(gè)簡(jiǎn)單的步驟,大約兩分鐘。

萬(wàn)能破解鎖屏圖案oppo萬(wàn)能破解鎖屏圖案插圖

雖然谷歌這個(gè)問(wèn)題已經(jīng)發(fā)布了。Android 更新前,鎖屏漏洞持續(xù)了五個(gè)多月。

Schütz他是自己的Pixel 6 電池沒(méi)電,輸錯(cuò) 3 次 PIN 并使用 PUK(個(gè)人解鎖密鑰)代碼恢復(fù)鎖定 SIM 卡后,發(fā)現(xiàn)了這個(gè)漏洞。

令他驚訝的是,解鎖了 SIM 并選擇新的 PIN 代碼后,設(shè)備不需要輸入鎖屏密碼,而只需要掃描指紋。

出于安全原因,Android 重新啟動(dòng)時(shí),設(shè)備總是需要輸入鎖屏密碼或圖案,因此直接解鎖指紋是不正常的。

Schütz當(dāng)他試圖在不重啟設(shè)備的情況下重現(xiàn)漏洞時(shí),他認(rèn)為他也可以繞過(guò)指紋提示直接進(jìn)入主屏幕。

一般來(lái)說(shuō),利用漏洞主要有五個(gè)步驟。

1.為禁止鎖定設(shè)備上的生物特征認(rèn)證提供三個(gè)錯(cuò)誤指紋;

萬(wàn)能破解鎖屏圖案oppo萬(wàn)能破解鎖屏圖案插圖1

2.設(shè)備中的 SIM 卡與設(shè)置了 PIN 由代碼攻擊者控制 SIM 卡熱交換;

萬(wàn)能破解鎖屏圖案oppo萬(wàn)能破解鎖屏圖案插圖2

提示輸入錯(cuò)誤 SIM 三次卡密碼,鎖定 SIM 卡;

萬(wàn)能破解鎖屏圖案oppo萬(wàn)能破解鎖屏圖案插圖3

4.設(shè)備提示用戶(hù)輸入 SIM 個(gè)人解鎖密鑰 (PUK) 碼,這是唯一的 8 用于解鎖的位數(shù) SIM 卡;

萬(wàn)能破解鎖屏圖案oppo萬(wàn)能破解鎖屏圖案插圖4

5.控制攻擊者 SIM 輸入新的 PIN 碼。

萬(wàn)能破解鎖屏圖案oppo萬(wàn)能破解鎖屏圖案插圖5

安全漏洞影響廣泛,幾乎所有未更新2022年11月補(bǔ)丁的補(bǔ)丁都在運(yùn)行 Android 10、11、12 、13 手機(jī)版本受到影響,這是一個(gè)難以想象的數(shù)量。

雖然這個(gè)漏洞的使用需要得對(duì)方的手機(jī),但它仍然會(huì)產(chǎn)生巨大的影響,特別是對(duì)虐待他人、調(diào)查和丟失手機(jī)的用戶(hù)。

2022年6月, Schütz 這個(gè)安全漏洞向谷歌報(bào)告,編號(hào) CVE ID CVE-谷歌直到2022年11月7日才正式公布漏洞修復(fù)補(bǔ)丁。

另外,由于這個(gè)安全漏洞, Schütz 谷歌獲得了7萬(wàn)美元的高額獎(jiǎng)勵(lì)。

現(xiàn)在,谷歌的安卓工程師終于彌補(bǔ)了這個(gè)漏洞。

但令人驚訝的是,bug修復(fù)遠(yuǎn)不止他想象的一行代碼補(bǔ)丁。

根據(jù)提交的修改情況,僅需要更改的文件數(shù)量就達(dá)到12份:

萬(wàn)能破解鎖屏圖案oppo萬(wàn)能破解鎖屏圖案插圖6

那么這個(gè)漏洞到底是怎么出現(xiàn)的呢?

簡(jiǎn)單來(lái)說(shuō),Android有一個(gè)系統(tǒng)叫安全屏(security screen)概念包括兩件事,一件是PIN、各種直接解鎖密保的屏幕操作,如指紋和密碼,另一種是SIM PIN和SIM PUK解鎖手機(jī)鎖定狀態(tài)等各種操作。

這些操作被放在一個(gè)棧里(stack)中。

正常解鎖谷歌手機(jī)時(shí),直接用PIN、指紋或密碼都可以,但不能超過(guò)3次,否則會(huì)被鎖定。

但是如果忘記了密碼,手機(jī)(輸入三次錯(cuò)誤密碼后)被迫鎖定,同時(shí)SIM PIN可以看出,它將被放置在其他屏幕解鎖操作上,以解除手機(jī)的鎖定狀態(tài)。

萬(wàn)能破解鎖屏圖案oppo萬(wàn)能破解鎖屏圖案插圖7

此時(shí),如果使用SIM卡自帶的PUK密碼可以通過(guò)一個(gè)名字PUK重置組件模塊調(diào)用.dismiss()函數(shù),解除手機(jī)鎖定,繼續(xù)顯示棧下其他屏幕解鎖操作,在弟弟的情況下是指紋鎖屏。

這里注意,.dismiss()函數(shù)不是專(zhuān)人專(zhuān)用函數(shù),不僅會(huì)解除SIM卡的手機(jī)鎖定屏幕,連接PIN、正常的鎖屏,如密碼和指紋,也可以解鎖……

這使得它很容易受到競(jìng)爭(zhēng)條件的影響線程執(zhí)行順序有一點(diǎn)誤差,可能會(huì)導(dǎo)致屏幕解鎖問(wèn)題。

舉個(gè)栗子,如果是PUK重置組件模塊調(diào)用.dismiss()函數(shù)前,操作改變了當(dāng)前的安全屏幕,所以.dismiss()函數(shù)可能會(huì)誤解鎖指紋鎖屏。

萬(wàn)能破解鎖屏圖案oppo萬(wàn)能破解鎖屏圖案插圖8

因?yàn)槭謾C(jī),關(guān)鍵來(lái)了SIM卡狀態(tài)隨時(shí)更新(系統(tǒng)一直在監(jiān)控SIM卡狀態(tài)),所以如果SIM卡狀態(tài)發(fā)生變化,系統(tǒng)將更新當(dāng)前的安全屏幕。

所以一旦“PUK重置組件成功調(diào)用.dismiss()函數(shù)會(huì)解鎖PUK直接解鎖指紋鎖屏前的屏幕!

根據(jù)谷歌公開(kāi)的漏洞報(bào)告,它在Android 10到Android 可能出現(xiàn)在13系統(tǒng)中。

現(xiàn)在,安卓工程師已經(jīng)重構(gòu)了.dismiss()函數(shù),簡(jiǎn)單來(lái)說(shuō)就是給它一個(gè)小補(bǔ)丁,讓它只能用SimPuk標(biāo)記的安全屏幕(即只能解除手機(jī)鎖定屏幕)。

永遠(yuǎn)不要假設(shè)任何事情bug只有一種特殊情況。如果不解決代碼的基本邏輯,災(zāi)難將永遠(yuǎn)存在。

萬(wàn)能破解鎖屏圖案oppo萬(wàn)能破解鎖屏圖案插圖9