天天看點

CVE-2016-6771: Android 語音信箱僞造漏洞分析

谷歌近期對外公布了12月份的安全公告,其中包含騰訊安全平台部終端安全團隊送出的語音信箱僞造漏洞(cve-2016-6771),該漏洞可導緻惡意應用進行僞造語音信箱攻擊。目前谷歌已經釋出更新檔,本文将對該漏洞進行分析。

漏洞概述

CVE-2016-6771: Android 語音信箱僞造漏洞分析

phone應用中存在一處未受保護的暴露元件com.android.phone.vvm.omtp.sms.omtpmessagereceiver,該元件接收來自外部的intent,解析承載的vvm協定,構造語音信箱。該漏洞可以被本地惡意應用觸發,進行僞造語音信箱攻擊。該漏洞屬于比較正常的暴露元件問題。

漏洞詳情

在對aosp中系統應用進行分析時,發現系統應用teleservice.apk(com.android.phone)存在一處暴露元件,該元件為com.android.phone.vvm.omtp.sms.omtpmessagereceiver。根據元件名字應該是處理某類消息的元件,回想起以前谷歌出現的短信僞造漏洞,于是決定嘗試進行分析,看是否存在該類漏洞。

由于該元件是一個廣播接收者,于是分析onreceive回調函數處理邏輯,代碼如下:

1.當intent承載的額外資料phone為存在的phoneaccount且isvisualvoicemailenabled的時候,會進入vvm協定的解析流程;

2.解析流程中首先通過telephony$sms$intents.getmessagesfromintent,把intent裡承載的額外資料構造成smsmessage,通過檢視對應處理方法,可以知道intent承載的額外資料可以是3gpp短信消息結構;

3.從短信消息結構中提取出body部分,交由omtpsmsparser.parse解析,流程如下:

通過分析解析流程,可以知道vvm協定由//vvm:status或者//vvm:sync開頭,後面有多個字段,由“;”分号作為分割,“=”等号作為鍵值對,通過分析statusmessage(v4),syncmessage(v4)的構造函數

可以知道,程式要解析vvm協定如下:

//vvm:status:st=xxx;rc=0;rs=xxx;srv=xxx;tui=xxx;dn=xxx;ipt=xxx;u=xxx;pw=xxx;spt=xxx;smtp_u=xxx;smtp_pw=xxx

//vvm:sync:ev=xxx;id=xxx;l=xxx;t=xxx;s=xxx;c=xxx;dt=xxx;srv=xxx;ipt=xxx;u=xxx;pw=xxx

4.根據vvm協定,構造不同的資料結構,最後根據不同的協定執行不同的流程。

5.在測試過程中,發現//vvm:sync可以指定來源,僞造任意号碼。而如果要在進入可視化語音郵箱界面,點選播放語音時能夠産生語音的下載下傳,需要事先有//vvm:status協定,這樣在點選播放時才會去對應的伺服器進行賬号登入,擷取資料(具體的測試本人并深入去測試,如有錯誤望大家指正),相關vvm協定可以參考資料[1]和[2]。

poc如下 :

構造一個短信消息結構,其中body為符合相關解析流程的//vvm協定,就可以讓omtpmessagereceiver根據外部intent承載的額外資料構造僞造的語音信箱。其中,較早版本的android系統曾經出現過僞造短信的漏洞,直接利用那段代碼[3],構造短信消息可以。

實際效果

可以僞造語音信箱來源為12345678,欺騙使用者

CVE-2016-6771: Android 語音信箱僞造漏洞分析

修複方案

谷歌的修複方案是設定該元件為不導出

繼續閱讀