多数移动应用程序采用何种开发技术,都会给本地设备和企业带来不同的风险,因而在部署之前需要对其实施软件测试和评估。本文首先讨论黑盒测试技术和策略。
基于Web的移动应用的漏洞识别和利用
在评估基于Web的移动应用时,我们建议评估者以匿名用户的身份来执行测试,并使用多种经认证的用户角色的特权。因为基于Web的应用是通过互联网来访问的,测试团队应当使用PC上的传统浏览器和标准的应用安全评估工具。
在评估过程中,为了确认基础架构水平的漏洞,应当对Web服务器进行扫描。这种扫描的结果应当用于确认常见的应用程序问题。评估者还可以利用人工技术,充分利用所确认的漏洞,并对自动化工具常常遗漏的授权缺陷和业务逻辑进行测试。这一点尤其重要!
此外,企业应当对网站执行“非入侵性”分析,其中包括通过镜像整个站点来检查内容,然后检查客户端的代码漏洞。使用分析阶段所产生的输入,私有的专用工具应当动态地测试Web服务器的组件,用以检查常见的Web服务器和Web应用漏洞,如SQL 注入漏洞、跨站脚本、跨站请求伪造等。此外,还应当利用商业化的工具来执行漏洞扫描。
在确认了漏洞之后,为了利用漏洞,测试人员应当执行测试。此外,还有可能有如下内容:不安全的cookie处理,绕过认证,操纵表单欺诈,URL协议处理程序,基于位置的服务,敏感信息泄露,应用逻辑欺骗等。
在黑盒测试结束时,应当执行漏洞评估,并根据每个漏洞所带来的风险进行评级。
基于设备的移动应用测试环境
为移动设备开发的应用程序带来了传统应用所没有的新的测试挑战。例如,移动设备对低级过程和例外日志拥有有限的直接访问权。移动设备还支持应用程序与GPS、相机、蓝牙、WAP,以及传统PC中所没有的其它技术进行交互。为解决这些困难,企业应使用如下的两种测试方法:
模拟器测试:每一种平台都向开发人员提供了应用开发的SDK,并提供了用于测试和调试的不同型号设备的模拟器。这些工具还允许测试人员在各种配置和设备中分析和测试应用程序,而没有物理设备的限制。模拟器测试的一个好处是,代码并不需要由一个可信方来签署就可以在模拟器中运行。
物理设备测试:对物理设备的测试提供了在模拟器中测试所没有的许多功能,如SMS、GPS、相机、蓝牙等。不过,由于缺乏对底层操作系统和应用签名要求,这种测试又受到了一定限制。
基于设备的移动应用漏洞确认
根据移动应用的功能,测试人员应在模拟器或客户端提供的物理设备中执行测试,或兼而有之。在测试过程中,测试者应确认应用的功能,并针对任何内部的逻辑控制和外部连接。因为移动应用在许多方面是不同的,应当使用下面的步骤来测试每一种应用:
1、映射应用的功能
应当人工检查应用程序,确认其功能和应用程序访问不同组件的方法。评估团队应当重点关注如何确认外部的网络连接,以及数据存储、用户输入和许可等问题。
2、监视连接
移动应用有许多连接到外部源的方式。测试者应当使用代理工具和网络嗅探器,用来监视每一个请求和响应。还要记录数据通信,以便于日后的分析。如果应用程序使用了蓝牙或其它连接,为了捕获数据通信,开发团队应当使移动设备与一个服务器进行配对使用。
3、检查数据处理
由于应用程序的使用,数据可能存在于多个不同的位置。用户或非授权方有可能通过各种方式访问敏感信息或应用。评估应当确认敏感信息在何处产生,并分析如下情形中如何保护数据:由于用户交互而提交给应用的用户输入;用于输入到应用程序中的文件;在正常使和应用期间产生的文件;由于程序的例外进程所生产的应用程序日志;应用程序和设备(它们有可能将敏感数据放在非正常的或非法的位置)的缓存机制;通过网络连接而从外部服务器获得的数据。
4、反编译应用程序
只要条件允许,就应当对应用程序进行反编译,其目的是为了检查有可能使应用程序的漏洞被利用的危险方法,如检查是否有缓冲区溢出问题。虽然许多移动平台是基于Java的,但它们自己的编译器与传统的安全工具并不兼容。如今许多平台都有其反编译器,如黑莓和安卓,苹果也提供了一个反编译器。这些工具能够深入分析应用程序的逻辑,并可以进行有限的静态代码分析。
5、检查加密机制
任何时候都应当保护静态数据和传输中的数据,使其不被未获得授权的人员访问。测试人员应当检查移动设备和任何网络服务器的通信加密情况,检查应用程序是否将文件保存到了设备上,或在备份过程中是否发生过转移。
基于设备的移动应用漏洞利用
利用在漏洞确认阶段所收集的信息,测试人员应当通过以下步骤,尝试利用所确认的漏洞:
1、认证和会话管理
由于可用性的限制,移动应用使用许多新的认证技术,如清除模式,其目的是为了减少口令的复杂性。为了测试是否可以绕过认证控制或访问其它用户的数据,测试者应当测试移动应用的认证机制。在通过认证之后,测试者应当检查应用程序的会话管理。通过观察应用程序如何跟踪、记录用户,测试人员可以评估是否能够重新进行会话或是否可以跳转到另一个用户会话。
2、授权
设备的授权许可应当专门定义,这种控制可以防止设备进一步访问设备或其功能。在应用程序环境中,还应当测试没有得到许可的正常用户是否能够访问某些功能。
3、输入验证
通过规定应用程序的输入区域,并观察输出,安全评估就可以判定在其它特定应用的用户浏览器中,是否能够插入并执行客户端的JavaScript。此操作可以使某用户捕获其它用户的会话机密或应用的用户名和口令等。
4、数据存储
许多应用程序收集关于用户的使用数据。这种数据有可能过度冒犯用户的隐私。测试人员应当检查这种数据,判定应用程序收集并保存了哪些数据以及如何访问这些数据。测试人员还应当测试未经授权的用户或第三方是否能够访问这种数据。
5、风险分析
在移动黑盒测试的结束阶段,测试人员应当评估每一种风险给企业带来的危害。
本文阐述了黑盒测试的基本要点,但如果开发人员在开发过程中能够牢记安全第一的原则,遵循最佳的开发实践,在发布软件之前,积极检查并修正错误,反复测试,将极大地减轻测试人员的负担。