首頁 > 購物 > 正文

安卓重大鎖屏密碼漏洞,國產(chǎn)手機有幾個中招了?

2022-11-21 07:58:28來源:36kr

但還是希望谷歌未來上上心吧,這么簡單的漏洞,還能活到了2022......

上周,一條新聞吸引了托尼注意。

只用一張 SIM 卡,1 分鐘不到就能解鎖你的安卓手機?


(資料圖片僅供參考)

一個國外小哥發(fā)現(xiàn),不要刷機,不要電腦連線折騰,也不要 999 的 AK 火麒麟,只需要一張自己準(zhǔn)備的 SIM 卡,就可以解鎖別人的手機。

要知道這就意味著,如果你的手機丟了被人撿到,那陌生人可以用它自己的隨便一張 SIM 卡就破解你們鎖屏,數(shù)據(jù)安全形同虛設(shè)。

而且這個 BUG 會影響到的設(shè)備除了谷歌自家的 Piexl 以外,還包括開源的 LineageOS。

刑啊老哥,這空手套白狼的辦法,讓我有了一絲絲犯罪的念頭。。。

咳咳打住,咱們還是先來看看這哥們是咋操作的吧。

因為手機沒電而發(fā)現(xiàn)的 BUG

整件事情的起因非常簡單,在小哥經(jīng)過了長途跋涉的旅行之后,他的手機因為缺電而關(guān)機了,于是就順理成章的充電重啟。

恰巧他的手機開了 SIM 卡鎖,每次重啟手機或者插拔 SIM 卡后都需要驗證。

需要輸入自己設(shè)置的 PIN 碼解鎖,只有三次機會▼

更不巧的是,他忘了自己設(shè)置的 PIN 碼,三次機會都浪費了。

這時候 SIM 卡就進入了一個“安全鎖定”模式,需要輸入一個八位的PUK 碼才能解鎖。

同時它還要求你重新設(shè)置這張 SIM 卡的 PIN 碼。

而如果輸入錯了 10 次 PUK 碼,那這張 SIM 卡就會銷毀。

所以在小哥找到自己的 SIM 卡包裝,輸入 PUK 碼,重置了新的 PIN 碼之后,他終于成功的進入了自己手機的系統(tǒng)。

PUK 碼一般寫在 SIM 卡的包裝卡套上

或者可以打電話或者向營業(yè)廳查詢▼

進入了自己手機的系統(tǒng)。。。

發(fā)現(xiàn)問題了嘛,在整個過程中,他不需要輸入自己手機鎖屏密碼,就可以解鎖手機。

但是一般來說,手機在插拔 SIM 卡或者重啟之后,都是要強制你手動輸入一次密碼才行的。

一張自己的 SIM 卡,這么簡單就可以繞過別人手機的安全防線?托尼也找出了自己柜子底的 pixel 4a 試了試,按照小哥的教程一頓操作,結(jié)果真的打開了。。。

安卓的鎖屏,就這???

此時已經(jīng)輸入了 PUK 碼,重置 PIN 碼中▼

谷歌的反應(yīng)

按這 BUG 來說,那豈不是所有人的安卓設(shè)備都有安全性風(fēng)險?

認識到這件事嚴重性的小哥也是第一時間把漏洞發(fā)給了 Google。

照到他自己的說法,這是他迄今為止最簡單的一次報告了。。。一共就五個步驟,兩分鐘不到的時間就可以復(fù)現(xiàn)。

于是也順便去查了一下谷歌的 “賞金榜單”,依據(jù)谷歌的說法,這種高危漏洞能拿到最高 10w 美元的獎勵。

果然,比起一個大膽的想法。。。還是走正規(guī)路子來錢快。

但谷歌就不一樣了,雖然收到這個堪稱 “十萬火急” 的 Bug ,但它的表現(xiàn)還是一如既往的風(fēng)輕云淡。

