(转)移动设备应用的灰盒测试与评估的三步走(2)

2013-06-04  白云 

二、漏洞确认

在应用程序的评估过程中,应当重点检查前一阶段所确认的热点源码。除了要检查源代码检查不易发现的应用程序漏洞,企业还应当执行黑盒类的评估,用以确认网络或主机层的漏洞。为了补充应用程序组件的人工检查,这个测试阶段应当采用自动化的扫描。

代码分析和扫描

自动化扫描工具可以分析全部源代码,从而初步发现安全问题。在此阶段,测试者应当利用商业类工具和私有工具来扫描有安全问题征兆的代码和可导致漏洞的常见编程错误。源代码分析阶段应当设法确认可影响到主机、服务器和网络的漏洞。

人工分析

在此阶段,我们建议详细检查应用程序的代码,其目的是为了发现应用程序架构所独有的安全漏洞。在检查代码时,建议将以下几种技术结合使用:

1、许可分析:许多平台要求移动应用声明在执行期间试图访问哪些功能。然后,设备将对应用程序限制使用这些特定的功能。测试人员可以针对这些功能发动攻击,并尝试绕过这些限制,以检验其效果。

2、控制流分析:该技术用于分析代码中的逻辑条件。这种方法可以使测试人员确认常见的逻辑漏洞,例如,程序无法处理例外、不适当的授权限制等。

3、数据流分析:该技术跟踪从输入点到输出点的数据,尤其适用于确认常见的输入验证错误,如SQL注入和跨站脚本利用。

为应用这些技术,我们建议企业将移动应用分割成不同的功能组件。测试者应当检查每一个组件,以查找常见的不安全的编程方法,这些方法包括:

1、认证:弱口令要求、用户名穷举、账户停用、cookie重放攻击、后门等。

2、授权:特权提升、不适当的权力分配、机密数据的暴露、数据受损等。

3、会话管理:会话陷阱、会话超时、会话劫持、不适当的会话终止、会话重放、中间人攻击等。

4、配置管理:对管理界面的非授权访问、对配置文件的非授权访问、配置数据的检索、分配给过程和服务账户的过多特权。

5、输入验证:参数损害、缓冲区域溢出、跨站脚本攻击、SQL注入、XPATH劫持、命令劫持等。

6、数据保护:对移动应用或用户的私密进行硬编码、网络通信嗅探、错误的密钥生成或密钥管理,弱加密等。

7、例外处理:信息泄露、拒绝服务等。

8、审计和日志:日志伪造、操纵日志文件、日志文件破坏等。

9、缓存:在移动应用的生命周期内,击键、快照、剪贴板内容和文件有可能被缓存到设备的不同存储位置。

10、发布通知:将数据从服务器传输到应用。

11、基于位置的服务:试图泄露或欺骗位置数据。

此外,还有以明文形式将口令存放到数据库中等。

检查代码中的架构安全问题

如果应用程序使用了特定的安全机制,或者具备可以减轻某些“臭名昭著”的安全威胁的功能,这一步就相当重要了。最后的代码检查用于验证应用程序架构的特定安全功能:

加密:由于定制的加密方案一般都没有强健的加密机制,所以企业应当检查方案,以验证其是否可以对敏感数据提供充分的保护。

协议:测试人员应当检查应用通信的私有协议,用以决定其应对破坏和侦听的能力。

会话管理:测试者应检查如下两方面,一是创建特定会话标识符的企图,二是会话管理进程。这样做的目的是为了衡量其会话发生管理错误时的保护能力。

访问限制:测试者要检查特定HTTP头的使用或者其它的特定协议要素,用以控制访问,防止未授权的访问。

安全代码:有些代码是为解决以前所发现的安全问题而编写的,对此测试者要专门检查,以检验其功效。

服务器架构:测试者要检查用来支持移动应用的外部Web服务和服务器。

------------------------------------------------------------------------------------------------------------------------------
转自:http://netsecurity.51cto.com/art/201305/396602_1.htm
373°/3735 人阅读/0 条评论 发表评论

登录 后发表评论