Kate Li (Taiwan)的部落格

首頁

6771:android語音信箱偽造漏洞分析

作者 morcillo 時間 2020-04-06
all

穀歌近期對外公佈了12月份的安全公告,其中包含騰訊安全平臺部終端安全團隊提交的語音信箱偽造漏洞(CVE-2016-6771),該漏洞可導致惡意應用進行偽造語音信箱攻擊。現時穀歌已經發佈補丁,本文將對該漏洞進行分析。

漏洞概述

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,欺騙用戶

修復方案穀歌的修復方案是設定該組件為不匯出https://android.googlesource.com/platform/packages/services/Telephony/+/a39ff9526aee6f2ea4f6e02412db7b33d486fd7d

時間線•2016.09.17提交漏洞報告至Android issue Tracker•2016.10.04確認漏洞,ANDROID-31566390•2016.10.27分配CVE-2016-6771•2016.12.06穀歌公告

參攷[1].https://shubs.io/breaking-international-voicemail-security-via-vvm-exploitation/[2].http://www.gsma.com/newsroom/wp-content/uploads/2012/07/OMTP_VVM_Specification13.pdf[3].(http://stackoverflow.com/questions/12335642/ create-pdu-for-android-that-works-with-smsmessage-createfrompdu-gsm-3gpp)