软件安全分析与测试,顾名思义,即通过分析(静态分析)与测试(动态测试)的手段发现软件系统中存在的安全问题。 软件系统中存在的安全问题,最典型的就是安全漏洞。那么什么是安全漏洞? 在生活中,针对软件中出现一些不足(Defect),我们时常听到这样句子: “你写的这个软件有bug” “他们这个软件有缺陷Flaw” “我发现了这个软件的一个安全漏洞Vulnearbility” 问题来了,软件bug, Flaw 以及Vulnerability是一回事吗?如果不是,他们又有什么区别呢? 根据美国马里兰大学帕克分校的 Prof.Michael Hicks 在软件安全课程中的定义: Software defect is a problem in the design and implementation of system such that it fails to meet its requirements. Software flaw is the defect in the design. Software bug is the defect in the implementation. Software vulnerability is the security-related defect that can be exploited to effect an undesigned and insecure behavior. 用中文概括下即: Defect统称软件设计与实现中的缺陷。 Flaw 指的是设计上的缺陷。 Bug 指的是实现上的缺陷。 Vulnerability 特指与安全相关,且可被利用进而产生不安全行为的缺陷。 至此,下次我们再听到上述语句时,可以正确的理解为: “你写的这个软件代码实现上有bug” "他们这个软件设计上有缺陷Flaw" “我发现了这个软件的一个安全漏洞Vulnerability,可以被利用来干XX坏事” 最后,推荐学习coursera上 Prof.Michael Hicks 的Software Security。