WIKI

8.1 WebView远程执行漏洞检测

(1)描述

WebView远程代码执行相关的漏洞主要有CVE-2012-6336,CVE-2014-1939,CVE-2014-7224, 这些漏洞中最核心的漏洞CVE-2012-6336,另外两个CVE只是发现了几个默认存在的接口。

Android API < 17之前版本存在远程代码执行安全漏洞,该漏洞源于程序没有正确限制使用addJavaScriptInterface(CVE-2012-6636)方法,攻击者可以通过Java反射利用该漏洞执行任意Java对象的方法,导致远程代码执行安全漏洞。

(2)风险等级

提醒

(3)影响范围

CVE-2012-6636

Android API 16.0及之前的版本中存在安全漏洞,该漏洞源于程序没有正确限制使用WebView.addJavascriptInterface方法。远程攻击者可通过使用Java Reflection API利用该漏洞执行任意Java对象的方法

Google Android <= 4.1.2 (API level 16) 受到此漏洞的影响。

CVE-2014-1939

java/android/webkit/BrowserFrame.java 使用addJavascriptInterface API并创建了SearchBoxImpl类的对象。攻击者可通过访问searchBoxJavaBridge_接口利用该漏洞执行任意Java代码。

Google Android <= 4.3.1 受到此漏洞的影响

CVE-2014-7224

香港理工大学的研究人员发现当系统辅助功能中的任意一项服务被开启后,所有由系统提供的WebView都会被加入两个JS objects,分别为是accessibilityaccessibilityTraversal。恶意攻击者就可以使用accessibilityaccessibilityTraversal这两个Java Bridge来执行远程攻击代码.

Google Android < 4.4 受到此漏洞的影响。

(4)检测方法

检测类型:静态分析

A. WebView远程代码执行漏洞位置

WebView.addJavascriptInterface(Object obj, String interfaceName) 

B. WebView远程代码执行漏洞触发条件

使用addJavaScriptInterface方法注册可供JavaScript调用的Java对象;

使用WebView加载外部网页或者本地网页

Android系统版本低于4.2

(5)修复建议

ü  API等于高于17Android系统。出于安全考虑,为了防止Java层的函数被随意调用,Google4.2版本之后,规定允许被调用的函数必须以@JavascriptInterface进行注解。

ü  API等于高于17Android系统。建议不要使用addJavascriptInterface接口,以免带来不必要的安全隐患,如果一定要使用该接口:

a.如果使用https协议加载url,应用进行证书校验防止访问的页面被篡改挂马

b.如果使用http协议加载url,应进行白名单过滤、完整性校验等防止访问的页面被篡改

c.如果加载本地html,应将html文件内置在apk中,以及进行对html页面完整性的校验

ü  使用removeJavascriptInterface移除Android系统内部的默认内置接口:searchBoxJavaBridge_accessibilityaccessibilityTraversal

(6)样例分析

www.wooyun.org/bugs/wooyun-2015-0140708

www.wooyun.org/bugs/wooyun-2016-0188252

http://drops.wooyun.org/papers/548

(7)参考资料

http://jaq.alibaba.com/blog.htm?id=48

http://blog.nsfocus.net/android-webview-remote-code-execution-vulnerability-analysis

https://developer.android.com/reference/android/webkit/WebView.html