软件可靠性与安全性的测试
最后更新于
最后更新于
在本小节,我们关注如何通过测试构造安全可靠的软件。
评估软件的可靠程度。
软件可靠性:软件在规定的时间和规定的环境下,完成规定功能的能力。
Operational profile based testing的定义:
描述用户如何使用软件的一种技术,是一系列操作及其出现概率的集合。
如果软件系统运行过程中某几个操作序列运行频率高,而且
这几个操作的可靠性也高,那么软件的可靠性相对就较高。因此我们希望尽可能地增加关键操作的执行概率。
通过构建软件系统的操作剖面,可以有效地指导软件可靠性
测试,合理分布资源,提高测试效率(使经常使用的操作得
到更多测试)
具体执行时的细节问题:
又右下角的图看出用第二个序列更能维持操作概率的稳定,故第二个测试序列效果更好。
检测软件安全控制机制的正确性和有效性。
采用功能验证、漏洞扫描、模拟攻击等多种方法对用户管理、权限管理、加密系统、认证系统等与安全相关的功能进行测试,验证软件系统危险防止和危险处理的能力
安全是相对的:攻破系统必须付出比获得的利益更多的代价时,非法入侵便失去意义
从分类上来说,大体可以分为两类:
安全功能测试
测试软件实现是否与安全需求说明一致
数据机密性、完整性、不可否认性、身份认证、授权、访问控制、审计、隐私保护、安全管理等
安全漏洞测试
从攻击者的角度,以发现软件的安全漏洞为目的
系统在设计、实现、操作、管理上存在的可被利用的缺陷或弱点,这些漏洞可能造成软件受到攻击,使软件进入不安全的状态
以Web应用的安全问题举例(有兴趣的读者可以去查看The Open Web Application Security Project(OWASP)的网站)相关的问题包括但不仅限于:
SQL 注入
跨站脚本攻击(XSS)
跨站请求伪造攻击(CSRF)
一些常见的安全性测试方法有:
Static Analysis
Fuzzing
Syntax Testing
Fault Based Testing
...
检测软件是否能正确识别用户信息。解决"who are you?"的问题。
Authentication is the process of attempting to verify the digital identity of the sender of a communication. i.e.
Credentials Transported over an Encrypted Channel
Weak lock out mechanism (brute force passwords)
Bypassing authentication schema
Remember password functionality
Browser cache weakness (do not store sensitive data)
Weak password policy
Weak password change or reset functionalities
Weaker authentication in alternative channel
...
检测软件的各类资源是否经允许才能被使用。解决"what can you do?"的问题。
Authorization is the concept of allowing access to resources only to those permitted to use them. i.e.
Directory traversal/file include
Bypassing authorization schema
Privilege Escalation (cannot modify users’ privileges)
Insecure Direct Object References (do not provide direct access to objects based on user’ input)
...
检测用户是否能绕过软件的输入验证机制。
Value level bypassing: whether a software system adequately evaluates invalid inputs
Parameter level bypassing: address issues related to built-in input parameter selection, built-in data access