Android OtherAndroidAndroid开发

Android如何解决腾讯近日发布的“应用克隆”漏洞

2018-01-11  本文已影响877人  MrAllRight_Liu

2018年1月9日, 国家信息安全漏洞共享平台(CNVD)发布关于Android WebView存在跨域访问漏洞(CNVD-2017-36682)的公告,本文最后会给出具体的解决方案。

漏洞描述

WebView是Android用于显示网页的控件,是一个基于Webkit引擎、展现Web页面、解析并执行JavaScript代码的控件,Android应用可以使用WebView空间,灵活的扩展自身的业务功能。

市面上大多数使用HTML5技术开发的应用均使用WebView进行HTML5页面的展示。除了从远程服务器加载Web页面,WebView还可以通过修改特定配置,从文件中进行HTML5页面的加载。在未正确配置WebView的情况下,会致使WebView同源策略失效,导致HTTP协议、file协议跨源攻击的发生。该漏洞使得WebView能够访问当前应用内部数据,如果WebView加载了来源不明的HTML文件,可能导致当前应用内部数据被攻击者窃取,如身份认证信息、加密密钥、用户隐私信息等。

漏洞分析

Android应用内部分可导出的Activity组件中,WebView允许通过file URL对http域进行访问,并且未对访问路径进行严格校验,由此导致了本次漏洞的出现。

该漏洞的产生条件:

(1)应用中存在设置为可被导出的Activity组件,并且组件中包含Webview调用。

(2)Webview调用中setAllowFileAccessFromFileURLs 或

setAllowUniversalAccessFromFileURLs 设置为true(minSdk<=4.1 默认为true,minSdk>4.1 默认为false)。

解决方案

第一步
如果你的activity里面使用了webview,请关闭该activity的导出功能(该功能是允许外部应用打开该activity)

  <activity
            android:name=".activity.WebViewActivity"
            android:exported="false"//关闭导出功能
            android:screenOrientation="portrait"/>

第二步
如果你的activity必须要打开导出功能,请手动关闭通过file URL对http域进行访问

  webView.getSettings().setAllowFileAccessFromFileURLs (false);

第三步
对于必须使用file URL对http域进行访问时,可对传入的URL路径范围严格控制,例如建立URL白名单,设置允许访问的URL列表(不要遗漏路径中可能出现的特殊情况如“../../”等,避免限制被绕过)

上一篇下一篇

猜你喜欢

热点阅读