4、恐怖公式(DREAD Formula):
(1)潜在的危害
(2)可反复性
(3)可利用性
(4)受影响的用户
(5)可发现性
5、软件安全是一项功能吗?软件漏洞是一个缺陷吗?
软件安全可以简单地看做是软件产品或系统的另外一项功能。
软件测试员可能会负责测试软件的整个安全性,或者可能仅仅负责测试被分配测试的功能是安全的。
软件测试员不需要拿到一份清楚明白地定义软件安全性是如何实现的产品说明书。
软件测试员也不能假设威胁模型分析是完全和准确的。
技巧:测试安全缺陷是失效性测试行为,也常常覆盖产品中没有被完全理解和说明的部分。
6、了解缓冲区溢出
任何软件产品中都有一个安全问题——缓冲区溢出。
数据引用错误——既使用没有被正确申明和初始化的变量、常数、数组、字符串或记录引起的缺陷。
缓冲区溢出就是这种缺陷。
由于字符串的不正确处理引起的缓冲区溢出是目前为止最为常见的一种代码编写错误,其结果是导致安全漏洞。
7、使用安全的字符串函数
通用C和C++函数中容易引起缓冲区溢出的编码错误。这些函数自身并不差,但是要安全的使用它们,需要在程序员这边进行更为深入的错误检测。如果忽略了这种错误检测,代码就会有安全漏洞。
衡量一下这种疏忽带来的风险,最好还是开发或改进一组新的函数,即用强壮、完全测试通过的、文档齐全的新函数集替代这些容易引起问题的函数集。
这些新的函数,叫做安全字符串函数(Safe String Functions),在windowsXP的SP1版本、最新的windows DDK和平台SDK中已经具有。常用的操作系统、编译器,处理器也具有其它很多实现了安全字符串的商用的或免费的库。
使用新函数的好处(部分):
(1)每个函数接收目标缓冲的长度作为输入。这样函数就能确保在写入时不会超过缓冲区的长度。
(2)函数空字符中止所有的输出字符串,即使操作截断了预计的后果。
(3)所有函数返回一个NTSTATUS值,该值只有一个可能成功的代码。调用函数能轻易地确定函数的执行是否成功。
(4)每个都提供版本。一个支持单字节的ASCII字符,另一个支持双字节的Unicode字符。
8、计算机取证
注意:用户变更时未被删除的保留数据叫做潜在数据。潜在数据时潜在的安全漏洞,需要在小组采用的任何威胁模型分析中进行讨论。也许这些数据不会被看成是产品的问题,也许会被看成是一个大问题。
潜在数据的更复杂的例子是由计算机安全专家用来发现可以用做犯罪调查的证据。
9、总结
没有计算机系统是安全的。为帮助设计一个安全的系统,在产品设计的最开始就必须注意安全的问题。
测试员仅能测试软件的安全性,软件安全必须先计划、评审、设计,然后才是测试。