多数移动应用程序采用何种开发技术,都会给本地设备和企业带来不同的风险,因而在部署之前需要对其实施软件测试和评估。本文首先讨论黑盒测试技术和策略。

  基于Web的移动应用的漏洞识别和利用

  在评估基于Web的移动应用时,我们建议评估者以匿名用户的身份来执行测试,并使用多种经认证的用户角色的特权。因为基于Web的应用是通过互联网来访问的,测试团队应当使用PC上的传统浏览器和标准的应用安全评估工具。

  在评估过程中,为了确认基础架构水平的漏洞,应当对Web服务器进行扫描。这种扫描的结果应当用于确认常见的应用程序问题。评估者还可以利用人工技术,充分利用所确认的漏洞,并对自动化工具常常遗漏的授权缺陷和业务逻辑进行测试。这一点尤其重要!

  此外,企业应当对网站执行“非入侵性”分析,其中包括通过镜像整个站点来检查内容,然后检查客户端的代码漏洞。使用分析阶段所产生的输入,私有的专用工具应当动态地测试Web服务器的组件,用以检查常见的Web服务器和Web应用漏洞,如SQL 注入漏洞、跨站脚本、跨站请求伪造等。此外,还应当利用商业化的工具来执行漏洞扫描。

  在确认了漏洞之后,为了利用漏洞,测试人员应当执行测试。此外,还有可能有如下内容:不安全的cookie处理,绕过认证,操纵表单欺诈,URL协议处理程序,基于位置的服务,敏感信息泄露,应用逻辑欺骗等。

  在黑盒测试结束时,应当执行漏洞评估,并根据每个漏洞所带来的风险进行评级。

  基于设备的移动应用测试环境

  为移动设备开发的应用程序带来了传统应用所没有的新的测试挑战。例如,移动设备对低级过程和例外日志拥有有限的直接访问权。移动设备还支持应用程序与GPS、相机、蓝牙、WAP,以及传统PC中所没有的其它技术进行交互。为解决这些困难,企业应使用如下的两种测试方法:

  模拟器测试:每一种平台都向开发人员提供了应用开发的SDK,并提供了用于测试和调试的不同型号设备的模拟器。这些工具还允许测试人员在各种配置和设备中分析和测试应用程序,而没有物理设备的限制。模拟器测试的一个好处是,代码并不需要由一个可信方来签署可以在模拟器中运行。

  物理设备测试:对物理设备的测试提供了在模拟器中测试所没有的许多功能,如SMS、GPS、相机、蓝牙等。不过,由于缺乏对底层操作系统和应用签名要求,这种测试又受到了一定限制。

  基于设备的移动应用漏洞确认

  根据移动应用的功能,测试人员应在模拟器或客户端提供的物理设备中执行测试,或兼而有之。在测试过程中,测试者应确认应用的功能,并针对任何内部的逻辑控制和外部连接。因为移动应用在许多方面是不同的,应当使用下面的步骤来测试每一种应用:

  1、映射应用的功能

  应当人工检查应用程序,确认其功能和应用程序访问不同组件的方法。评估团队应当重点关注如何确认外部的网络连接,以及数据存储、用户输入和许可等问题。

  2、监视连接

  移动应用有许多连接到外部源的方式。测试者应当使用代理工具和网络嗅探器,用来监视每一个请求和响应。还要记录数据通信,以便于日后的分析。如果应用程序使用了蓝牙或其它连接,为了捕获数据通信,开发团队应当使移动设备与一个服务器进行配对使用。

  3、检查数据处理

  由于应用程序的使用,数据可能存在于多个不同的位置。用户或非授权方有可能通过各种方式访问敏感信息或应用。评估应当确认敏感信息在何处产生,并分析如下情形中如何保护数据:由于用户交互而提交给应用的用户输入;用于输入到应用程序中的文件;在正常使和应用期间产生的文件;由于程序的例外进程所生产的应用程序日志;应用程序和设备(它们有可能将敏感数据放在非正常的或非法的位置)的缓存机制;通过网络连接而从外部服务器获得的数据。