System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于加权方法间程序依赖图的漏洞影响软件库版本检测方法技术_技高网
当前位置: 首页 > 专利查询>复旦大学专利>正文

基于加权方法间程序依赖图的漏洞影响软件库版本检测方法技术

技术编号:44322301 阅读:2 留言:0更新日期:2025-02-18 20:32
本发明专利技术属于计算机软件安全技术领域,具体为一种基于加权方法间程序依赖图的漏洞影响软件库版本检测方法。本发明专利技术漏洞影响软件库版本检测方法包括:为每个漏洞生成漏洞签名和补丁签名,并将其表示为加权IPDG;生成候选软件库版本的潜在漏洞签名和潜在补丁签名,并与原始签名进行相似度比较,检测哪些软件库版本受漏洞影响。利用补丁中的修改代码行生成漏洞签名与补丁签名,从而克服现有技术无法在没有删除代码行的情况下生成漏洞签名的局限性。此外,通过HITS算法选择关键方法,并通过污点分析识别关键变量及其依赖关系,以确定关键语句,从而进一步提高检测的准确性。本发明专利技术能够有效提高开源软件供应链中漏洞检测的精度与效率。

【技术实现步骤摘要】

本专利技术属于计算机软件安全,具体涉及一种漏洞影响软件库版本检测方法。


技术介绍

1、开源软件的快速发展使得第三方软件库的广泛使用成为现代软件开发的常态。随着时间的推移,这些软件库及其不同版本可能包含大量已知漏洞,给系统带来安全隐患。因此,及时识别哪些包版本受到了特定漏洞的影响,成为维护开源软件供应链安全的重要任务。

2、命名实体识别技术被用于从漏洞报告和描述中提取受影响的软件库版本。dong等人[1]提出了使用命名实体识别技术从漏洞描述中提取受影响软件库版本信息。这种方法虽然能够自动化地处理漏洞描述,但它的有效性取决于漏洞描述的质量和详细程度。若漏洞描述不完整或模糊,该方法无法准确识别受影响的版本。近年来,研究者们逐渐将重点转向通过静态分析源代码来识别受影响的库版本。基于补丁的方法[2][3][4][5]通过追踪代码版本历史中的变更来识别漏洞版本。这类方法通过比对补丁中的新增和删除代码行,来确定哪些版本的代码包含相同的漏洞。然而,这种方法依赖于补丁中是否包含删除代码行,无法处理那些没有删除行的补丁,从而漏报某些受影响版本。此外,这些方法通常只关注补丁中的代码变更,忽略了漏洞周围的上下文信息,可能会导致误报。基于克隆检测的方法[6][7][8][9][10]通过生成修复方法的代码克隆指纹来识别受影响的库版本。这些方法通过程序切片技术引入漏洞的上下文信息,试图提高检测的准确性。然而,它们对所有修复方法赋予相同的重要性,未能区分某些修复方法或语句在漏洞修复中的不同作用。这种不加权的重要性划分可能导致错误的匹配结果,特别是在大型代码库中不同修复方法对漏洞的修复贡献存在显著差异时。

3、因此,本专利技术提出一种更为有效的漏洞影响版本检测方法,基于对修复前后的代码变化分析,并结合加权的方法间依赖图(ipdg)技术,可以更加精准地识别受漏洞影响的软件库版本。


技术实现思路

1、本专利技术的目的在于提出一种检测精度与效率高的基于加权方法间程序依赖图的漏洞影响软件库版本检测方法

2、本专利技术提出的漏洞影响软件库版本检测方法,通过生成加权的方法间依赖图(ipdg),对代码变化进行深度分析,识别出受漏洞影响的软件库版本;本专利技术通过对关键方法和关键语句的精确选择及其在方法间的依赖关系,显著提升检测精度与效率,具体步骤如下:

3、(一)漏洞与补丁签名生成

4、漏洞与补丁签名的生成是本技术的核心,通过分析漏洞修复前后的代码变更,生成具有语义权重的方法间依赖图。在漏洞修复过程中,代码的变化主要体现在某些关键方法的修改或新增;漏洞与补丁签名生成的首先是从修复前和修复后的代码中提取(选择)关键方法。关键方法的选择不仅仅依赖于代码中的方法调用关系,还结合漏洞描述中的上下文信息,以确保选中的方法与漏洞直接相关。具体流程如下:

5、(1)方法引用图的生成:通过分析漏洞修复前后的代码生成方法引用图(mrg),mrg用于表示各个方法之间的调用关系。生成过程中使用工具如joern[11],以便自动解析代码并生成图结构;mrg为方法间分析提供了结构化的上下文信息,便于之后的关键方法选择。

