*** 次數:60000 已用完,請聯系開發者***
換個 SIM 卡,就能解鎖別人的手機?!
并且整個解鎖過程不超過兩分鐘。
一位外國小哥偶然間發現了谷歌 Pixel 手機上的這個漏洞:
能夠直接繞過手機本身的指紋和密碼保護,切換手機卡就能更改密碼解鎖屏幕。
嚴格來說,這個漏洞并非谷歌 Pixel 手機 " 獨有 ",而是 Android 系統中的一個 bug,任何基于 Android 搭建的操作系統都可能受到影響。
例如有網友試了試開源安卓系統 LineageOS(刷機黨常用系統),就發現同樣 " 中招了 ":
還有網友在自己的 Android12 系統上試了下這種破解方式,"it works"!
不過這還不是最離譜的,更離譜的是這位小哥在向谷歌反饋之后,安全團隊隔了近半年才修復這個漏洞。
在說小哥和谷歌關于這個漏洞的 " 拉鋸戰 " 之前,我們先回過頭來看看這是個什么樣的漏洞?
2 分鐘內就能破解手機鎖屏
小哥 " 貼心 " 地上傳了以破壞者視角破解漏洞全過程的視頻,整個過程花了不到兩分鐘。
話不多說,直接來看。
首先用錯誤的指紋和手機密碼解鎖手機,直至鎖定。
然后用一張其他的 SIM 卡直接更換手機原來的 SIM 卡。
接下來再用錯誤的 SIM 卡密碼(注意:這里的密碼和手機密碼不是一回事)鎖定 SIM 卡。
SIM 卡被鎖定后,手機便會索要其 PUK 密碼,在這 SIM 卡的原始包裝上,如果丟失也可直接打電話向運營商查詢。
PUK(Personal Identification NumberUnlock Key),SIM 卡自帶的 PIN 解鎖碼。
輸入 PUK 密碼后,直接重置新 SIM 的密碼便能開鎖,手機原有的密碼和指紋都成功繞過。
bingo!
至于是如何發現這個漏洞以及為什么過了近半年才修復這個漏洞,也是個很有意思的過程。
以下是小哥的經歷:
當時手機電量快耗盡關機了,他充上電重新啟動后,手機要求提供 SIM 卡的 PIN 碼,但卻突然忘記了密碼,在亂試一通之后 " 成功 " 把手機鎖定。
要解開這個鎖定便需要 PUK 密碼,所幸他找到了原有包裝并輸入了 PUK 碼。結果,重置 SIM 卡密碼后,手機竟然直接解鎖了!
發現這個大 Bug 之后,小哥向谷歌(Android VRP)提交了這個內部漏洞報告,也是從這時開始,小哥和谷歌的 " 拉鋸戰 " 開始了。
他仔細查看了 Android 和谷歌的設備安全獎勵計劃,發現自己最高可以獲得 10 萬美金的獎勵,于是便申請了。
不過在報告提交一個月后,小哥收到了 Android 安全團隊的一份郵件:
Android 安全團隊認為,這個問題另一位外部研究人員之前已經報告過了。
對此小哥認為,這份回郵的言外之意就是,最高十萬美金的獎勵他一分錢都拿不到。
時間又過了一個月,小哥收到安全團隊的郵件,對方稱漏洞還在修復中……
又又過了一個月,九月谷歌發布了新的補丁,但這個 Bug 依舊沒有修復……
不過小哥也不是輕言放棄的人,他直接來到谷歌辦公室,用谷歌 Pixel 手機演示了一下這個漏洞。
而后他給安全團隊定了個漏洞修復期限:10 月 15 日之前。而對方的回復也很干脆:10 月份這個 Bug 修不好!
在拉扯一番后,小哥和谷歌建立了聯系,能夠實時得到漏洞修復的反饋。
谷歌方也確定了修復工作的具體時間:11 月份進行,現在這個漏洞已于 11 月 5 日谷歌的安全更新中被解決。
值得一提的是,關于提交漏洞的獎勵,小哥最終也拿到了 7 萬美金,不過谷歌對此還做出了一番解釋,用小哥的原話來說,就是:
盡管我的報告是重復的,但正是因為我的報告,他們才開始著手修復。正因為如此,他們決定破例一次,并獎勵給我 70000 美元。
小哥和谷歌的完整對話鏈接附在文末了,感興趣的伙伴可以自行查看。(手動狗頭)
究竟為什么會出現這樣的漏洞?
現在,谷歌的安卓工程師們終于把這個漏洞給補上了。
然而讓小哥驚訝的是,bug 修復遠不止他想象的 " 一行代碼補丁 " 那么簡單。
從提交的修改情況來看,光是要改動的文件數量,就達到 12 個:
所以這個漏洞究竟是怎么出現的?
簡單來說,Android 系統中有一個叫做 " 安全屏幕 "(security screen)的概念,其中包含兩種東西,一種是 PIN、指紋、密碼等各種直接解鎖密保的屏幕操作,另一種是 SIM PIN 和 SIM PUK 等各種解鎖手機鎖定狀態的操作。
這些操作被放在一個棧(stack)中。
正常解鎖谷歌手機時,直接用 PIN、指紋或密碼都可以,但不能超過 3 次,否則就會被鎖定。
但如果忘記密碼,手機(在輸入 3 次錯誤密碼后)被強制鎖定了,同時 SIM PIN 條目可見,它就會被放置在其他屏幕解鎖操作之上,用來讓你解除手機的鎖定狀態。
△棧原理
這時候,如果使用 SIM 卡自帶的 PUK 密碼,就能通過一個叫 "PUK 重置組件 " 的模塊調用 .dismiss ( ) 函數,將手機鎖定解除,并繼續顯示棧下面的其他屏幕解鎖操作,在小哥的案例中是指紋鎖屏。
△就是這個函數
這里注意,.dismiss ( ) 函數可不是一個 " 專人專用 " 的函數,它并不只會解除 SIM 卡的手機鎖定屏幕,連 PIN、密碼和指紋之類的正常鎖屏也能解鎖……
這就導致它極容易受到競態條件影響,一旦兩個線程執行順序出現一點兒誤差,就可能導致屏幕解鎖出現問題。
競態條件即兩個或者以上進程或者線程并發執行時,其最終的結果依賴于進程或者線程執行的精確時序。
舉個栗子,如果在 "PUK 重置組件 " 的模塊調用 .dismiss ( ) 函數之前,就有操作改變了當前的安全屏幕,那么 .dismiss ( ) 函數就可能誤解鎖指紋鎖屏。
關鍵來了,由于手機 SIM 卡狀態是隨時更新的(系統一直在監視 SIM 卡狀態),因此如果 SIM 卡狀態發生變化,系統也會更新當前的安全屏幕。
所以一旦 "PUK 重置組件 " 成功調用了 .dismiss ( ) 函數,它就會在解鎖 PUK 屏幕之前,直接先解鎖了指紋鎖屏!
根據谷歌公開的漏洞報告,它在 Android 10 到 Android 13 系統中都可能出現:
當然,也有網友測試發現,Android 11 似乎不受影響,而是在 Android 12 中出現了。
還有網友發現三星手機也 " 逃過一劫 ":
現在,安卓工程師們重構了 .dismiss ( ) 函數,簡單來說就是給它打個小小的補丁,讓它只能解鎖帶有 "SimPuk" 標記的安全屏幕(也就是只能解除手機鎖定屏幕)。
小哥本人對此沒有異議,但也有網友認為,這不是這次漏洞的最優解:
永遠不要假設任何 bug 都只有一種特殊情況。如果不解決代碼的根本邏輯,災難就一直存在。
你的安卓手機中出現了這個 bug 嗎?
安卓鎖屏不到 2 分鐘被破解:僅需換一張 SIM 卡 洗耳恭聽功成不居花枝招展24. 不要因為自己長相不如對方而放棄追求的打算,長相只是一時的印象,真正決定能否結合主要取決于雙方的性格。我見過的帥哥配丑女,丑女配帥哥的太多了。李月因她為我們班做的貢獻,被授予“每周學生之星”的稱號。148.綠樹村邊合,青山郭外斜?!哆^故人莊》 晴絲牽緒亂,對滄江斜日,花飛人遠。垂楊暗吳苑,正旗亭煙冷,河橋風暖。蘭情蕙盼,惹相思、春根酒畔。又爭知、吟骨縈消,漸把舊衫重剪。海上風雨至,逍遙池閣涼。谷歌,sim卡,android,pixel,安卓It has taken a long time to convince the public that free enterprise does not mean that a company should be free to pollute the air, foul the rivers, and destroy the forests. |