用例名称 Webview远程代码执行漏洞
风险编号 ASN_2021_18, CVE-2012-4008, CNVD-2012-4657, CWE-264, OWASP Mobile Top 10 2016 M7 – Client Code Quality(客户端代码质量), GB/T 22239-2019 信息安全技术 网络安全等级保护基本要求 8.1.4.8 数据保密性, 移动互联网应用软件安全通用技术规范 4.3.1 组件安全, SZDB/Z 204-2016 (7章3.4小节)
风险描述 Android系统通过WebView.addJavascriptInterface方法注册可供JavaScript调用的Java对象,以用于增强JavaScript的功能。但是系统并没有对注册Java类的方法调用的限制。导致攻击者可以利用反射机制调用未注册的其它任何Java类,最终导致JavaScript能力的无限增强。攻击者利用该漏洞可以根据客户端能力实现远程任意代码执行攻击。 WebView 远程代码执行漏洞触发前提条件: 1)使用addJavascriptInterface方法注册可供JavaScript调用的Java对象; 2)使用WebView加载外部网页或者本地网页; 3)Android系统版本低于4.2。
检测过程
1、基于深度静态检测技术DSAST进行破壳/逆向分析等获取客户端程序Java源文件。
2、对构成源程序的字符流进行扫描,通过词法分析,生成相关符号列表。
3、进行语法分析,整理成语法树,通过抽象语法树分析,将程序组织成树形结构,构造Java类和函数库。
4、进行语义分析,生成函数调用关系图,依据漏洞特征,遍历Java类和函数库,发现存在WebView远程代码执行的可能,具体表现为使用addJavascriptInterface接口。
相关文件名/行:
classes.dex
相关程序代码段如下:
第1处:
在【来自:DCloud】io.dcloud.feature.weex.adapter.webview.DCWXWebView 类的 private initWebView(Landroid/webkit/WebView;)V 方法,使用了函数 Landroid/webkit/WebView;->addJavascriptInterface(Ljava/lang/Object;Ljava/lang/String;)V
第2处:
在【来自:weex】com.taobao.weex.ui.view.WXWebView 类的 private initWebView(Landroid/webkit/WebView;)V 方法,使用了函数 Landroid/webkit/WebView;->addJavascriptInterface(Ljava/lang/Object;Ljava/lang/String;)V
风险等级
检测结果 存在风险,2处
修复建议 1、在客户端启动时检测Android版本,如果是Android4.2及以下版本则提示用户或者退出。
2、使用addJavascriptInterface接口时,
用以下方式增强安全性:
1) 使用HTTPS协议加载URL,应进行证书校验防止访问的页面被篡改挂马;
2) 使用HTTP协议加载URL,应进行白名单过滤、完整性校验等防止访问的页面被篡改;
3) 加载本地Html,应将html文件内置在APK中,以及进行对html页面完整性的校验 。
3、不需使用时可通过以下方式移除Javascript接口:
removeJavascriptInterface(""searchBoxJavaBridge_"");
removeJavascriptInterface(""accessibility"");
removeJavascriptInterface(""accessibilityTraversal"")。
现在在做等保测试,不知这个问题如何处理。HBuilderX 3.7.3
y***@baiyyy.com.cn (作者)
但是等保测评 测出是高危 如何处理,android 编译最小版本号是21
2023-03-15 10:02
1***@qq.com
回复 b***@163.com: 楼主有解决吗?
2024-08-12 11:58