论文部分内容阅读
源代码是软件的“原材料”,对源代码进行安全测试意味着守住了软件安全最关键的安全防线之一,只有源代码中的安全漏洞得以及早消除,安全风险得到控制,最终形成的软件产品才有可能具备较好的安全性。软件源代码安全测试是提高软件安全性、保证软件质量的重要途径之一,受到学术界和工业界的广泛关注和高度重视。现在出现了越来越多的开放源码检测项目和商业化的源代码安全测试工具,从不同角度提出了各种检测方法和技术。但由于检测引擎的设计、漏洞规则库的建立、编程语言的特点等多方面因素的影响,现有源代码安全测试工具存在不同的检测能力和漏洞表达体系,所输出的测试结果也存在不同的误报和漏报,对测试工具的检测结果投入大量的人力和时间进行人工审核确认,为了测试的全面性,往往还采用多种测试工具对用一份软件源代码进行安全测试,这些手段已成为提高软件质量的一种普遍的做法。不同测试工具对同一份源代码样本进行测试的结果的人工审核和融合存在必要性,但是也存在人工工作量巨大、工作过程简单重复等问题,目前尚无软件工具能辅助完成,是提高软件质量和测试效率急需解决的问题。本文在研究软件源代码常见高危漏洞、评估常见检测软件测试能力的基础上,形成源代码漏洞统一描述方法和加权迭代算法,建立了基于结果反馈机制的源代码安全测试模型,对这种提高软件安全性和测试效率的途径进行了探索。本文的主要研究工作:1)针对常见的软件源代码高危漏洞从形成原理、表现形式及造成的危害等几方面进行了详细的研究。对常见的源代码安全测试工具在关键技术、检测能力、缺陷描述、结果展示等多个方面进行了对比分析;2)调研目前已有的软件源代码漏洞分类及描述方法,形成一种统一的缺陷描述方法,以解决多种检测工具在测试结果表达不一致的问题。3)基于Adaboost迭代算法,加入结果反馈和加权分析机制,构建了基于结果反馈的源代码安全测试模型。4)选用开源软件的源代码作为测试样本进行源代码安全测试,将测试结果作为模型的训练样本集,以训练和增强模型的检测能力。5)最后通过实验验证了本文方案的有效性及优越性,并探讨了该模型未来的应用发展方向。本文可能的创新是改造并形成了统一的缺陷描述方式,构建了基于检测结果反馈机制的源代码安全测试模型,探究了降低人工、提高效率的软件安全测试途径。这类基于结果反馈机制的多系统输出结果融合的集成模型研究具有一定的通用性。