论文部分内容阅读
随着云计算技术在各个领域的大量应用,大量的业务软件被部署到云环境中。云环境在部署了海量业务软件的同时也承载了每一个软件中存在的漏洞。大量漏洞的存在不仅仅给业务软件带来严重的安全问题,甚至也会影响到云平台的运行。然而漏洞发布之后仍然得不到及时修补的情况非常普遍,这些得不到及时修补的含漏洞代码会极大地威胁整个平台的安全性。准确、快速地在海量软件中检测是否存在已发布漏洞成为一个亟待解决的问题。针对云环境下大规模软件,提出基于语义的相似漏洞代码检测系统SCVD(A Semantics-Based System for Cloned Vulnerable Code Detection),首先通过分析NVD(National Vulnerability Database,美国国家漏洞库)中海量已发布漏洞,提取出漏洞原始代码。然后,为漏洞原始代码生成PDG(Program Dependency Graph,程序依赖图),并使用标识符名称映射技术来消除标识符名称修改对检测准确度造成的影响。最终,使用全路径遍历算法在保留携带的全部语义信息的同时将PDG转化为程序特征树,并将程序特征树应用于云环境下大规模软件的相似漏洞代码检测中。将复杂的子图同构问题转化为较为简单的树相似性问题,并使用标识符名称映射技术,提高基于语义的相似漏洞代码检测技术的准确度和速度,以更好地应用到云环境下大规模软件相似漏洞代码检测中。经过大量的实验测试,在误报率和漏报率方面基于语义的相似漏洞代码检测系统SCVD相对于现有基于语义、基于语法和基于token的相似漏洞检测技术有非常显著的提高。并且相比与现有子图同构的方法将平均时间开销减少了36.3%。