敖勇平
摘要:随着移动互联网的快速发展,智能手机越来越普及,推动了手机APP的爆炸式增长,而这也引发了许多APP安全问题。为了更好地解决这些问题,结合作者在APP测试中的经验,从APP安全性测试的必要性、APP安全性测试策略、APP安全性测试的主要测试点、常见的APP安全性测试工具、做好APP安全性测试的建议等五个方面对手机APP安全性测试进行探讨。
关键词:手机APP;互联网+;安全性测试;APP漏洞
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)27-0010-02
伴随着互联网+时代的到来,移动互联网发展迅猛,大家已经能很方便地利用手机来随时随地上网,实现更多智能化的应用,如QQ聊天、购物、手机移动支付、日常工作业务处理。它在丰富大家日常生活和工作的同时,也给我们带来了超强娱乐体验,但是移动互联在无线接入网络、移动终端、应用服务上都面临着前所未有的挑战,其中智能手机App的安全问题尤为突出。据不完全统计,2015年上半年,智能手机平台新增病毒应用约127.3万个,较2014年下半年环比增长240%。另外,手机APP的漏洞问题非常严重,尤其是Android平台下的安全漏洞现状更是不容乐观,近97%的APP都存在漏洞问题。今年8月,国家出台了《移动互联网应用程序信息服务管理规定》规定,明确要求所有APP上架前必须进行安全测试。综上所述,对于APP软件开发公司来讲, APP安全性测试就显得非常重要。
1 APP安全性测试策略
当前,手机APP的安全性问题面临巨大挑战,其中安全隐患来源于以下几个方面:研发人员的结构设计缺陷、SDK缺陷、使用不安全的协议、 APP代码设计漏洞问题等。为了更好地解决这些安全隐患,通常的做法就是进行APP安全检测,具体来说,就是对APP安全风险以及安全漏洞等方面进行全面检测。APP安全性测试策略或手段归纳起来主要有三种,分别是APP代码验审、APP渗透测试以及APP漏洞扫描。具体如下:
1)APP代码验审
该策略主要利用几种常用的代码分析工具如Dex2jar、JD-GUI、ApkTool、Smali2dex等对APP代码进行反编译,并对反编译后的Java源代码文件、XML页面文件等文件再进行静态扫描分析,通过关键词搜索等方式将具有安全隐患的代码进行摘录并保存起来,完成APP代码验审过程。
2)APP渗透测试
APP渗透测试是完全模拟外部黑客可能使用的攻击手段来对对目标系统的安全作深入的探测和分析,发现APP中最脆弱的环节。它是对系统的可能存在的弱点、技术缺陷或漏洞等进行主动分析且渐进深入的过程。渗透测试能够最直观的让测试人员知道待测软件所面临的问题,是一种非常专业的安全测试手段。APP渗透测试主要用于Android系统的智能机、iOS智能机、平板电脑等移动APP程序中的测试,通过使用静态、动态、服务端测试等各类技术手段对移动APP程序进行不安全因素的挖掘。
3)APP漏洞扫描
APP安全漏洞扫描通常都是在安全性测试过程中借助特定的漏洞扫描器完成。通过数据流跟踪分析、漏洞验证、拒绝服务攻击等手段来进行全方位安全检测,对APP嵌入或注入代码安全、签名安全、数据安全、业务逻辑安全、APP环境安全等进行全方面的检测和评估,及时发现所开发的APP存在的安全隐患和可能被黑客利用的漏洞,记录下来,并及时修补漏洞。它包括主机漏洞扫描和网络漏洞扫描。
2 APP安全性测试的主要测试点
为了更好地开展APP安全性工作,根据以往手机安全性测试的经验,我们将APP安全性测试的主要测试点归纳为以下几个方面:
1)配置安全性
配置安全检测主要涉及APP应用有无加固措施,如软件能否及时更新补丁,密码是否有保护措施,有些不需要的默认端口有没关闭等。另一方面权限设置是否合理,如是否存在扣费风险、隐私泄露风险,输入框能否信息检验等。
2)数据安全性
数据安全检测主要考查APP中的重要信息有无进行加密存储保护,如用户登录密码,隐私数据有没做相关的控制和管理,数据删除时有没提示信息,数据是否有自动备份功能等。
3)接口安全性
接口安全方面检测内容就比较广,如接口是否采用的是Https方式,有无采用有效地安全认证的处理,是否有安全证书,接口的参数有没有加密处理。
4)APP后台安全性
APP后台安全主要检测平台有无权限管理功能,平台中的所有重要操作有无日志安全管理,对线上APP一些异常访问是否能进行安全监测和控制,如一段时间内某个IP频繁访问。
5)安装与卸载安全性
它主要检测应用程序安装时能否正确安装到设备驱动程序上,能否在手机上找到应用程序的相应图标,是否包含数字签名信息;卸载时是否能安全卸载,是否能全部卸载,是否有卸载提示,是否会影响其他软件功能。
3 常见的APP安全性测试工具
为了做好APP安全性测试,防止软件可被利用的风险漏洞,在好的安全性测试策略的前提下,我们经常要借助一下测试工具来实现,下面就介绍几款实用的安全性测试工具。
1)X-Ray工具
X-Ray就是一种检测Android平台中是否存在已知提权漏洞的工具。 虽然智能手机APP这些提权漏洞可以在系统版本的升级时解决,但是目前仍有很多老版本系统存在。提权漏洞是在被合法软件利用的同时也可能被大量恶意软件利用,利用这些提权漏洞获取系统Root权限,使得在您不知情的情况下,后台自动发送付费短信,上传个人隐私等。
2)Safe.ijiami
Safe.ijiami 是一款免费的App安全检测工具,是爱加密公司打造的重磅产品,开创了我国自动化App安全检测平台的先河。爱加密漏洞检测工具集成了当前黑客最常用的攻击策略,它能模拟黑客攻击行为进行分析和漏洞检测。研发人员只需一键上传自己的APP就可完成风险漏洞检测,有效判断dex、res文件是否存在源代码、资源文件被窃取、替换等安全问题。检测结果清晰、详细、全面,并可一键生成报告,极大的提高了开发者的开发效率,有效帮助研发人员了解App安全状况,找出自己APP所存在且可被利用的风险漏洞,并对其进行针对性漏洞修复,从而有效地保障APP应用的安全性。
3)Droze工具
Drozer是由MWR安全团队研发的一款开源交互式的安全测试工具,该工具主要针对是Android平台的安全测试框架。测试人员可以通过Drozer提供的一些模块完成一些基础的安全测试工作,发现和挖掘Android上的公共利用漏洞和远程漏洞。
4)Intent Sniffer工具
Intent Sniffer工具可实现监控运行时路由的广播Intent,也就是在系统上的APP之间发送的Intent。通常它只对无优先权的广播进行监控,而并不监控显式广播的Intent。它主要针对的是那些基于应用反射和动态审查安装程序的Intent来动态升级扫描的。
4 做好APP安全性测试的建议
APP安全性测试是核查APP的安全服务和发掘潜在的安全性缺陷的过程,它是整个APP测试中重要一环,是一件非常不容易的事。为了更好、高效的做好安全性测试,下面给出了APP安全性测试的一些建议:1)充分了解APP软件的常见安全漏洞和黑客攻击手段;2)能够使用高效的软件安全测试技术和测试工具;3)重点对程序签名、权限设置、数据安全等方面进行安全性检测。技术在不断的发展与创新,只有不断的学习、积累、总结,才能跟上时代的脚步,更好地做好APP安全性测试工作。
参考文献:
[1] 张坤, 李媚. 软件测试基础与测试案例分析[M]. 北京: 清华大学出版社, 2014.
[2] 路晓丽, 董云卫. 软件测试实践教程[M]. 北京: 机械工业出版社, 2010.
[3] Harrold M J. Testing :a roadmap[M]. ICSE-Future of SE T rack, 2000: 61-72.
[4] 卢建军, 苏宁. 浅谈手机软件测试的流程与策略[J]. 制造业自动化, 2010(7).