【技术实现步骤摘要】
一种实现对源码文件快速开源成分检测的方法和系统
[0001]本申请公开的实施例主要涉及软件成分分析(SCA)安全测试
,且更具体地,涉及一种实现对源码文件快速开源成分检测的方法和系统。
技术介绍
[0002]对于软件开发实体而言,代码复用无疑是能够对软件开发效能产生重大影响的要素。一般来说,狭义的代码复用,往往是指通过将重复的代码提炼成可复用的代码,例如,具体形式可以是一个方法、一套模板或一个框架等,以尽可能避免重复编码代码,进而提高编码效率。然而,随着第三方库和组件等的开源,广义的代码复用,还包括:引入第三方开源库、开源组件到开发的软件项目中;其中,上述引入形式具体则可以是:复制粘贴已有的代码片段、源码文件等;复制粘贴已有的代码片段、源码文件等并进行修改;使用开发框架;复用设计模式等。
[0003]然而,开源成分的引入虽大大提高了软件开发效率、简化了开发过程;但由于引入开源成分,就不免可能引入开源成分可能潜藏的漏洞,造成安全问题,以及由于一些开源成分中所附的计算机软件许可证中规定的法律义务(和现实中因人为疏失 ...
【技术保护点】
【技术特征摘要】
1.一种实现对源码文件快速开源成分检测的方法,其特征在于,该方法包括:对于目标源码文件,定义一个Simhash函数h1,基于Simhash函数h1,根据目标源码文件的代码哈希计算得到第一Simhash值;其中,所述的Simhash函数h1,是指任意一种的Simhash函数;基于指纹库对所述第一Simhash值进行快速匹配:将所述第一Simhash值与指纹库中的第二Simhash值逐一比对、匹配分析,获取与第一Simhash值的相似度在第一阈值内的第二Simhash值,即目标源码文件对应的第三Simhash值;其中,所述的第二Simhash值,是指基于Simhash函数h1分别对源码库中源码文件的代码哈希计算得到的、并存储于指纹库的Simhash值;所述的源码库,是指收集源码文件,并分类存储所收集的源码文件而生成的源代码仓库;若未快速匹配到第三Simhash值,则判定源码库中无与目标源码文件同源的源码文件;若快速匹配得到第三Simhash值,则细部检验:获取全部或部分的第三Simhash值在源码库中对应的源码文件,作为辅助源码文件;将所述辅助源码文件与目标源码文件一起进行代码比较或NLP文本相似度分析,根据预设相似度要求得到细部同源分析结果。2.根据权利要求1所述的方法,其特征在于,预设一个确定的、控制细部检验在低开销的正整数M;当快速匹配得到N个第三Simhash值,N为任一的正整数,则:若N≥M,获取所述N个第三Simhash值中匹配度最高的M个在源码库中对应的源码文件,作为辅助源码文件,以参与后续的相关细部检验;若N≤M,获取全部所述的第三Simhash值在源码库中对应的源码文件,作为辅助源码文件,以参与后续的相关细部检验;和/或,若快速匹配到的第三Simhash值中有匹配度为100%的,则直接判定目标源码文件与所述匹配度为100%的第三Simhash值在源码库中对应的源码文件同源,而无需进一步的细部检验;和/或,基于指纹库对第一Simhash值执行的所述快速匹配,包括:分别计算所述第一Simhash值与指纹库中的各个第二Simhash值之间的海明距离;根据所述海明距离和预设的海明距离阈值,获取目标源码文件对应的第三Simhash值;其中,所述相似度的第一阈值,具体是指所述的预设的海明距离阈值。3.根据权利要求1或2任一所述的方法,其特征在于,所述的细部检验过程中的NLP文本相似度分析,包括:基于Minhash算法,对目标源码文件与辅助源码文件间相似度进行分析;所述的基于Minhash算法的相似度分析,具体包括:根据目标源码文件、辅助源码文件的代码生成目标源码文件、辅助源码文件对应的签名集合;并根据所述签名集合构建特征矩阵;定义一个Minhash函数h2,基于Minhash函数h2和所述特征矩阵估算目标源码文件、辅助源码文件的签名集合间的Jaccard相似度,进而据此得到满足预设相似度要求的细部同源分析结果;其中,所述的Minhash函数h2,是指任意一种的Minhash函数。4.根据权利要求3所述的方法,其特征在于,
所述的基于Minhash函数h2和特征矩阵估算目标源码文件和辅助源码文件的签名集合间的Jaccard相似度以据此实现细部检验的过程,具体包括:对所述特征矩阵进行相应的打乱处理,基于Minhash函数h2获得目标源码文件和辅助源码文件的最小哈希签名矩阵;基于所述最小哈希签名矩阵,分别估算目标源码文件与各个辅助源码文件的签名集合间的Jaccard相似度,来分别确定目标源码文件是否与各个辅助源码文件同源;或,对所述特征矩阵进行相应的打乱处理,基于Minhash函数h2获得目标源码文件和辅助源码文件的最小哈希签名矩阵,根据所述最小哈希签名矩阵,采用LSH算法快速找出其签名集合与目标源码文件的签名集合的Jaccard相似度超过第二阈值的辅助源码文件,判定目标源码文件与所述辅助源码文件同源;若无其签名集合与目标源码文件的签名集合的Jaccard相似度超过第二阈值的辅助源码文件,则判定无与目标源码文件同源的辅助源码文件;和/或,在生成所述签名集合的过程中,包括:基于关键词词典对目标源码文件、辅助源码文件的代码进行分词处理,以获得有利于提高细部检验相似度分析效率和精度的目标源码文件、辅助源码文件的签名集合。5.一种实现对源码文件快速开源成分检测的系统,其特征在于,该系统包括:匹配器,以及检验器;其中,匹配器,用于对目标源码文件执行快速匹配;匹配器被配置得能够通过一个确定的Simhash函数h1对目标源码文件的代码哈希处理得到第一Simhash值、以及将所述第一Simhash值与指纹库中的第二Simhash值进行快速匹配以获取第三Simhash值用于相关开源成分分析;而若未匹配到第三Simhash值,则判定源码库中无与目标源码文件同源的源码文件;其中,所述的Simhash函数h1,是指任意一种的Simhash函数;所述的第二Simhash值,是指基于...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。