论文部分内容阅读
伴随着基于计算机应用的不断发展而现存的计算机安全问题,大部分是由于应用软件本身的安全缺陷引起的,而应用软件本身的安全问题大部分是由软件的源代码缺陷所造成的,基于源代码的缺陷分类是构建源代码静态检测系统的基础和灵魂,故如何运用源代码缺陷分类构建源代码分析系统去检测软件的安全性已经成为信息科学技术领域迫切需要解决的问题。
软件源代码静态分析缺陷是指用静态检测方法即不运行被测程序本身,仅通过分析或检查源程序的语法、过程、结构、接口等来检查程序的正确性的方法所分析得出的软件源代码缺陷。
本文分析了大量源代码静态缺陷分类数据,如分析了CWE缺陷分类,FindBugs缺陷分类,某商业软件缺陷分类;对以上三种缺陷分类进行了仔细全面的分析综合,以以上三种缺陷分类的内容作为分类基础,根据源代码静态缺陷产生的根源从词法、语法、语义三个层次分析源代码造成的缺陷类别作为依据,以正交缺陷分类度量方法作为缺陷分类的分类方法,总结得出源代码静态分析缺陷分类。
以正交缺陷分类度量方法得出的缺陷分类分为9个大类,203个子类,473个细类,每个类别之间相互正交,每个作为终极分类的子类和每个细类都有10个属性,分别为缺陷类别ID,缺陷类型,缺陷名称,缺陷严重等级,缺陷优先级,语言类型,详细描述,修复建议,参考CWE,缺陷样本。
该源代码静态缺陷分类既可以弥补传统缺陷分类方法中的不足,又达到传统缺陷分类无法实现的某些特定目标,如缺陷样本。该分类对每一个缺陷分类都有详尽的缺陷样本,更详尽的对各种语言都有对应的样本代码,并附上对样本的解释和修复建议,方便测试人员对照分析比对。采用以上三种方法技术结合实现的缺陷分类系业内最全面,最仔细(源代码静态缺陷分类覆盖面广,几乎覆盖了所有源代码中出现的缺陷类别),最详尽(分类包含内容齐全,不仅包含缺陷分类的类别,严重程度,详细描述,还包含目前许多同类缺陷分类所没有的修复建议,缺陷样本)的源代码静态缺陷分类。源代码静态安全缺陷分类同时在扩展性(与CWE缺陷分类关联,其他种类划分的缺陷分类只要与CWE能对应或者能在CWE中找到与之相关的都可与源代码静态分析缺陷分类对应起来)、完备性(不仅包含其他分类的优点,更能体现出其他分类所不能体现的优点)、兼容性(能与各源代码检测工具的结果进行比对,殊途同归)等缺陷检测和缺陷管理等方面都取得了很好的效果。
本文的主要成果如下:
(1)分析了传统的源代码静态安全缺陷分类方法,总结其优缺点,提出构建完整缺陷分类的重要性。
(2)介绍当前软件代码的风险分类,分析各种类型风险的成因,讨论了几种常见缺陷分类方法,如CwE缺陷分类,FindBugs缺陷分类,某商业软件缺陷分类等方法,在大量缺陷分类数据的基础上总结出完善的源代码静态分析缺陷分类。
(3)结合现在成熟的词法分析、语法分析、结构流、数据流、控制流技术,从源代码缺陷的理论根源上出发,并运用正交缺陷分类方法作为度量方法和手段,从源代码入手,根据词法、语法与语义层次结构,分析程序的结构与关键特征,从而获得程序的源代码静态缺陷分类,并总结形成新的缺陷分类。
(4)该缺陷分类结合了各缺陷分类的优点,能把各种源代码静态检测的结果进行比对统一,各源代码静态检测工具结果更能用该缺陷分类作为参考依据,体现了改缺陷分类的兼容性强的特点。