漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2016-0195499
漏洞标题:驾考宝典WebView组件任意代码执行漏洞
相关厂商:驾考宝典
漏洞作者: 川zi
提交时间:2016-04-13 12:06
修复时间:2016-05-28 12:10
公开时间:2016-05-28 12:10
漏洞类型:文件上传导致任意代码执行
危害等级:低
自评Rank:2
漏洞状态:未联系到厂商或者厂商积极忽略
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2016-04-13: 积极联系厂商并且等待厂商认领中,细节不对外公开
2016-05-28: 厂商已经主动忽略漏洞,细节向公众公开
简要描述:
#该漏洞属于中国科学院信息工程研究所VARAS团队共同挖掘
驾考宝典有奖试驾页面使用了WebView组件,存在任意代码执行漏洞。
详细说明:
驾考宝典支持的最小SDK版本小于Android API 17,同时在有奖试驾页面使用了WebView组件,导致该组件存在WebView任意代码执行漏洞,攻击者可以篡改该页面从而利用该漏洞,使用户在打开软件页面时执行任意由攻击者构造的代码。
使用apktool反编译后,漏洞所在的文件位置为:
Lcom/handsgo/jiakao/android/controller/MainController.smali
漏洞所在函数为:a()V
具体代码位置如下图所示:
漏洞证明:
1.软件正常打开
2.搭建Kali dns欺骗环境
3.虚拟机所在PC连入Kali所在热点
4.进行dns缓存刷新后打开驾考宝典
有奖试驾页面加载时dns被欺骗,连入Kali服务器,加载恶意的html文件的任意JavaScript代码。图示显示了被篡改的页面通过java反射机制调用Android API获取IMEI、IMSI等信息用户信息泄露。
修复方案:
1. API Level等于或高于17的Android系统【4】
出于安全考虑,为了防止Java层的函数被随便调用,Google在4.2版本之后,规定允许被调用的函数必须以@JavascriptInterface进行注解,所以如果某应用依赖的API Level为17或者以上,就不会受该问题的影响(注:Android 4.2中API Level小于17的应用也会受影响)。按照Google官方文档[5]使用示例:
class JsObject {
@JavascriptInterface
public String toString() { return "injectedObject"; }
}
webView.addJavascriptInterface(new JsObject(), "injectedObject");
webView.loadData("", "text/html", null);
webView.loadUrl("javascript:alert(injectedObject.toString())");
2. API Level等于或高于17的Android系统
建议不要使用addJavascriptInterface接口,以免带来不必要的安全隐患,请参照博文《在Webview中如何让JS与Java安全地互相调用》[6]。
如果一定要使用addJavascriptInterface接口:
1) 如果使用HTTPS协议加载URL,应进行证书校验防止访问的页面被篡改挂马;
2) 如果使用HTTP协议加载URL,应进行白名单过滤、完整性校验等防止访问的页面被篡改;
3) 如果加载本地Html,应将html文件内置在APK中,以及进行对html页面完整性的校验;
3. 移除Android系统内部的默认内置接口
同时,在2014年发现在Android系统中webkit中默认内置的一个searchBoxJavaBridge_ 接口同时存在远程代码执行漏洞,该漏洞公布于CVE-2014-1939[7], 建议开发者通过以下方式移除该Javascript接口:
removeJavascriptInterface("searchBoxJavaBridge_")
2014年香港理工大学的研究人员Daoyuan Wu和Rocky Chang发现了两个新的攻击向量存在于android/webkit/AccessibilityInjector.java中,分别是"accessibility" 和"accessibilityTraversal" ,调用了此组件的应用在开启辅助功能选项中第三方服务的安卓系统中会造成远程代码执行漏洞。该漏洞公布于CVE-2014-7224, 此漏洞原理与searchBoxJavaBridge_接口远程代码执行相似,均为未移除不安全的默认接口,建议开发者通过以下方式移除该JavaScript接口:
removeJavascriptInterface("accessibility");
removeJavascriptInterface("accessibilityTraversal");
版权声明:转载请注明来源 川zi@乌云
漏洞回应
厂商回应:
未能联系到厂商或者厂商积极拒绝