APP下载

移动应用安全防护技术研究

2016-10-10常玲赵蓓薛姗马力鹏

电信工程技术与标准化 2016年9期
关键词:安全漏洞客户端组件

常玲,赵蓓,薛姗,马力鹏

(中国移动通信集团设计院有限公司,北京 100080)

移动应用安全防护技术研究

常玲,赵蓓,薛姗,马力鹏

(中国移动通信集团设计院有限公司,北京 100080)

本文首先分析了移动应用的安全现状,提出了移动应用安全评估方法,包括客户端安全评估、服务器安全评估和业务流程安全评估,最后给出了移动应用典型安全漏洞及其检查方法与加固建议,包括敏感数据暴露、鉴权机制缺陷、代码保护不足、公共组件漏洞和应用配置错误。

移动应用;安全评估;鉴权机制;代码保护

1 引言

近年来我国移动互联网产业发展迅速,移动互联网用户规模不断扩大。相应的,移动互联网应用软件产业也在飞速发展。在Google Android开放平台的强力冲击和苹果公司的稳步发展下,国内外官方和第三方的应用商店不断涌现,每时每刻都有数款新的移动应用发布、下载、更新。

2 移动应用安全现状

来自比达咨询发布的报告显示,中国智能手机操作系统中,Android占74%,iOS占24.4%,Windows Phone占1%。智能手机操作系统市场形成了Android和iOS的两霸格局。在移动平台应用程序中,Android和iOS系统占据了明显的优势。

移动应用商店作为在移动端获取和更新应用程序的主要渠道,在目前移动互联网产业链中位于相当核心的位置。苹果公司首创移动应用商店APP Store模式获得了巨大的成功,谷歌和微软也相继推出Google Play与Windows Phone Store,移动互联网中的应用程序基本上是通过应用商店下载的。在我国,由于iOS、Android系统的官方市场,尤其是Google Play在国内下载不便等原因,国内同时出现了很多非官方商店(即第三方商店)。第三方商店审核机制不完善、安全检测能力差等问题,使得恶意程序得以发布和扩散。

某些应用会在用户下载安装后,在用户不知情的情况下,后台进行收发恶意短信、传播不良信息以及破坏用户系统等行为;还有些应用程序会在用户使用其服务的过程中非法获取用户的隐私信息、账号密码等。部分恶意应用并非真正的开发者所为,而是黑客将正常应用篡改所致。在利益的驱使下黑客将正常应用程序破解、加恶意代码、添加广告再重新打包,并重新在应用商店中发布,这些应用本身没有恶意行为,只是在传播过程中遭到了恶意篡改,但是用户很难有效识别正常的移动应用软件,恶意软件往往会乔装成某一类正常应用软件,并发布到应用商店中。用户下载安装后,这些恶意程序会在用户不知情的情形下,触发恶意扣费、系统破坏、隐私窃取、访问不良信息等恶意行为,给用户带来经济损失和信息安全问题。

移动智能终端应用安全形势越来越恶劣,一旦对安全轻视,将会导致严重的后果,对移动智能终端恶意程序进行有效地防范和控制,关系到用户的切身利益以及我国网络安全产业的成长发展。因此,对移动应用进行安全分析及防护技术研究有重要的意义。

3 移动应用安全评估方法

移动应用安全防护技术研究,应建立在全面安全评估的基础上,分析应用的安全状况,是否存在安全漏洞,针对存在的各种安全漏洞,采用相应的安全防护手段对移动应用进行加固。

3.1评估方法概述

通过对移动应用软件正常运行所需的总体环境进行分析,移动应用安全评估主要包括三方面,即客户端安全评估、服务器安全评估和业务流程安全评估,如图1所示。

图1 移动应用软件运行总体环境

其中,客户端安全评估主要包括评估APP客户端程序自身的安全性、客户端数据的安全性、以及客户端与服务器之间数据传输的安全性。服务器安全评估主要包括评估服务器主机系统安全性,Web服务安全性,数据库、Web Service接口安全性等方面。业务流程安全评估主要包括分析应用系统架构,业务流程、业务逻辑设计等方面是否存在缺陷。由此分析得出移动应用安全评估的总体框架,如图2所示。

