跳至主內容

部份安卓 (Android) 手機撥號器存在漏洞,可導致數據被損壞

發佈日期: 2012年09月28日 10591 觀看次數

在保安研討會 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的漏洞,可以被多類攻擊利用:

  1. 手機瀏覽器瀏覽到惡意的網站,含 "tel: < USSD指令>" 超連結
  2. 掃瞄到惡意的QRCode,內含 "tel: <USSD指令>" 或以上的惡意超連結
  3. NFC閱讀器掃瞄到惡意NFC tag,內含 "tel: "tel:<USSD指令>" 或以上的惡意超連結
  4. 發放 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指令(沒損害性的指令)的字串,以測試你的手機撥號器。

  1. 打開 QR碼閱讀器1
  2. 透過以下的QR碼,讀取測試字串,並點擊撥打字串進行測試 (如QR碼閱讀器已設定為自動打開連結,則不用點擊)
  3. 你的手機撥號器程會自動打開,如果手機顯示IMEI 碼,證明撥號器存在漏洞。

    

 

解決方法:

  1. 將手機升級到最新版本。
     
  2. 使用不接受 USSD 指令的第三方撥號器,如"Dialer One",並預設接收 "tel: <USSD>"。
    步驟:
    • 到 Play Store 下載第三方撥號器 "Dialer One",由Yermek Zhumagulov開發
    • 打開 QR碼閱讀器
    • 透過以下的QR碼,讀取測試字串,並點擊撥打字串
    • 手機會彈出程式選擇選項,點選「以此為本操作預設值」,並選擇 "Dialer One"
    • 完成

     

     

     

    (註: 設定了 "Dialer One" 為預設撥號器後,可以繼續使用手機原有的撥號器打出電話,"Dialer One" 只是被用作收接含有 "tel: " 的URI,以避開 USSD 攻擊。)
     
  3. 設定其他第三方程式不自動執行指令
    • QR Code 掃瞄器: 設定不直接開啟超連結及撥電話。
    • NFC: 預設不要開啟NFC; 設定不直接開啟超連結及撥電話。
    • 如手機支援 WAP Push SMS,設定為"提示"或"永不"。

 

註解1:有關下載QR二維碼閱讀器,可參考HKCERT網站內的「手機保安工具」
https://www.hkcert.org/mobile-security-tools