一种采用脆弱性切片的大规模软件漏洞检测方法及系统技术方案

技术编号:32660497 阅读:54 留言:0更新日期:2022-03-17 11:10
本发明专利技术公开了一种采用脆弱性切片的大规模软件漏洞检测方法及系统,包括对被检测软件提取包含函数特征的函数代码块;对脆弱性代码库使用程序切片方法提取包含脆弱性特征和补丁特征的脆弱性代码块;使用脆弱性代码块建立索引,使用函数代码块查询索引,得出候选集;针对被检测软件中的每一个函数代码块,计算候选集内的代码块的函数特征与函数代码块的脆弱性特征及补丁特征之间的相似度,根据相似度得到该函数代码块的漏洞检测结果。本发明专利技术兼顾了检测的效果和适用规模,能够适用于大规模软件漏洞检测场景,能够充分提取出脆弱性代码中的脆弱性信息,可有效提高漏洞检测的精确率和召回率,可防止将补丁代码误判为脆弱性代码。可防止将补丁代码误判为脆弱性代码。可防止将补丁代码误判为脆弱性代码。

【技术实现步骤摘要】
一种采用脆弱性切片的大规模软件漏洞检测方法及系统


[0001]本专利技术涉及代码克隆、程序切片以及漏洞检测
,具体涉及一种采用脆弱性切片的大规模软件漏洞检测方法及系统。

技术介绍

[0002]一段代码未经修改或经修改后,被复制到新的软件中,成为该软件的一部分,这种操作被称为代码克隆。代码克隆可以加快软件开发速度、降低软件开发的成本,因此普遍存在于实际软件开发中。研究显示,在一般的软件项目中,普遍存在5%

20%的重复代码。即便像XWindows System等计算领域公认的高质量系统也存在19%的代码克隆。近年来,开源项目数量飞速增加。2021年10月,世界上最大的开源项目网站GitHub上发布的开源项目数量已超过2亿个。开源项目的代码公开,代码共享和重用促使代码克隆更为普遍。2021年,Synopsys网络安全研究中心对17行业中超过1500个商业代码库中的匿名数据进行了开源组件的复用分析和审计。结果显示,被审计的代码库中,98%的代码库存在开源组件。
[0003]代码克隆在缩短软件开发周期、降低开发成本的同本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种采用脆弱性切片的大规模软件漏洞检测方法,其特征在于,包括:1)对被检测软件提取包含函数特征的函数代码块;对脆弱性代码库使用程序切片方法提取包含脆弱性特征和补丁特征的脆弱性代码块;2)使用脆弱性代码块建立索引,使用函数代码块查询索引,得出候选集;3)针对被检测软件中的每一个函数代码块,计算候选集内的代码块的函数特征与函数代码块的脆弱性特征及补丁特征之间的相似度,根据相似度得到该函数代码块的漏洞检测结果。2.根据权利要求1所述的采用脆弱性切片的大规模软件漏洞检测方法,其特征在于,步骤1)中对被检测软件提取包含函数特征的函数代码块包括:1.1A)获取并扫描被检测软件,按函数粒度提取出代码中的函数;1.2A)针对每个函数,提取出函数特征,获得Token序列;1.3A)分别统计每级特征中各类Token的频率,以二元组<Token,频率>的形式保存成函数代码块,并输出保存成被检测软件中间文件。3.根据权利要求2所述的采用脆弱性切片的大规模软件漏洞检测方法,其特征在于,步骤1)中的程序切片方法是指以脆弱性文件修复前后被改动部分作为切片准则,向前和向后进行切片。4.根据权利要求3所述的采用脆弱性切片的大规模软件漏洞检测方法,其特征在于,步骤1)中对脆弱性代码库使用程序切片方法提取包含脆弱性特征和补丁的脆弱性代码块包括:1.1B)扫描脆弱性代码库,提取出其中的脆弱性函数和补丁函数;1.2B)针对每个脆弱性函数,先使用工具得到函数的程序依赖图,再以差异对比脆弱性文件修复前后的删除行作为切片准则,在程序依赖图中向前和向后进行切片,切片得出的语句即为提取出的脆弱性信息;针对每个脆弱性函数,先使用工具得到函数的程序依赖图,再以差异对比脆弱性文件修复前后的新增行作为切片准则,在程序依赖图中向前和向后进行切片,切片得出的语句即为提取出的补丁信息;1.3B)针对脆弱性信息,提取出脆弱性特征;针对补丁信息,提取出补丁特征;1.4B)分别统计脆弱性特征和补丁特征中各种Token的频率,以二元组<Token,频率>的形式保存成脆弱性代码块,并输出形成脆弱性信息库的中间文件。5.根据权利要求4所述的采用脆弱性切片的大规模软件漏洞检测方法...

【专利技术属性】
技术研发人员:任怡杨立明谭郁松李宝董攀张建锋蹇松雷阳国贵黄辰林王晓川丁滟谭霜
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1