图2 移动应用安全评估框架

3.2客户端安全评估

客户端安全评估包括4个方面的安全评估工作,即程序安全、数据安全、认证安全和传输安全。

其中,程序安全是对客户端安装程序进行反编译,检查是否存在源代码、接口信息和敏感数据暴露。

数据安全是检查移动应用的配置文件、用户数据文件等是否可以被非法读取或者篡改。

认证安全是检查客户端软件登录认证是否可以被绕过等。

传输安全是检查客户端与服务器之间的通信数据是否能被解密、篡改等。

3.3服务器安全评估

服务器安全评估包括评估主机安全、Web软件安全、中间件安全、第三方组件安全、数据库安全和Web框架安全等。

其中,主机安全是检查服务器操作系统的帐号、口令、日志等是否存在安全漏洞,以及对服务器进行系统漏洞扫描等。

Web软件安全是检查是否存在敏感信息泄漏、跨站、SQL注入、文件上传、文件包含等安全漏洞。

中间件安全是检查服务器的中间件,包括Tomcat、Weblogic、Jboss、Apache、Ngnix等是否存在安全漏洞。

第三方组件安全是检查服务器的第三方组件,包括DeDecms、DirectAdmin、HttpFile、PhpMyAdmin、PhpShop、WordPress等是否存在安全漏洞。

数据库安全是检查服务器数据库的帐号权限、口令、访问控制、日志等是否存在安全漏洞。

Web框架安全是检查服务器的Web框架,包括Structs2、Thinkphp、Spring、Hibernate等是否存在安全漏洞。

3.4业务流程安全评估

业务流程安全评估包括评估移动应用软件的权限分配合理性、操作合理性和流程设计合理性等。

其中,权限分配合理性是检查应用软件是否存在将业务功能开放给不合理的用户等。

操作合理性是检查应用软件在业务流程中是否存在某些不合理操作。

流程设计合理性是检查业务流程中是否存在某些环节可以省略或者绕过。

4 移动应用典型安全漏洞、检查方法及加固建议

在实际应用中,移动应用的典型安全漏洞包括敏感数据暴露、鉴权机制缺陷、代码保护不足、公共组件漏洞和应用配置错误。以下内容将对这5大典型安全漏洞进行简要描述,并给出检查方法和加固建议。

4.1敏感数据暴露

敏感数据暴露主要表现在3个方面,即明文传输敏感信息、不安全的本地存储和边信道信息泄漏。

4.1.1明文传输敏感信息

明文传输敏感信息即在客户端与服务器端交互过程中,明文传输用户名、密码、验证码、后台服务器地址等,导致用户敏感信息泄露。若后台服务器存在漏洞,则可控制后台服务器。

检查方法:

(1)确保Windows主机和测试手机均使用同一无线网络;

(2)在BurpSuite工具中设置proxy标签页中的options选项,对8080端口进行编辑,取消其对“listen on loopback interface only”选项的勾选,并确保BurpSuite状态是“intercept is on”,即监听功能开启状态;

(3)设置测试手机无线局域网中的HTTP代理,服务器是Windows主机地址,端口是8080。之后即可利用BurpSuite工具对测试手机的网络访问情况进行分组抓取分析,检查客户端与服务器端交互过程中,是否明文传输敏感信息。

加固建议:在被测应用与服务器交互过程中,对用户名、密码、验证码、后台服务器地址等敏感信息进行加密传输。

4.1.2不安全的本地存储

不安全的本地存储即移动应用软件开发者使用多种方法存储数据,如果存储在本地的数据文件未加密,易造成敏感信息泄漏。

检查方法:

(1)在安卓应用软件中,Shared Preferences是用key-value来存储私有的原始数据的xml文件。数据类型有布尔型、浮点型、整形、长整型和字符串。

通常情况下存储的路径为:

/data/data/<package name>/shared_prefs/<filename.xml>。直接打开查看是否有敏感数据。

(2)SQLite数据库是轻量级基于文件的数据库。这些文件通常以db或者sqlite结尾。移动应用的数据库一般存储在下面的地方:

