部份安卓 (Android) 手機撥號器存在漏洞,可導致數據被損壞
在保安研討會 Ekoparty 2012 上,一位講者 Ravi Borgaonkar 顯示了一個安卓系統智能手機的保安漏洞,攻擊者能遙距地使受影響的手機還原出廠設定或損壞SIM卡資料。
他展示該手機中的預設撥號器 (Dialer) 存在漏洞,會自動執行由其他軟件傳送過來的 USSD 指令,他向該手機發出「恢復出廠設定」的USSD指令,清除手機上的所有資料。
USSD 是甚麼?
USSD 全名 Unstructured Supplementary Service Data (非結構化補充業務數據),是服務供應商提供給用戶的指令,利用撥號器手動輸入指令,來設置電訊服務的設定。一些常用的USSD指令,有
- **21*<電話號碼># : 設置飛線服務到指定電話號碼
- *#06# : 顯示手機 IMEI
有些牌子的手機有專用的 USSD 指令,例如在三星手機撥號器中輸入 *#0*#,手機會進入測試模式,而三星手機也特定的USSD 指令來還原出廠設定。
撥號器處理USSD的漏洞如何被利用?
第三方程式,例如瀏覽器,有可能會傳送包含 "tel: " 的 <URI> 指令到撥號器,如果 "tel: " 後跟的是一個電話號碼,撥號器接收後只會顯示電話號碼方便使用者打出。如果第三方程式送來的URI是USSD指令,撥號器的正確處理,是不接收或不執行指令。但是有些手機的撥號器有漏洞,會在無需使用者介入下自動執行USSD指令,讓攻擊者則可以利用來進行遙距攻擊。
撥號器處理USSD的漏洞,可以被多類攻擊利用:
- 手機瀏覽器瀏覽到惡意的網站,含 "tel: < USSD指令>" 超連結
- 掃瞄到惡意的QRCode,內含 "tel: <USSD指令>" 或以上的惡意超連結
- NFC閱讀器掃瞄到惡意NFC tag,內含 "tel: "tel:<USSD指令>" 或以上的惡意超連結
- 發放 WAP Push SMS 到受影響的手機,內含 "tel: <USSD指令>" 或以上的惡意超連結
那些電話存在撥號器漏洞?
經過本中心測試,三星Galaxy W (Android 2.3.6)及Galaxy Y (Android 2.3.6) 均存在漏洞,另外,使用自定義 Android 2.3.7 CM7 ROM固件(Firmware)也存在問題,相信部份其他品牌的安卓 4.0 及安卓 2.3 或以下的智能手機都存在漏洞。
如何測試手機是否存在撥號器漏洞?
HKCERT 為你提供一個測試 QR碼,包含了顯示IMEI碼的USSD指令(沒損害性的指令)的字串,以測試你的手機撥號器。
- 打開 QR碼閱讀器1
- 透過以下的QR碼,讀取測試字串,並點擊撥打字串進行測試 (如QR碼閱讀器已設定為自動打開連結,則不用點擊)
- 你的手機撥號器程會自動打開,如果手機顯示IMEI 碼,證明撥號器存在漏洞。
解決方法:
- 將手機升級到最新版本。
- 使用不接受 USSD 指令的第三方撥號器,如"Dialer One",並預設接收 "tel: <USSD>"。
步驟:- 到 Play Store 下載第三方撥號器 "Dialer One",由Yermek Zhumagulov開發
- 打開 QR碼閱讀器
- 透過以下的QR碼,讀取測試字串,並點擊撥打字串
- 手機會彈出程式選擇選項,點選「以此為本操作預設值」,並選擇 "Dialer One"
- 完成
- 設定其他第三方程式不自動執行指令
- QR Code 掃瞄器: 設定不直接開啟超連結及撥電話。
- NFC: 預設不要開啟NFC; 設定不直接開啟超連結及撥電話。
- 如手機支援 WAP Push SMS,設定為"提示"或"永不"。
註解1:有關下載QR二維碼閱讀器,可參考HKCERT網站內的「手機保安工具」
https://www.hkcert.org/mobile-security-tools
分享至