webview漏洞
1. webView绕过证书校验漏洞(客户端访问使用Https协议加密的url时,如果服务器证书校验错误,客户端应该拒绝继续加载页面)
解决方案:如果服务器证书校验错误,客户端应该拒绝继续加载页面
2 Webview明文存储密码风险,webview默认打开了提示用户是否保存密码的功能,需设置自动保存密码功能,通过设置webview.getSettings().setSavePassWord(false)关闭webview组件的保存密码功能。
3. Webview File同源策略绕过漏洞:
setAllowFileAccess(true);//设置为 false 将不能加载本地 html 文件
// 设置是否允许通过 file url 加载的 Js代码读取其他的本地文件
setAllowFileAccessFromFileURLs(false);
//设置是否允许通过fileurl加载的Javascript可以访问其他任何的源,也就是说,它包括其他的文件和http,https等其他的源(同源跨域访问)
setAllowUniversalAccessFromFileURLs(false);
if (url.startsWith("file://") {
setJavaScriptEnabled(false);} else {
setJavaScriptEnabled(true);}
4. Webview远程代码执行漏洞:Webview是Android用于浏览网页的组件,其包含的接口函数addJavascriptInterface可以将Java类或方法导出以供JavaScript调用,实现网页JS与本地JAVA的交互。由于系统没有限制已注册JAVA类的方法调用,因此未注册的其它任何JAVA类也可以被反射机制调用,这样可能导致被篡改的URL中存在的恶意代码被执行,用户手机被安装木马程序,发送扣费短信,通信录或者短信被窃取,甚至手机被远程控制。
5.未移除有风险的Webview系统隐藏接口android webview组件包含3个隐藏的系统接口:searchBoxJavaBridge, accessibilityTraversal以及accessibility,恶意程序可以利用它们实现远程代码执行。需通过显示调用removeJavascriptInterface移除这三个系统隐藏接口。
mWebView.removeJavascriptInterface("searchBoxJavaBridge_");mWebView.removeJavascriptInterface("accessibility");mWebView.removeJavascriptInterface("accessibilityTraversal");
6.WebView忽略SSL证书错误
WebView调用onReceivedSslError方法时,直接执行handler.proceed()来忽略该证书错误。忽略SSL证书错误可能引起中间人攻击
应用数据任意备份风险,allowBackup设置true时,会泄露用户敏感信息
拒绝服务攻击漏洞,将不必要导出的组件相应的exported属性设置为false
7.加固壳识别、JAVA代码反编译风险、应用签名未校验风险、WebView明文存储密码风险、WebView同源策略绕过漏洞、动态调试攻击风险违规行为