/data/data/<package name>/databases/<databasename.db>,可以使用SQLite数据库直接打开查看是否有敏感数据。

(3) 检查SD卡目录中是否存在敏感数据。

加固建议:对存储在本地的数据文件进行加密。

4.1.3边信道信息泄漏

边信道信息泄漏即当移动应用处理用户或其他数据源输入的数据时,可能会把数据放在不安全的位置,导致应用受到严重的攻击。

检查方法:

(1)Android提供的日志功能是可能造成信息泄露,日志一般是开发者在开发期间调试使用的。查看日志的方式有两种:

使用Eclipse工具:在Logcat选项卡中查看移动应用运行期间输出的所有日志信息,其中可能有敏感信息。

使用adb工具:使用命令# adb logcat打印出所有的日志。通过logcat选项可以过滤需要查找的内容,或者通过命令#adb logcat>output.txt,将日志保存到电脑本地,以便后期进一步分析。

(2)基于Web的应用程序会产生URL,cookie和缓存等泄露。缓存可能存在日志,流量历史和浏览缓存等多种内容。使用命令#adb logcat|grep“cookie”即可过滤出诸如cookies等敏感信息。

加固建议:在日志中对于密码等敏感信息进行加密存储;对敏感信息的缓存进行加密。

4.2鉴权机制缺陷

鉴权机制缺陷主要表现在两个方面,即未使用有效的Token机制和登录设计缺陷。

4.2.1未使用有效的Token机制

如果移动应用没有使用有效的Token机制,则可对登录响应中服务器返回的鉴权信息进行修改,绕过服务器鉴权,直接访问系统内部信息。

检查方法:

(1)利用BurpSuite工具监听移动应用的登录响应过程,对登录响应中服务器返回的鉴权信息进行修改。

(2)修改成功后即可绕过登录界面,进入应用界面。加固建议:使用有效的Token机制进行鉴权。

4.2.2登录设计缺陷

登录设计缺陷即如果在用户登录过程中,未对同一用户的登录失败次数做限制,则可导致存在被暴力破解的风险。

检查方法:

(1)利用BurpSuite工具中的Intruder功能对被测应用进行暴力破解。首先确保BurpSuite是监听功能开启状态,然后点击登录。登录请求命令将被BurpSuite监听拦截,右键单击“send to intruder”功能。

(2)进入Intruder标签页,在Positions选项中,可以看到上一步骤发送给Intruder的请求命令,重要的信息用亮色显示。

(3)进行参数配置,可以把用户名和密码作为参数,或者用户名固定,仅把密码作为参数。

(4)进入Payload选项,加载字典文件。

(5)开启Intruder标签页中的start attack功能,开始进行暴力破解。

加固建议:在设计用户登录过程中,对用户登录失败次数做限制,防止被暴力破解。

4.3代码保护不足

代码保护不足主要表现在两个方面,即可以重新编译打包和SQL注入漏洞。

4.3.1可以重新编译打包

重新编译打包即破解者通过反编译后得到程序源代码,修改后重新编译、签名并安装。在重新打包的过程中,破解者可能注入代码分析软件,或者修改软件逻辑直接破解。

检查方法:

(1)使用反编译工具软件ApkTool对被测应用的安装文件APK进行反编译。反编译XXX.apk到文件夹ABC 的命令语句如下:

apktool d XXX.apk ABC

(2)对源代码进行修改后,使用ApkTool工具对修改过的文件夹进行重新编译。从文件夹ABC重新生成APK文件,输出到文件夹ABC/dist/out.apk 中的命令语句如下:

Apktool b ABC

(3)使用工具软件Signapk对重新编译的APK进行签名操作,之后即可安装使用。

加固建议:移动应用通过检查程序安装后classes. dex文件的Hash值,判断软件是否被重打包并进行提示。

4.3.2 SQL注入漏洞

SQL注入漏洞即开发过程中如果未对特殊字符进行过滤,则可以通过把SQL命令插入到Web表单提交,或者输入到域名/页面请求的查询字符串中,最终达到欺骗服务器执行恶意的SQL命令导致数据泄露等。

