软件安全测试的几个原则

发表于:2015-03-06来源:uml.org.cn作者:不详点击数: 标签:安全测试
软件安全性是一个广泛而复杂的主题,要避免因安全性缺陷问题受各种可能类型的攻击是不切实际的。本文从软件安全测试需要考虑的问题,来探讨软件安全测试原则,通过遵循这些原

  摘要:软件安全性是一个广泛而复杂的主题,要避免因安全缺陷问题受各种可能类型的攻击是不切实际的。本文从软件安全测试需要考虑的问题,来探讨软件安全测试原则,通过遵循这些原则避免许多常见的安全性测试问题出现。

  关键词:软件安全;测试;原则

  软件安全性是一个广泛而复杂的主题,每一个新的软件总可能有完全不符合所有已知模式的新型安全性缺陷出现。要避免因安全性缺陷问题受各种可能类型的攻击是不切实际的。在软件安全测试时,运用一组好的原则来避免不安全的软件上市、避免不安全软件受攻击,就显得十分重要。

  一、软件安全性测试基本概念

  软件安全性测试包括程序、网络、数据库安全性测试。根据系统安全指标不同测试策略也不同。

  1.用户程序安全的测试要考虑问题包括:

  ① 明确区分系统中不同用户权限;

  ② 系统中会不会出现用户冲突;

  ③ 系统会不会因用户的权限的改变造成混乱;

  ④ 用户登陆密码是否是可见、可复制;

  ⑤ 是否可以通过绝对途径登陆系统(拷贝用户登陆后的链接直接进入系统);

  ⑥ 用户推出系统后是否删除了所有鉴权标记,是否可以使用后退键而不通过输入口令进入系统。

  2.系统网络安全的测试要考虑问题包括:

  ① 测试采取的防护措施是否正确装配好,有关系统的补丁是否打上;

  ② 模拟非授权攻击,看防护系统是否坚固;

  ③ 采用成熟的网络漏洞检查工具检查系统相关漏洞;

  ④ 采用各种木马检查工具检查系统木马情况;

  ⑤ 采用各种防外挂工具检查系统各组程序的客外挂漏洞。

  3.数据库安全考虑问题:

  ① 系统数据是否机密(比如对银行系统,这一点就特别重要,一般的网站就没有太高要求);

  ② 系统数据的完整性;

  ③ 系统数据可管理性;

  ④ 系统数据的独立性;

  ⑤ 系统数据可备份和恢复能力(数据备份是否完整,可否恢复,恢复是否可以完整)。

  二、根据软件安全测试需要考虑的问题

  1. 保护了最薄弱的环节

  攻击者往往设法攻击最易攻击的环节,这对于您来说可能并不奇怪。即便他们在您系统各部分上花费相同的精力,他们也更可能在系统最需要改进的部分中发现问题。这一直觉是广泛适用的,因此我们的安全性测试应侧重于测试最薄弱的部分。

  如果执行一个好的风险分析,进行一次最薄弱环节的安全测试,标识出您觉得是系统最薄弱的组件应该非常容易,消除最严重的风险,是软件安全测试的重要环节。

  2. 是否具有纵深防御的能力

  纵深防御背后的思想是:使用多重防御策略来测试软件,以至少有一层防御将会阻止完全的黑客破坏。 “保护最薄弱环节”的原则适用于组件具有不重叠的安全性功能。当涉及到冗余的安全性措施时,所提供的整体保护比任意单个组件提供的保护要强得多,纵深防御能力的测试是软件安全测试应遵循的原则。

  3. 是否有保护故障的措施

  大量的例子出现在数字世界。经常因为需要支持不安全的旧版软件而出现问题。例如,比方说,该软件的原始版本十分“天真”,完全没有使用加密。现在该软件想修正这一问题,但已建立了广大的用户基础。此外,该软件已部署了许多或许在长时间内都不会升级的服务器。更新更聪明的客户机和服务器需要同未使用新协议更新的较旧的客户机进行互操作。该软件希望强迫老用户升级,没有指望老用户会占用户基础中如此大的一部分,以致于无论如何这将真的很麻烦。怎么办呢?让客户机和服务器检查它从对方收到的第一条消息,然后从中确定发生了什么事情。如果我们在同一段旧的软件“交谈”,那么我们就不执行加密。

  遗憾的是,老谋深算的黑客可以在数据经过网络时,通过篡改数据来迫使两台新客户机都认为对方是旧客户机。更糟的是,在有了支持完全(双向)向后兼容性的同时仍无法消除该问题。

  对这一问题的一种较好解决方案是从开始就采用强制升级方案进行设计;使客户机检测到服务器不再支持它。如果客户机可以安全地检索到补丁,它就升级。否则,它告诉用户他们必须手工获得一个新的副本。但是从一开始就应准备使用这一解决方案,就会得罪早期用户。

原文转自:http://www.uml.org.cn/Test/201112223.asp