为了管理软件安全风险,软件安全从业人员必须完成许多不同的工作,比如:
● 创建安全滥用/误用案例。
● 列举标准化的安全需求(以及安全特性和功能)。
● 执行体系结构风险分析。
● 制定基于风险的安全测试计划。
● 执行静态分析工具。
● 进行安全测试。
● 在最终环境中进行渗透测试。
● 在安全被破坏后进行清理。
其中有三种方法联系特别紧密:体系结构风险分析、基于风险的安全测试计划和安全测试——因为安全测试的一个重要方面就是直接探测安全风险。
“软件安全并不是安全的软件”这句精辟的谚语道出了安全测试的重要推动力。虽然安全特性,比如加密、强认证和访问控制,在软件安全中起着重要的作用,但是安全本身是整个系统的一种新特性,而不仅仅是安全的机制和特性。缓冲区溢出是一种安全问题,不论它出现在安全特性中还是在不重要的GUI中。
由于这个原因,安全测试必须包含两种不同的方法:
1.功能性安全测试 测试安全机制以保证正确地实现了它们的功能。
2.对抗性安全测试 执行通过理解和模拟攻击者的方法而设计的基于风险的安全测试。
这两种不同的活动一起构成了融合了白帽子(确保功能的安全)和黑帽子(确保能抵御攻击)的基本方法。安全测试必须综合这两种方法,否则就不能涵盖重要的领域。
许多开发人员都错误地认为安全仅仅就是大量地应用和使用各种不同的安全特性,这种不正确的观念认为“增加SSL”就万事大吉了。解决这类问题的方法往往都过分地依赖“有魔力的加密方法”,软件安全从业人员对此感到沮丧。负责安全测试的软件测试人员也常常有同样的苦恼。
我们并非不应该测试加密方法以确定其魔力。大多数安全攻击都忽略帮助查找系统中的软件缺点的安全机制。安全测试不但需要涵盖安全功能,而且还应该考虑攻击者的想法。
文章来源于领测软件测试网 https://www.ltesting.net/