◆连丽红
(厦门大学嘉庚学院(漳州校区) 福建 363105)
移动安全测试方案
◆连丽红
(厦门大学嘉庚学院(漳州校区) 福建 363105)
本文通过对目前国内移动安全现状和测试经验的梳理,分析了移动安全测试的关注要点,并提出一个比较完整、高效的移动安全测试解决方案,能够大幅提高测试人员的测试效率及安全测试的覆盖面。
移动安全;测试方案;安全现状;密码;权限
当前随着移动智能终端的普及,越来越多的公司都在将其业务从传统PC互联网模式向移动终端模式发展和迁移。企业在快速开发和推广APP应用系统的同时,不可避免地引入了大量新的安全问题,移动终端安全面临着技术、管理和法律等几个方面的挑战,主要包括终端窃取和假冒、无线网的窃听、交易抵赖、移动终端遗失和设备的不安全等。因此为了提高移动业务系统和关联数据的安全性,保证企业移动业务系统的安全、快速发展,必须在针对移动应用系统展开有效的安全检测。但目前对于移动安全的研究主要集中在各项防御技术的突破上,如文献[1]提出以地址为驱动的网络体系,充分利用IP地址的多重属性,解决互联网的规模扩展、安全可信等问题;文献[2]特别为电力企业设计的移动安全接入平台等。相反关于移动安全测试方面的研究较少,如文献[3]提出针对移动银行信息安全进行加密等技术防范;文献[4]提出包括静态行为和动态行为的检测方式,解决了静态行为检测缺乏对未知样本的检出能力问题,但都不够全面。本文旨在提出一套简单而系统的移动安全测试方案。
本方案从应用程序安全、密码和安全策略、权限与界面安全、隐私与存储安全、通信安全等方面对移动应用进行全方位的安全测试。
1.1 应用程序安全
移动应用程序安全测试可以从以下几个方面进行验证[5]:(1)源代码保护
加密系统核心代码,保证代码在静态或者运行时均不可见、具备反调试机制,防止被破译或者反编译。
(2)反动态攻击
客户端对关键操作应采取反劫持攻击防御;尽力避免在内存中保留关键数据,减少非加密信息存在的时间;在读取利用任何数据的时候,考虑数据被篡改的可能性;应针对内存中临时存在的关键信息做加密或者映射处理。
(3)异常处理
当软件发生系统故障时,保证系统能够保存重要数据并正常结束。拒绝在异常处理过程中直接把异常信息返回给用户,以防有经验的攻击者据此分析程序逻辑。
(4)软件更新检查
移动客户端应用程序应该提供安全更新接口,同时检查更新程序的合法性防止恶意程序伪装成合法的应用程序。
1.2 密码与安全策略
密码安全重要性是不言而喻的,制定验证密码安全策略是一个移动测试方案的重要组成部分,主要可以从以下几个方面进行:
(1)身份鉴定
标识:用户注册时,采用用户名和用户标识符标识用户身份,确保系统整个生存周期用户标识的唯一性。
鉴别机制:每次用户登录和重新连接系统时,应采用受控制的口令、基于生物特征的数据、数字证书以及其他具有安全强度的两种或两种以上的组合机制进行用户身份鉴别,而且其中一种鉴别数据是不可伪造。
认证方式:用户身份鉴别强度选择应该依据重要的程度,对高价值、可能造成风险的操作使用高强度的身份鉴别。
此外,对鉴别数据进行保密性和完整性保护;验证必须在可信系统上进行:包括HASH计算,避免向客户端透露更多的计算信息。
(2)二次身份鉴别
对高价值交易、系统和业务关键功能重新进行身份鉴别。如:修改密码、业务交易关键流程、系统配置信息。
(3)认证失败后的处理方式
连续失败后锁定账号:锁定后可由系统维护人员解锁,或者一定时间后自动解锁,锁定的时间应该足够长,但不能长到允许执行拒绝服务攻击。
安全报错信息:用户认证失败的提示应该模糊处理,不应该使用“用户不存在”或者“密码错误”这类可以逆推业务逻辑的提示。
(4)口令策略
口令强度:限制口令设置的最小长度,大小写字母、数字、特殊字符混淆的口令强度。
双因素认证:如果使用手机短信或动态令牌双因素认证,应该设置口令的有效生命周期。
(5)图片验证码
图片验证码可以抵御自动识别软件的暴力登录攻击,一般在服务端进行,先验证图片验证码,再验证用户名和密码。图片验证码的实现应该最低4位,并且使用字符随机扭曲、字符颜色和背景色随机、大小随机等多种防自动识别机制。
(6)密码重设
重设问题应支持尽可能的随机,或者让用户选择重设问题;重置密码发送邮箱避免完整的显示给用户时,设置邮件的有效生命周期;重设后应该强制用户修改密码,修改完应通知用户。
(7)常规登录控制
登录验证码技术:使用图形验证码进行系统注册等关键操作,可以有效防止恶意程序的试探和暴力破解。
超时控制:登录后超过N分钟未使用,服务器端设置用户链接超时,重新登录等。
登录控制:登录时,连续超过N次输入密码或图形验证码错误,则锁定账户,用户需亲昨临柜面办理解锁业务或通过其它方式验证身份来修改密码。
1.3 权限与界面管理
(1)权限界面原则
通过权限的管理,确定已通过验证用户的访问和操作权限。防止错误的授权或弱授权导致应用程序信息和用户敏感信息被非法访问或篡改。
①纵向越权:一个低权限的用户访问高权限用户的资源或功能。
②横向越权:用户尝试访问与其同级权限用户的资源或功能。
(2)APP权限最小化
程序本身可以在安装或运行时被授予很多权限和功能,如发送短信,手机定位,访问其他应用程序等,这些权限和功能在特定环境下可能被恶意代码所利用。根据软件设计的基本原则——最小特权原则,在设计应用程序的功能和权限时,只赋予完成操作的必备权限和最少功能。
(3)APP权限管理
创建基于角色的授权:制定创建基于角色授权的访问控制方法,同时对所有系统用户分析访问角色,当用户尝试访问受限制资源时,验证其角色。
代码执行权限最小化:用户不能做的事情,代码也不能做,以防止某些情况代码权限被滥用。
使用可信系统对资源进行授权和验证。
(4)对下列资源进行访问授权控制
制定文件、受保护的URL、应用程序、数据、用户、数据属性的访问控制策略、任何服务端的数据、文件的创建行为都应受控。此外,如果访问状态数据必须存储在客户端,则应使用加密算法,并在服务端检查其完整性以防止状态改变。
(5)限制单位时间内事务请求数量
限制单一用户或者外部数据请求在单位时间内可执行的事务数量,请求数量应该高于业务实际需求,但也应该足够抵御和判断自动化攻击,常见的如:获取某些状态数据、用户执行业务操作频率。
(6)SQL注入
移动系统提供了应用轻量级数据库系统,应用程序可以构造SQL语句,实现对本地数据库的各种操作,方便数据存取。移动平台SQL语句操作与普通WEB平台一样存在 SQL 注入危险,造成越权访问,最终导致应用程序的敏感数据和用户隐私数据泄露。
1.4 隐私与数据存储安全
(1)内存数据安全
关键信息在内存中加密存储、使用完毕后,及时清除,不能存留了非业务必须的敏感数据。
(2)本地数据安全
应对本地存储数据进行有效的加密保护;敏感信息在日记显示及相关数据表中存储时,采用替代处理;如果存储了Cookie数据,在用户退出时及时删除;加密存储HTML5、JS等文件,引入反纂改保护机制。
(3)调试信息安全
软件运行时会输出运行日志,关键信息必须进行脱敏处理,以防日志输出功能设计失误,导致泄露用户和系统的敏感信息等危险。
1.5 通信安全
(1)会话管理
设计者应该根据会话的特性制定合理的会话管理机制:
COOKIE:由客户端以文件的形式保存在硬盘上或者浏览器所占的内存中,在一定时间内保持生效,生效时间内再次访问不需要进行身份鉴别,cookie 由于是在客户端保存,所以被盗用的风险比较高。
SESSION:验证完后在服务端生成一段会话标识,由服务端保存。所以session安全性高于cookie,但更耗服务器资源,可考虑采取清除长时间不活动的session来保证服务器性能。
COOKIE+IP 或 SESSION+IP:为了防止会话标识被盗用,目前比较好的控制手段是验证访问者的IP和会话标识符,如果同一会话标识符两次访问的IP地址不相同,则认为session 被盗用。
(2)传输安全控制
移动应用设计应采用SSL安全传输协议,该协议能够有效地防破译、防篡改、防重发,对传输数据进行高强度的加密,确保数据安全性。
(3)通讯全程加密
除了SSL之外,还应采用数据二次加密处理,实现手机终端与服务器应用之间通讯的全程数据加密。
(4)组件通讯安全
客户端应用组件与组件之间的通信,所引发的安全问题也应该被进行关注。
1.6 输入输出安全
(1)密码键盘控件
登录密码及交易密码等敏感信息均采用服务器生成混淆后的动态密码输入键盘进行录入和对应密码编码,输入信息在内存或者本地均不以明文存在,从根本上对信息进行有效保护,用户提交密码时由客户端上传密码编码,由服务器解释成密码明文。
(2)反屏幕录像
输入关键信息时,屏幕应该不回显任何输入信息,不能以按键水印,按键变色等方法提示用户输入,关键信息也不能短暂明文显示。
(3)反屏幕劫持
输入关键信息时,应用应当有能力检测当前页面是否由本程序显示,并始终保持本应用显示界面处于最顶端。
总之,移动安全测试方案并不是一个固定的方案或者操作流程,而应该是一个方法论和指导思想,每个企业的移动应用环境都有着自身的特性,企业在进行移动安全测试、防范企业移动应用安全漏洞时,应该结合自身的特点,为企业本身打造一个安全的移动应用环境。
本文从移动安全测试的角度提出了整个移动安全测试的着重关注点和验证点,较为系统的介绍了移动安全的测试方案,提升了移动用户使用设备的安全防范意识,有效的提高移动安全测试人员安全测试的效率和安全测试质量。
[1]吴建平,李丹,毕军,徐恪,李星,朱晶.ADN:地址驱动的网络体系结构[J].计算机学报,2015.
[2]吴克河,崔文超,何健平.电力企业移动安全接入平台[J].计算机系统应用,2014.
[3]郑德春,姚庆栋,刘鹏,余巧燕.移动银行的信息安全及防范对策[J].武汉大学学报,2008.
[4]陈建民.基于行为的移动应用程序安全检测方法研究[J].计算机工程与设计,2012.
[5]赵青娟.基于Android的NFC安全架构研究[D].华北理工大学,2015.