開口就是 :你這個 Bug 以前有人已經(jīng)匯報過了( 雖然我們還沒修 ),我們不鼓勵重復(fù)的 Bug 匯報 ”( 10W 美元別想了?。?/strong>

除了態(tài)度以外,行動也在擺爛,小哥提交 Bug 三個月后,谷歌依舊沒有修好這個問題,一直到 9 月的安全補丁更新,小哥發(fā)現(xiàn)自己的問題還是能觸發(fā)。。。

期間他自己還跑到谷歌辦公室去了一趟,當(dāng)場給員工當(dāng)場演示此 Bug ,但依舊沒說好什么時候可以修復(fù)。。。

最后忍無可忍的小哥給谷歌下了 “ 最后通牒 ”。

你再不修,我就準(zhǔn)備在 10 月 15 號公布這個問題辣!

從這句話開始,谷歌的態(tài)度突然變了,不但改口說可以給小哥7w 美元的獎勵( 雖然你不是第一個發(fā)現(xiàn)的人,但是感謝有你我們才開始修理這個 Bug ),也開始積極溝通修 Bug 的時間。

最后,終于在 11 月 5 日的安全更新中這個問題得到了修復(fù),漏洞編號 CVE-2022-20465。

我們的手機,大抵可能應(yīng)該也許是更加安全了。

BUG 從哪里來?

手機看上去是告一段落了,那這 Bug 到底是個咋回事呢?

托尼自己也不是非常專業(yè)的程序員,在看了小哥總結(jié) + 谷歌修改的 AOSP 源碼之后,

試著稍微那么理解了一下下,拋磚引玉將給大家看看,感覺講的不太好的差友,也歡迎在評論區(qū)補充。

這次谷歌改動的地方還挺多的▼

簡單來說就是在安卓上有個叫做 “ 安全屏幕 ” 的概念,它包括了我們的鎖屏密碼,我們的指紋數(shù)據(jù)或者是面部數(shù)據(jù),也包括今天的 “ 罪魁禍?zhǔn)?” —— SIM 卡 PIN 碼以及 SIM 卡的 PUK 碼。

這些安全屏幕呢,是實時更新,覆蓋顯示,就像下圖一樣,雖然我的手機鎖屏了,但是在插入加了鎖的 SIM 卡之后,SIM 卡 PIN 碼鎖就覆蓋了手機的密碼鎖。

反應(yīng)有點慢,中間剪了一段加速▼

而當(dāng)一個 “ 安全屏幕 ” 完成了它的歷史使命之后就要被銷毀,就比如說我們輸入密碼解鎖屏幕,輸入 SIM 卡的 PIN 碼解鎖手機SIM 卡鎖。

負責(zé)銷毀它的函數(shù),叫做 getKeyguardSecurityCallback().dismiss() 函數(shù)( 下面簡稱 dismiss( ) )

但是到這問題出現(xiàn)了,.dismiss() 它雖然負責(zé)銷毀安全屏幕,可是它不負責(zé)消除哪一個安全屏幕。

也就是說不論是鎖屏,還是 PUK 鎖,碰上哪個就會清理掉哪個。。。

而偏偏這個安全屏幕會處在一個 “ 實時更新 ” 的狀態(tài) —— 因為手機會時不時檢測 SIM 卡的狀態(tài)。

所以在我們通過 PUK 鎖重置完 SIM 卡 PIN 碼之后,本來要銷毀 PIN 碼鎖這個安全屏幕的.dismiss() 函數(shù)可能就會先撞上 “指紋鎖屏” 或者 “密碼鎖屏” 這個安全屏幕,然后把它先行銷毀。

啪,我們的手機就解鎖了。

這就這次漏洞的成因,而安卓后續(xù)的 Bug 修改方式呢則是很簡單,準(zhǔn)備給 .dismiss() 函數(shù)增加 “ 認識能力 ”。

讓它在銷毀安全屏幕之前能認出來銷毀的是誰,省的亂殺無辜。

/

面對 BUG,其它手機表現(xiàn)怎么樣?

海外的故事告一段落了,Bug 得到了修改,我們的設(shè)備會更加的安全,發(fā)現(xiàn)問題的小哥也收獲了收入。

不過托尼感覺比起聽原生安卓的故事,大家可能更關(guān)心我們手上的系統(tǒng)表現(xiàn)的怎么樣。

正巧今年新出的這幾臺手機我在柜子里吃灰,于是呢就給各位差友簡單測試了一波。

手機的系統(tǒng)都展示在這里了,基本都是基于 安卓/AOSP 12 開發(fā)的。

都是剛拿出來直接測的,沒有更新最新補丁▼

按照小哥的方法,托尼一頓操作猛如虎的測試下來,結(jié)果有點出乎意料。

除了用原生系統(tǒng)的 Pixel,每一臺手機都守住了自己的 “安全底線” ,均在這個問題面前幸存了下來。

可能。。。因為大家都是自己重寫了鎖屏吧。

所以,這個 Bug 雖然聽起來挺離譜和危險,但是其實對咱們應(yīng)該影響不大。

但還是希望谷歌未來上上心吧,這么簡單的漏洞,還能活到 2022 。。。

撰文:小陳 編輯:面線

圖片、資料來源

Accidental $70k Google Pixel Lock Screen Bypasshttps://cs.android.com/android/_/android/platform/frameworks/base/+/18b88655a4d3d70733a9d12f740b6790f9061eaa:packages/SystemUI/src/com/android/keyguard/KeyguardSimPukViewController.java;l=280;drc=a9143bf7bdf0b9c8bd5535485aee802ad0ad54be;bpv=0;bpt=0

Pixel 6 Full Lockscreen Bypass POC —— David Schütz

https://news.ycombinator.com/item?id=33544883

關(guān)鍵詞: 這個問題 什么時候

責(zé)任編輯:hnmd004