论文部分内容阅读
随着软件系统的广泛应用,软件安全漏洞的数量也在急剧增加。越来越多的软件成为恶意攻击者的目标,软件安全漏洞的存在已经严重威胁到系统的安全。如果能有效检测到软件漏洞的存在,就可以提高软件的安全性。本文针对目前软件安全漏洞检测方法漏洞率和误报率较高的问题,将序列聚类引入到软件安全漏洞检测中。首先,提出基于熵的k-means序列聚类算法用于软件漏洞检测。该算法采用漏洞序列的熵指导k-means聚类漏洞序列的过程,以形成漏洞模式库。定义GLSM相似度,衡量漏洞序列之间的全局相似程度和局部相似程度,选择熵值最小的序列作为当前中心点以形成聚类。分析漏洞序列时,计算该序列与各聚类中心点的GLSM相似度,选择相似度最大的聚类归入其中,而待检测序列的漏洞类型与所属聚类中相似度最大的漏洞序列相同。其次,提出加权k-means序列聚类算法,并将它应用到软件漏洞检测中。该算法基于向量空间模型定义漏洞序列之间的向量相似度,同时定义自适应权重量化每个漏洞序列对聚类中心选择的影响。根据序列的权重设计加权k-means序列聚类算法对已有的软件漏洞序列数据库进行聚类,形成漏洞模式库。而待分析序列的漏洞类型则由该序列与聚类中心的距离来确定。再次,提出基于快速DBSCAN序列聚类的软件漏洞检测方法。定义漏洞序列的rd-entropy以及漏洞序列的s-order。针对DBSCAN聚类算法搜索时间长的问题,选择rd-entropy最小的漏洞序列作为中心来扩展聚类,以减少初始聚类的个数。针对基于距离的相似度度量方法对噪声敏感的问题,定义s-order的破坏程度作为相似度的衡量标准。进行软件漏洞分析时,先采用快速DBSCAN序列聚类算法构造漏洞模式库,之后通过衡量加入待分析序列后聚类s-order的破坏程度来确定待分析序列的漏洞类型。最后,为了能够有效发现未知的漏洞类型,提出增量快速DBSCAN序列聚类算法。软件漏洞模式库由快速DBSCAN聚类算法获得,待分析的漏洞序列由增量快速DBSCAN算法进行聚类。当有序列需要分析时,计算该序列的影响集和种子集,并由种子集形成扩展类,在原漏洞模式库基础上对该序列做插入操作。通过判断扩展类与漏洞模式库中聚类之间的关系,可以判定待分析序列的漏洞类型。实验结果表明,本文提出的序列聚类算法,提高了相似度度量的准确性,改善了聚类的质量。基于熵的k-means聚类算法、加权k-means聚类算法和快速DBSCAN算法和增量快速DBSCAN算法的性能也有所提高,并且保持了很好的伸缩性。同时,由于序列聚类的引入,缩小了漏洞匹配的范围,降低了软件漏洞检测的漏报率和误报率,大大提高了软件的安全性。