7.1.5 软件安全保障
1.软件安全问题
软件安全(即设计、构造和lj0试安全的软件的方法)通过确定和解决软件本身的问题而触及计算机安全的核心。软件安全试图基于这种方法构建禽邑够主动抵御攻击的软件。
虽然我们已经非常清楚软件安全问题是一个大问题,但是在对软件安全问题进行分级和分类方面,科学家们做的工作还很少。下面我们将从强调安全的角度来重新介绍基本的术语一缺点( Defect)、缺陷(Bug)、瑕疵(Flaw)、故障(Failure)和风险(Risk),这将有助于我们澄清分类问题。我们建议对这几个词采用如下的用法。
缺点( Defect):软件在实现上和设计上的弱点都是缺点。缺点是一种可禽皂在软件中潜伏许多年,仅仅在某个应用场景背景下的系统才会表现出来并导致严重后果的问题。
缺陷( Bug):缺陷是实现级上的软件问题。缺陷可能存在于代码中而永远不会被执行。虽然术语缺陷被许多软件业者所广泛使用,但是仅仅用它来描述简单的实现上的错误。 缺陷是很容易被发现和修改的实现级问题。例如缓冲区溢出,就是一种实瑰缺陷。
瑕疵( Flaw):瑕疵是一种更深层次的问题。与数组引用中的差一错误或者使用不正确的系统调用这样的简单的错误相比,瑕疵通常更加难以察觉。瑕疵当然是在软件代码中被实例化的,但是他也出现(或者不出现)在设计级中。例如,大量的典型瑕疵存在于错误处理和恢复系统中,它们都会导致程序不安全或者无效率。典型的“Mic,rosoft Boh“就是一个设计瑕疵。
故障( Failure):对缺点不做任何纠正和恢复的情况下,导致系统的输出不满足用户提供的正式文件上指明的要求或双方协议的条款,称为软件的一次故障。软件故障是由于软件存在缺点造成的一种外部表现,它是动态的、程序执行过程中出现的行为表现。