CVE-2019-13322:Mi6瀏覽器RCE漏洞
簡介
在Pwn2own 2018上, F-Secure Labs研究人員證明了當用小米Mi6瀏覽器連接到攻擊者控制的web頁面後,小米Mi6瀏覽器會被攻擊。
具體步驟如下:
·用戶選擇web頁面、SMS消息或郵件中上的一個鏈接,鏈接回在小米瀏覽器應用中載入攻擊者控制的web頁面
·Web頁面使用JS bridge技術自動下載HTML文件
·使用可瀏覽視圖來載入Market app
·Market app通過視圖中提供的URL載入webView,載入攻擊者的另一個web頁面
·Web頁面使用另一個JS bridge函數來安裝下載的apk文件
使用intent代理自動啟動app
技術細節
初始的web頁面:下載文件和觸發Market APP
第一步要求受害者訪問攻擊者控制的網站,而且必須建議指向攻擊者頁面的鏈接。初始的web頁面會執行2個動作。
首先,自動下載HTML文件。通過含有anchor元素的下載屬性來自動下載再小米瀏覽器中是不允許的。但使用所有web頁面中都包含的JS bridge是可以的。
該bridge中含有一個名為share的函數,保存了base64編碼的數據到硬碟上。然後APK文件也會用該方法保存。
@JavascriptInterface public void share(String arg8, String arg9, String arg10, String arg11, String arg12) , "callBack":"test", "needArrange":true, "ref":"test", "refPosition":1234, "apkPath":"/sdcard/Android/data/com.android.browser/cache/share/share_-1038556538.jpg"}");}
App自動啟動
在該過程結束時,安裝完成後,app會執行一個到JS代碼的回調。這會嘗試調用install函數調用中callBack參數中明明的JS函數。這會用來觸發已安裝的app的自動啟動。
測試JS函數如下:
function test()
瀏覽器APP處理的格式中的content schemes如下所示:
…
Dzprovider就是Drozer app中的內容提供商:
嘗試載入當前內容URL後,瀏覽器APP必須確定mimetype是什麼。這是通過調用相關內容提供商的getType(Uri uri)方法來實現的。通過覆寫Drozer app的該方法,那麼就可以實現代碼執行,然後用來啟動Drozer bind shell:
@Overridepublic String getType(Uri uri)
本文翻譯自:https://labs.f-secure.com/advisories/xiaomi/