论文部分内容阅读
利用数据挖掘技术可以从海量数据中获取有价值的知识模式。广泛存在的软件源码作为一种特殊的数据形式,在其上应用数据挖掘技术进行源码形式的信息挖掘,已经成为一个新颖而重要的课题。其中,挖掘软件源码中隐含的缺陷检测规则并自动地检测源码中存在的缺陷和漏洞,近年来成为信息安全与数据挖掘领域的一个研究热点。以自动或者较少线索的方式挖掘源码中的安全规则并自动地定位系统中的安全漏洞或缺陷,已经成为一种新的软件源码安全检测手段。 尽管目前已有大量工作研究了源码隐含缺陷检测规则的挖掘,取得了较大的进步,但仍存在如下问题:大多数工作采用路径非敏感的分析方法来挖掘源码中的规则,此方法虽比较简单但是会带来一定的噪声数据,对模式挖掘的准确率产生很大的消极影响;虽然有一些工作采用了路径敏感的方式进行源码模式的挖掘,但是他们只是简单地将各个可能的路径作为挖掘单位,没有充分考虑其存在的问题及其解决办法。 为解决以上工作存在的问题,本文针对软件源码中访问关联变量更新不一致引发的安全问题,提出了一种利用路径敏感的方式来挖掘源码系统中的访问关联变量更新规则并且自动地检测系统中的不一致更新缺陷的方法。该方法采用路径敏感的方式进行了源码访问关联变量分析,可以避免源码中互斥执行及条件执行的变量作为访问关联变量被挖掘出来。所涉及的互斥执行变量主要表现为存在于系统中永远不会同时执行的路径分支上(如if/else语句分支)的变量集合;条件执行的变量主要表现为存在于系统中可能不同时执行的条件分支上的变量集合。针对以上二类变量,本文引入路径敏感的分析来挖掘源码的访问关联变量,可以获得更加精确的挖掘结果。 使用路径敏感的分析方法,面临如下挑战:路径权重不均问题、路径爆炸问题,这也是传统源码挖掘领域很少引入路径敏感挖掘方法的原因。针对以上挑战,本文分别给出了有效的解决办法。路径权重不均问题,其产生的原因是由于程序中不同条件分支层次的路径比重不均衡,本文通过将每个所涉及的变量存储到唯一的项集的方式来解决此问题;路径爆炸问题产生的原因是程序中存在过多的条件分支而导致了计算复杂度的急剧上升,我们通过引入一些信息对路径分支进行过滤,从而缓解此问题。 本文在真实的大型源码系统(Linux内核源码)上评估了提出的方法。实验结果表明本文提出的方法对比于以前的工具,在准确率,计算效率以及有效性方面都表现出了一定的优势。