6、(2)漏洞描述分析:本专利技术从cve描述和github提交信息中提取与漏洞相关的类名和方法名。这些描述信息通常由安全专家编写,包含对漏洞根源的详细分析,因此提供了宝贵的语义信息。将这些信息融入到方法引用图中,增强对方法语义关系的理解。这里,cve(common vulnerabilities and exposures)是一个国际通用的漏洞标识系统,提供有关安全漏洞的详细描述。cve描述通常包括漏洞的影响范围、引发问题的原因以及解决方案的概要。这些描述可以提供线索,帮助定位代码中可能存在漏洞的类名和方法名。在github中,提交信息是开发者在向代码库中提交更改时附带的简短描述。这些提交信息通常解释了具体修改哪些漏洞相关模块。

7、(3)关键方法的选择:采用超链接诱导话题搜索(hits)[12]算法,通过计算方法之间的权威值和枢纽值来确定关键方法。hits算法的输入是mrg图,算法输出每个方法的权威值(代表方法的重要性)和枢纽值(代表方法作为入口的可能性)。根据权威值和枢纽值,选择出漏洞相关的关键方和补丁相关的关键方法。特别地,权威值高的方法通常是那些会被攻击者触发的关键方法,而枢纽值高的方法则是可能引发攻击的入口点。

8、(4)关键语句的识别;关键方法选择之后,接下来要进行语句级别的分析,识别出与漏洞修复直接相关的关键语句。为了实现这一点,首先生成每个关键方法的程序依赖图(pdg),然后进行前向和后向切片,以识别出与漏洞相关的语句和变量。具体如下:

9、(4.1)生成程序依赖图(pdg):pdg表示程序中各语句之间的控制流和数据流依赖关系。本专利技术使用joern工具生成pdg,该工具能够将源代码解析为一个图结构,便于对程序依赖关系的分析。

10、(4.2)前向和后向程序切片:对每个关键方法中的修改语句进行前向和后向切片,识别出与这些修改语句有依赖关系的其他语句。前向切片用于查找依赖于这些修改语句的后续语句,后向切片则用于查找影响这些修改语句的先前语句。

11、(4.3)污点分析:使用前向污点分析与后向污点分析,通过追踪从关键变量开始的控制流和数据流,识别出影响这些变量的语句。通过这种方式,能够识别出与漏洞修复最为相关的关键语句。

12、(5)生成漏洞与补丁签名:根据关键方法和关键语句,构建加权的方法间依赖图(ipdg);ipdg全面表示方法之间的调用关系以及语句之间的依赖关系,从而生成漏洞签名和补丁签名;具体是将方法引用图(mrg)和程序依赖图(pdg)结合起来,生成方法间依赖图,具体地,首先,对于调用图中的每一个方法调用点,将调用关系与依赖图中的节点连接,形成方法间的控制流和数据流表示;其次,为每个关键方法、关键语句及其依赖关系分配不同的权重;默认情况下,所有节点和边的初始权重为1,而关键方法和关键语句的权重会被赋予较高的值,以反映它们在漏洞检测中的重要性;通过这种方式,生成漏洞签名和补丁签名,分别用于标识漏洞和补丁特征。

13、(二)潜在受影响版本的签名生成

14、在识别出漏洞和补丁的签名后,接下来是生成潜在受影响版本的签名。通过对候选软件库版本的代码进行逆向分析,识别出与漏洞修复相关的关键方法和关键语句,并生成对应的加权的方法间依赖图。由于候选软件库版本的代码通常经过多次重构或改动,可能存在与原始漏洞修复代码不同的实现。因此,本专利技术使用代码克隆检测工具(如nicad)来识别出候选版本中的方法,与原始漏洞修复方法进行比对。具体地:

15、首先,本专利技术对候选软件库版本进行逆向编译,提取其源代码表示。采用javadecompiler[13]等工具,将候选库的字节码转换为源码,以便于进行后续的分析。

16、接着,本专利技术使用nicad[14]等代码克隆检测工具,分析候选版本中的方法是否本文档来自技高网...

【技术保护点】

1.一种基于加权方法间程序依赖图的漏洞影响软件库版本检测方法,其特征在于,通过生成加权的方法间依赖图(IPDG),对代码变化进行深度分析,识别出受漏洞影响的软件库版本;具体步骤如下:

2.根据权利要求1所述的漏洞影响软件库版本检测方法,其特征在于,步骤(一)中所述关键语句的识别,具体流程如下:

3.根据权利要求2所述的漏洞影响软件库版本检测方法,其特征在于,步骤(二)所述潜在受影响版本的签名生成,具体地:

【技术特征摘要】

1.一种基于加权方法间程序依赖图的漏洞影响软件库版本检测方法,其特征在于,通过生成加权的方法间依赖图(ipdg),对代码变化进行深度分析,识别出受漏洞影响的软件库版本;具体步骤如下:

2.根据权利要求1所...

【专利技术属性】
技术研发人员:陈碧欢吴苏晟王睿思曹毅恒黄凯锋彭鑫赵文耘
申请(专利权)人:复旦大学
类型:发明
国别省市:

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

1