论文部分内容阅读
随着软件安全问题日益突出,国内外学者不断地提出新的漏洞检测方法,主要分为静态检测和动态检测等。静态检测方法效率高、漏报率低但具有较高的误报率,动态检测方法准确率高却存在检测效率低下和测试用例难以生成的问题。尽管有关学者早已提出对程序安全漏洞进行静动态检测相结合的思想,但并未真正意义上有效地将两者进行结合,其效率和效果仍不够理想。静动态结合的安全漏洞检测主要分为静态检测和动态检测两个阶段。静态检测阶段首先对源程序进行分析与转化,然后利用流分析技术和静态漏洞检测算法获得候选漏洞报告集,并以此作为动态检测的输入;动态检测阶段首先根据候选漏洞报告信息生成基于漏洞类型的程序切片,然后利用一种新的测试场景生成算法构造最精简的测试场景,再读取缺陷数据模板库生成测试用例集,最后驱动测试场景执行,通过插入桩代码和匹配自动机状态完成动态验证,整个过程实现了较高的安全漏洞自动化检测程度。当测试用例集生成失败时,方法中还提供了一种纯手工动态验证机制用于辅助安全漏洞检测。实验结果表明,当对较大规模的程序进行检测时,静动态结合的安全漏洞检测系统能够准确地生成测试场景和测试用例集,快速完成静态检测和动态验证,同时具有较高的准确率和较低的漏报率,达到了预期的检测效果。