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

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

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

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

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

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

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

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

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

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

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

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

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

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

  三、漏洞利用

  在这个阶段,测试者必须制定测试计划,其目的是为了对源代码进行深入分析,查找是否存在常见的不安全编码方法。然后,重点检查移动应用的特定安全机制。测试者还要查找、检查代码中的架构安全问题。

  验证所确认的问题

  测试团队要分析来自漏洞扫描的结果,去掉那些似是而非的信息,并着手构建可利用漏洞的案例。

  利用移动应用的独有功能

  灰盒测试方法的主要好处是能够大限度地利用漏洞。在此阶段中,测试者要尝试利用在移动应用的实例中表现不明显的认证漏洞和授权漏洞。这些漏洞可能会导致对功能或数据的非法访问,并给企业带来巨大风险。测试者还要利用业务逻辑(用于控制用户如何在移动应用中执行操作)中的缺陷。这些缺陷一般被用于欺诈移动应用的用户或公司。

  将漏洞利用与源代码联系起来

  在测试者证明了可利用的漏洞后,要将可利用的漏洞与相关的特定代码部分联系起来。这可以使开发人员快速地理解问题,并可以评估进行漏洞修复需要花费的工作量。

  分析风险

  测试者要评估可利用的漏洞,并根据每个漏洞给公司带来的风险,对漏洞进行评级。对于漏洞,测试者还要评估在漏洞被利用后,它可能对公司造成的影响。如果测试者能够利用多个漏洞并带来更大的影响,那么这种分析具有多重意义。

  提供具体的技术建议

  在评估了每个可利用漏洞的风险后,测试者要给出移动应用架构和代码编写的具体建议,如果可能好包括源代码。然后,开发者可以利用这些建议来减轻或修复漏洞,从而减少应用风险。测试者的建议还可以提供安全的编码指南,用以解决或修复移动应用的漏洞。

  在这里提出几条移动安全的建议,供开发者和测试者参考:把移动安全理念纳入到开发项目中;构建并实施一种可以监管移动应用的开发并确保可理解性的策略;培训移动应用的开发人员,帮助其实施安全的编码;测试是否可以限制传输到移动设备的敏感数据;评估针对Web应用和基础架构的威胁。