長達六個月未修復的重大 Android 漏洞

圖片來源

 

2022 年夏天,網路安全專家 David Schütz 在外奔波一天,他的 Google Pixel 6 手機電力即將耗盡。當他回到家想要發送一封簡訊時,手機恰好沒電而突然關機。Schütz 急忙找出充電器,重新開機後,被要求輸入 SIM PIN 碼,而他不小心輸錯了 3 次 PIN 碼,想當然爾,SIM 卡被鎖住了 — 這時得輸入 PUK 碼才能解鎖。當他輸入 PUK 碼,並設定新的 SIM 卡密碼後,還沒有輸入開機密碼或掃描指紋,手機就自動解鎖了!

一般人可能覺得這沒什麼,反正手機可以啟動就好,然後繼續生活。然而 Schütz 是名對於軟體或設備執行異常相當敏銳的專業人員。他想要弄清楚,為何他的手機重新開機後不再需要輸入密碼就能解鎖。在重複試驗數遍後,他發現,只要自上鎖的 Android 手機中取出 SIM 卡,重新插入,輸入錯誤的 PIN 碼三次,再輸入 PUK 碼,就可以繞過手機鎖定,直接進入主畫面!甚至任何人都可以直接將 Google Pixel 6 手機內原有 SIM 卡換上自己的 SIM 卡,輸入錯誤的 PIN 碼三次後,再輸入預設的 PUK 回復碼,繞過 Android 的螢幕鎖定保護。Schütz 在他的部落格上詳細說明此一發現,並趕緊通報 Google,但若以為 Google 很快就會修復這個錯誤,那就誤會了。這個嚴重的安全漏洞威脅大量使用 Android(版本 11 到 13)的智慧型手機將近半年 – 從 6 月到 11 月!

簡單來說,此漏洞可以繞過鎖定螢幕,就算不知道密碼,也能取用手機上所有資料。這個漏洞根本沒用到複雜的攻擊機制,只要輸入 SIM 卡 PUK 碼(甚至插入任何一張 SIM 卡都可以)就足以騙過 Pixel 6 及 Pixel 5 手機的防護而允許存取,不會進一步顯示螢幕鎖。其他 Android 裝置也有同樣的問題。Android 智慧型手機有多個鎖定畫面,包括輸入密碼的畫面、掃描指紋的提示,及輸入 SIM PIM 的視窗。成功通過其中一項畫面的安全驗證,會觸發下一個鎖定畫面出現。但是到了輸入 PUK 碼這個畫面,會導致「關閉螢幕鎖」的功能被呼叫兩次,因此手機沒有顯示指紋掃描畫面,而是直接解鎖。

為何這麼嚴重的漏洞花費了將近六個月的時間解決?當時 Schütz 透過 Google 的漏洞獎勵計畫,向 Google 通報了這個漏洞。根據此項計畫的原則,若發現繞過多個甚至全部螢幕鎖定畫面的漏洞,可以獲得高達 100,000 美元獎金獎勵。可是 Schütz 並沒有收到獎金,因為 Google 指出這個漏洞先前已有人報告過,不符合獎勵原則。

Schütz 無奈地接受這個回答。他想,既然已有人回報,這個漏洞應該很快就會被 Google 修復。但是直到 9 月(在他通報漏洞後過了三個月),他發現仍然可以利用這個 SIM 卡技巧繞過螢幕鎖定。剛好 Schütz 參加了 Google 在 9 月舉辦的一場安全研討活動,他在好幾位 Google 工程師面前,當場示範如何簡單繞過解鎖機制就能開機,於是,在 Android 的 11 月更新中終於修補了這個漏洞。最終 Schütz 獲得了 70,000 美元獎金。

儘管早先已有他人回報,但 Google 沒有認真看待這個錯誤。待 2022 年 6 月 Schütz 提出報告時,Google 也沒有任何回應。唯有等到與工程師面對面後,這個漏洞才得以關閉。

身為智慧型手機的使用者,以為開發人員都會優先處理嚴重錯誤並迅速關閉。但這項 Android 這項漏洞卻告訴我們,事實並非總是如此。