WIKI

8.3 WebView File域同源策略绕过漏洞检测

(1)描述

应用程序一旦使用WebView并支持File域,就会受到该漏洞的攻击。该漏洞源于:JavaScript的延时执行能够绕过file协议的同源检查,并能够访问受害应用的所有私有文件,即通过WebViewJavascript的延时执行和将当前Html文件删除掉并软连接指向其他文件就可以读取到被符号链接所指的文件,然后通过JavaScript再次读取HTML文件,即可获取到被符号链接所指的文件。
     
大多数使用WebView的应用都会受到该漏洞的影响,恶意应用通过该漏洞,可在无特殊权限下盗取应用的任意私有文件,尤其是浏览器,可通过利用该漏洞,获取到浏览器所保存的密码、Cookie、收藏夹以及历史记录等敏感信息,从而造成敏感信息泄露 

(2)风险等级

高危

(3)影响范围

所有

(4)检测方法

检测类型:静态分析

遍历查找调用了setAllowFileAccess的类路径,然后再获取函数参数值,判断参数值是否为true;同时判断该类路径是否为导出的组件。若两个条件满足,则存在漏洞,否则安全。

(5)漏洞利用

例如检测出下面的组件存在漏洞:

检测到3webview file域同源策略绕过漏洞。

位置: classes.dex
com.lenovo.leos.appstore.activities.LeWebActionActivity
com.lenovo.leos.appstore.activities.LeWebJsActivity
com.lenovo.lsf.account.PsLoginActivity

 

通过下列命令:

adb shell am start -n com.lenovo.magicplus/com.lenovo.leos.appstore.activities.LeWebJsActivity -d file:///system/etc/hosts

(6)修复建议

1. 将不必要导出的组件设置为不导出

      如果应用的组件不必要导出,阿里聚安全建议显式设置所注册组件的“android:exported”属性为false

2. 如果需要导出组件,禁止使用File

      如果应用的需要导出包含WebView的组件,阿里聚安全建议禁止使用File域协议:

myWebView.getSettings. setAllowFileAccess(false);

3. 如果需要使用File协议,禁止File协议调用JavaScript

      如果应用的WebView需要使用File域协议,阿里聚安全建议禁止File域协议调用JavaScript

myWebView.getSettings. setJavaScriptEnabled(false);

 

(7)参考资料

https://jaq.alibaba.com/blog.htm?id=62