检查方法:

(1)利用BurpSuite工具对移动应用的登录过程进行监听。首先确保BurpSuite监听功能开启状态,然后点击登录,提交表单的请求命令会被BurpSuite监听拦截,将请求命令保存为txt格式。

(2)使用Sqlmap工具对保存的请求命令语句进行自动化sql注入检测,检测完毕后将会列出存在注入漏洞的位置。

加固建议:加强对用户输入内容的验证,对于用户的输入内容增加过滤手段,例如拒绝某些特殊符号等,防止通过SQL注入造成信息泄漏。

4.4公共组件漏洞

公共组件漏洞主要表现在两个方面,即组件Content Provider配置错误和组件Activity配置错误。

4.4.1组件Content Provider配置错误

组件Content Provider是安卓应用组件,以表格的形式把数据展现给外部的应用。

检查方法:

(1)使用Mercury工具获取被测应用所有可以访问的URL,命令语句如下:

run scanner.provider.finduris -a (package name)(package name是待检测的应用包名)

(2)使用Mercury工具获取各个可访问URL的数据,命令语句如下:

run APP.provider.query (content://…)

(content://…)是上一步骤中得到的可以访问的URL链接

加固建议:在被测应用的AndroidManifest.xml文件中,设置Content Provider组件的android:exported属性为false或者通过设置自定义权限来限制对Content

Provider组件的访问。

4.4.2组件Activity配置错误

组件Activity是安卓应用组件,提供与用户进行交互的界面。如果移动应用对组件Activity权限控制不当,则可以绕过登录界面直接显示组件Activity提供的界面。

检查方法:

(1)使用Mercury工具检查被测应用中是否存在暴露的Activity组件,命令语句如下:

run APP.activity.info -a (package name)

package name是待检测的应用包名

(2)对于暴露的Activity组件,可以使用以下命令尝试启动。

run APP.activity.start--component (package name) (activity name)

activity name是暴露的Activity组件名称加固建议:通过设置自定义权限,限制对Activity组件的访问。

4.5应用配置错误

应用配置错误主要表现在两个方面,即开启allowbackup备份权限漏洞和开启Debuggable备份权限漏洞。

4.5.1开启allowbackup备份权限漏洞

开启allowbackup备份权限漏洞即如果移动应用的AndroidManifest.xml文件中allowBackup属性值被设置为true,则可通过adb backup对应用数据进行备份,在没有root权限的情况下导出移动应用中存储的所有数据,造成用户数据泄露。

检查方法:

(1)使用反编译工具软件ApkTool对被测应用进行反编译。反编译XXX.apk到文件夹ABC 的命令语句如下:

apktool d XXX.apk ABC

(2)反编译操作后生成的文件夹中,AndroidManifest. xml是每个Android程序必有的文件,位于文件夹根目录,描述了各种组件状态(Content Provider、Activity等),以及各种实现类,各种能被处理的数据和启动位置。从安全角度来看,它包含了应用程序中所有使用的组件信息,同时还显示应用程序使用的permissiOSns等信息。在其中搜索allowBackup属性,检查是否被设置为true。

加固建议:将AndroidManifest.xml中的参数android:allowBackup属性设置为false,防止数据泄漏。

4.5.2开启Debuggable备份权限漏洞

开启Debuggable备份权限漏洞即如果移动应用的AndroidManifest.xml文件中Debuggable属性值被设置为true,则可以设置断点来控制程序的执行流程,在应用程序运行时修改其行为。

检查方法:使用反编译工具软件ApkTool对被测应用进行反编译操作;在反编译得到的AndroidManifest. xml中搜索Debuggable属性,检查是否被设置为true。

加固建议:将AndroidManifest.xml中的参数Android: Debuggable属性设置为false,就不能对被测应用进行调试。

5 总结

本文分析移动应用安全现状,提出移动应用的安全评估方法,包括三个方面即客户端安全评估、服务器安全评估和业务流程安全评估,最后给出了移动应用典型安全漏洞及其检查方法与加固建议,包括敏感数据暴露、鉴权机制缺陷、代码保护不足、公共组件漏洞和应用配置错误。本文所提出的移动应用安全评估方法能够全面有效地评估移动应用的安全风险,给出的典型安全漏洞,对实际开发有指导意义,有利于降低移动应用的信息安全风险。

[1] 王艳红,杨丁宁,史德年. 当前移动应用软件常用安全检测技术[J]. 现代电信科技,2012(9).

[2] 董航. 移动应用程序检测与防护技术研究[D]. 北京:北京邮电大学,2014.

[3] 陈建民. 基于行为的移动应用程序安全检测方法研究[J]. 计算机工程与设计,2012(12).

360发布安全云联盟计划

近日,360企业安全联合云计算开源产业联盟(OSCAR)在北京发布360安全云生态联盟计划。据悉,该计划将会与广大云计算厂商合作,提升云平台的安全防御实力,免除用户对云安全的困扰,从而促进国内云计算行业的蓬勃发展。

新华三集团作为首批加入安全云联盟计划的企业,与360举行了战略合作签约。浪潮、航天云宏、宝德云、烽火通信、Easystack、东方通、乾云启创、神州数码等国内云计算相关厂商应邀出席了发布活动。云计算开源产业联盟常务副主席何宝宏博士也出席了本次会议并发表了讲话。

近年来,国内越来越多的政企客户开始将重要业务转移到云端,同时对云计算价值的认知和认可度也大幅增加。因此,云安全成为中国云计算产业发展的关键要素。但安全专家认为,云安全不是零和博弈,安全威胁是云计算产业链中所有相关方的敌人,其复杂性超出了任何一家企业的掌控能力。因此,只有合作才能共赢,才能够铸造起云安全的坚实壁垒。

360企业安全集团总裁吴云坤表示,作为全球最大的互联网安全公司,360企业安全联合云计算开源产业联盟(OSCAR)发布安全云生态联盟计划,目的是借此机会转变云安全生态模式,通过开放资源,加强与各云计算厂商的合作,共建互联网云安全产业链新生态。

新华三云计算产品线总裁吴健表示,云市场的激增,让云安全的地位日益凸显,安全厂商唯有通过相互合作,才能取得共赢。作为360安全云联盟计划的首签企业,新华三将与360在内的云计算产业链企业合作, 从租户安全、云服务安全、云平台基础安全等多层次,打造安全服务链,保障政务系统安全稳定运营。值得一提的是,作为新IT基础架构领域领导厂商,新华三在云计算应用领域积累深厚。

据悉,360安全云生态联盟计划引入广大云计算厂商进行合作,实现产品层面相互对接、相互兼容,市场层面共同拓展、共同配合,并计划在2016年年底前召开联盟成立发布会,形成多方合作共赢的局面。

本次发布会在2016年中国互联网安全大会期间召开,这次网络安全盛会吸引到全球超过180位安全专家分享前沿技术趋势,近3万人次参观和与会。 (李建平)

Research of the security technology on mobile APP lications

CHANG Ling, ZHAO Bei, XUE Shan, MA Li-peng
(China Mobile Group Design Institute Co., Ltd., Beijing 100080, China)

This paper analyzes the security status of mobile APP lications, proposes the mobile APP lication security assessment method, including the client security, server security and business process security. Finally, it gives the mobile APP lication typical security vulnerabilities and examination methods and suggestions for the strengthening, including sensitive data exposed, defects of authentication mechanism, lack of code protection, vulnerabilities of public components and errors of APP lication confi guration.

mobile APP lications; security assessment; authentication mechanism; code protection

TN929.5

A

1008-5599(2016)09-0086-06

2016-02-25

猜你喜欢

安全漏洞客户端组件
无人机智能巡检在光伏电站组件诊断中的应用
基于模糊测试技术的软件安全漏洞挖掘方法研究
新型碎边剪刀盘组件
U盾外壳组件注塑模具设计
如何看待传统媒体新闻客户端的“断舍离”?
智能设备安全漏洞知多少
安全漏洞太大亚马逊、沃尔玛和Target紧急下架这种玩具
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路