一种软件漏洞基准构建方法、装置、设备及存储介质与流程

摘要: 本公开涉及软件漏洞检测,尤其涉及一种软件漏洞基准构建方法、装置、设备及存储介质。背景技术:1、目前,构建软件漏洞基准主要依赖人工逐条审核提交记录和基于固定预设安...
一种软件漏洞基准构建方法、装置、设备及存储介质与流程

本公开涉及软件漏洞检测,尤其涉及一种软件漏洞基准构建方法、装置、设备及存储介质。

背景技术:

1、目前,构建软件漏洞基准主要依赖人工逐条审核提交记录和基于固定预设安全关键词集合对提交记录进行关键词匹配筛选,再结合人工复核构建漏洞样本集;但人工智能基础设施涉及多种异构代码仓库,不同项目代码的提交规范差异较大,固定关键词集合难以覆盖多样化的代码,容易产生大量漏报和误报;其次,人工逐条审查提交记录的效率低下,难以规模化构建漏洞基准数据集。最后,漏洞事件与具体代码样本之间缺乏有效的关联机制,导致最终输出的样本难以追溯到具体的漏洞事件和修复代码提交。

技术实现思路

1、为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种软件漏洞基准构建方法、装置、设备及存储介质。

2、本公开示例性实施例提供了一种软件漏洞基准构建方法,所述方法包括:

3、获取人工智能基础设施代码仓库的提交记录;

4、对所述提交记录进行安全语义特征挖掘,生成安全语义特征集合,计算各提交记录相对于所述安全语义特征集合的安全相关性评分,生成候选队列;

5、对所述候选队列中的提交记录进行代码审查模型预筛和一致性复核,生成漏洞事件记录;

6、基于所述漏洞事件记录,通过定位修复前版本和修复后版本,获取版本之间的代码差异,基于所述代码差异,从所述修复前版本与所述修复后版本中确定修复前后代码;

7、对所述修复前后代码进行样本对齐,生成补丁样本对;

8、对所述漏洞事件记录和所述补丁样本对进行质量校验,输出软件漏洞基准。

9、在一些示例性实施例中,所述代码审查模型包括第一代码审查模型和第二代码审查模型;

10、所述代码审查模型预筛包括第一代码审查模型初审和第二代码审查模型复核;

11、所述对所述候选队列中的提交记录进行代码审查模型预筛和一致性复核,生成漏洞事件记录,包括:

12、基于本地代码仓库镜像,获取所述候选队列中的提交记录的真实代码差异;

13、将所述真实代码差异输入所述第一代码审查模型中,进行第一代码审查模型初审,输出第一判断结果,所述第一判断结果包括模型确定为漏洞、待判断和模型确定为非漏洞;

14、若所述第一判断结果为模型确定为漏洞或待判断,则将对应真实代码差异输入所述第二代码审查模型中进行第二代码审查模型复核,输出第二判断结果,所述第二判断结果包括模型确定为漏洞、待判断和模型确定为非漏洞;

15、若所述第一判断结果为模型确定为非漏洞,则将对应提交记录剔除;

16、基于所述第一判断结果和所述第二判断结果,生成模型预筛结果,所述模型预筛结果包括模型确定漏洞、模型待判断、空白或模型拒绝;

17、若所述模型预筛结果为模型确定漏洞,则将对应提交记录作为高置信漏洞候选,基于预设的判断参数对所述高置信漏洞候选进行一致性复核,得到第一复核结果,所述判断参数包括标题、提交信息、源码文件、真实代码差异、代码审查模型输出的候选通用缺陷枚举、漏洞类型和判断理由;

18、若所述第一复核结果为确定漏洞,则生成漏洞事件记录并分配漏洞编号和漏洞类型,否则,跳过对应提交记录或留空;

19、若所述模型预筛结果为模型待判断,则基于代码审查模型输出的候选通用缺陷枚举、漏洞类型、判断理由和分歧内容,进行一致性复核,得到第二复核结果;

20、若所述第二复核结果为确定漏洞,则生成漏洞事件记录并分配漏洞编号和漏洞类型,否则,跳过对应提交记录或留空;

21、若所述模型预筛结果为空白或模型拒绝,则不生成漏洞事件记录。

22、在一些示例性实施例中,所述基于所述第一判断结果和所述第二判断结果,生成模型预筛结果,所述模型预筛结果包括模型确定漏洞、模型待判断、空白或模型拒绝,包括:

23、若第一代码审查模型输出结果为模型确定为非漏洞,则模型预筛结果为空白或模型拒绝;

24、若第一代码审查模型输出结果为模型确定为漏洞,第二代码审查模型输出结果为模型确定为漏洞,且两个模型输出的候选通用缺陷枚举一致,则模型预筛结果为模型确定漏洞;

25、若第一代码审查模型输出结果为模型确定为漏洞,第二代码审查模型输出结果为待判断或模型确定为非漏洞、或两个模型输出的候选通用缺陷枚举不一致,则模型预筛结果为模型待判断;

26、若第一代码审查模型输出结果为待判断,第二代码审查模型输出结果为模型确定为非漏洞,则模型预筛结果为空白或模型拒绝;

27、若第一代码审查模型输出结果为待判断,第二代码审查模型输出结果为模型确定为漏洞或待判断,则模型预筛结果为模型待判断。

28、在一些示例性实施例中,所述修复前后代码包括修复前代码和修复后代码;

29、所述基于所述漏洞事件记录,通过定位修复前版本和修复后版本,获取版本之间的代码差异,基于所述代码差异,从所述修复前版本与所述修复后版本中确定修复前后代码,包括:

30、基于所述漏洞事件记录,通过预设的代码定位策略,定位修复前版本和修复后版本,所述代码定位策略包括语法树解析、基于抽象语法树的函数边界识别、基于语言特定规则的函数签名匹配、基于差异块上下文的函数边界扩展;

31、获取所述修复前版本和所述修复后版本之间的被修改文件、修改行号、差异块、变更类型和文件扩展名,并过滤非源代码文件,保留源代码文件;

32、基于所述源代码文件、所述修改行号和所述差异块,确定受影响函数及其位置信息;

33、基于所述位置信息,分别从所述修复前版本和所述修复后版本中抽取所述受影响函数的代码,作为修复前代码和修复后代码。

34、在一些示例性实施例中,对所述修复前后代码进行样本对齐,生成补丁样本对,包括:

35、基于代码名、代码签名、文件路径、调用上下文和代码相似度,对所述修复前代码和所述修复后代码进行样本对齐;

36、基于样本对齐结果,关联所述漏洞事件记录的内部漏洞编号,生成补丁样本对,所述补丁样本对包括内部漏洞编号、项目组、仓库名、修复后提交、修复前提交、源码文件路径、修复前函数代码、修复后函数代码、函数名、函数签名、变更行号和确认漏洞标签。

37、在一些示例性实施例中,所述提交记录包括提交标题、提交信息、文件路径、代码差异、函数名、类名、方法名、变量名、导入依赖、调用接口和配置项名称;

38、所述安全语义特征集合包括强安全语义特征集合和弱安全语义特征集合;

39、所述对所述提交记录进行安全语义特征挖掘,生成安全语义特征集合,包括:

40、对所述提交记录进行归一化处理,获取候选特征单元;

41、对所述候选特征单元进行安全语义特征挖掘,计算安全语义特征评分,所述安全语义特征评分包括语义关联分值、修复意图分值、代码证据分值、统计区分分值和稳定性分值;

42、对所述安全语义特征评分进行加权处理,获取所述候选特征单元的综合分值,并基于所述综合分值进行排序;

43、响应于所述稳定性分值不低于预设分值阈值且所述排序处于预设的第一区间,则生成强安全语义特征集合;

44、响应于所述稳定性分值不低于预设分值阈值且所述排序处于预设的第二区间,则生成弱安全语义特征集合。

45、在一些示例性实施例中,所述计算各提交记录相对于所述安全语义特征集合的安全相关性评分,生成候选队列,包括:

46、基于所述安全语义特征集合,计算各提交记录的安全相关性评分,所述安全相关性评分包括语义安全特征命中分、代码证据位置权重、修复意图权重、人工智能基础设施风险权重和噪声惩罚项;

47、基于所述安全相关性评分,将所述提交记录划分为强安全类别、弱安全类别和拒绝类别;

48、基于所述安全相关性评分从大到小的顺序,对所述强安全类别和所述弱安全类别对应的提交记录进行排序,生成候选队列,所述候选队列包括全量候选队列、模型预筛和复核队列。

49、本公开示例性实施例还提供了一种软件漏洞基准构建装置,所述装置包括:

50、获取模块,用于获取人工智能基础设施代码仓库的提交记录;

51、第一生成模块,用于对所述提交记录进行安全语义特征挖掘,生成安全语义特征集合,计算各提交记录相对于所述安全语义特征集合的安全相关性评分,生成候选队列;

52、第二生成模块,用于对所述候选队列中的提交记录进行代码审查模型预筛和一致性复核,生成漏洞事件记录;

53、确定模块,用于基于所述漏洞事件记录,通过定位修复前版本和修复后版本,获取版本之间的代码差异,基于所述代码差异,从所述修复前版本与所述修复后版本中确定修复前后代码;

54、第三生成模块,用于对所述修复前后代码进行样本对齐,生成补丁样本对;

55、输出模块,用于对所述漏洞事件记录和所述补丁样本对进行质量校验,输出软件漏洞基准。

56、在一些示例性实施例中,所述提交记录包括提交标题、提交信息、文件路径、代码差异、函数名、类名、方法名、变量名、导入依赖、调用接口和配置项名称;

57、所述安全语义特征集合包括强安全语义特征集合和弱安全语义特征集合;

58、所述第一生成模块,具体用于:

59、对所述提交记录进行归一化处理,获取候选特征单元;

60、对所述候选特征单元进行安全语义特征挖掘,计算安全语义特征评分,所述安全语义特征评分包括语义关联分值、修复意图分值、代码证据分值、统计区分分值和稳定性分值;

61、对所述安全语义特征评分进行加权处理,获取所述候选特征单元的综合分值,并基于所述综合分值进行排序;

62、响应于所述稳定性分值不低于预设分值阈值且所述排序处于预设的第一区间,则生成强安全语义特征集合;

63、响应于所述稳定性分值不低于预设分值阈值且所述排序处于预设的第二区间,则生成弱安全语义特征集合。

64、在一些示例性实施例中,所述第一生成模块,具体用于:

65、基于所述安全语义特征集合,计算各提交记录的安全相关性评分,所述安全相关性评分包括语义安全特征命中分、代码证据位置权重、修复意图权重、人工智能基础设施风险权重和噪声惩罚项;

66、基于所述安全相关性评分,将所述提交记录划分为强安全类别、弱安全类别和拒绝类别;

67、基于所述安全相关性评分从大到小的顺序,对所述强安全类别和所述弱安全类别对应的提交记录进行排序,生成候选队列,所述候选队列包括全量候选队列、模型预筛和复核队列。

68、在一些示例性实施例中,所述代码审查模型包括第一代码审查模型和第二代码审查模型;

69、所述代码审查模型预筛包括第一代码审查模型初审和第二代码审查模型复核;

70、所述第二生成模块,具体用于:

71、基于本地代码仓库镜像,获取所述候选队列中的提交记录的真实代码差异;

72、将所述真实代码差异输入所述第一代码审查模型中,进行第一代码审查模型初审,输出第一判断结果,所述第一判断结果包括模型确定为漏洞、待判断和模型确定为非漏洞;

73、若所述第一判断结果为模型确定为漏洞或待判断,则将对应真实代码差异输入所述第二代码审查模型中进行第二代码审查模型复核,输出第二判断结果,所述第二判断结果包括模型确定为漏洞、待判断和模型确定为非漏洞;

74、若所述第一判断结果为模型确定为非漏洞,则将对应提交记录剔除;

75、基于所述第一判断结果和所述第二判断结果,生成模型预筛结果,所述模型预筛结果包括模型确定漏洞、模型待判断、空白或模型拒绝;

76、若所述模型预筛结果为模型确定漏洞,则将对应提交记录作为高置信漏洞候选,基于预设的判断参数对所述高置信漏洞候选进行一致性复核,得到第一复核结果,所述判断参数包括标题、提交信息、源码文件、真实代码差异、代码审查模型输出的候选通用缺陷枚举、漏洞类型和判断理由;

77、若所述第一复核结果为确定漏洞,则生成漏洞事件记录并分配漏洞编号和漏洞类型,否则,跳过对应提交记录或留空;

78、若所述模型预筛结果为模型待判断,则基于代码审查模型输出的候选通用缺陷枚举、漏洞类型、判断理由和分歧内容,进行一致性复核,得到第二复核结果;

79、若所述第二复核结果为确定漏洞,则生成漏洞事件记录并分配漏洞编号和漏洞类型,否则,跳过对应提交记录或留空;

80、若所述模型预筛结果为空白或模型拒绝,则不生成漏洞事件记录。

81、在一些示例性实施例中,所述第二生成模块,包括:

82、若第一代码审查模型输出结果为模型确定为非漏洞,则模型预筛结果为空白或模型拒绝;

83、若第一代码审查模型输出结果为模型确定为漏洞,第二代码审查模型输出结果为模型确定为漏洞,且两个模型输出的候选通用缺陷枚举一致,则模型预筛结果为模型确定漏洞;

84、若第一代码审查模型输出结果为模型确定为漏洞,第二代码审查模型输出结果为待判断或模型确定为非漏洞、或两个模型输出的候选通用缺陷枚举不一致,则模型预筛结果为模型待判断;

85、若第一代码审查模型输出结果为待判断,第二代码审查模型输出结果为模型确定为非漏洞,则模型预筛结果为空白或模型拒绝;

86、若第一代码审查模型输出结果为待判断,第二代码审查模型输出结果为模型确定为漏洞或待判断,则模型预筛结果为模型待判断。

87、在一些示例性实施例中,所述修复前后代码包括修复前代码和修复后代码;

88、所述确定模块,具体用于:

89、基于所述漏洞事件记录,通过预设的代码定位策略,定位修复前版本和修复后版本,所述代码定位策略包括语法树解析、基于抽象语法树的函数边界识别、基于语言特定规则的函数签名匹配、基于差异块上下文的函数边界扩展;

90、获取所述修复前版本和所述修复后版本之间的被修改文件、修改行号、差异块、变更类型和文件扩展名,并过滤非源代码文件,保留源代码文件;

91、基于所述源代码文件、所述修改行号和所述差异块,确定受影响函数及其位置信息;

92、基于所述位置信息,分别从所述修复前版本和所述修复后版本中抽取所述受影响函数的代码,作为修复前代码和修复后代码。

93、在一些示例性实施例中,所述第三生成模块,具体用于:

94、基于代码名、代码签名、文件路径、调用上下文和代码相似度,对所述修复前代码和所述修复后代码进行样本对齐;

95、基于样本对齐结果,关联所述漏洞事件记录的内部漏洞编号,生成补丁样本对,所述补丁样本对包括内部漏洞编号、项目组、仓库名、修复后提交、修复前提交、源码文件路径、修复前函数代码、修复后函数代码、函数名、函数签名、变更行号和确认漏洞标签。

96、本公开示例性实施例还提供了一种电子设备,所述电子设备包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现如本公开示例性实施例提供的软件漏洞基准构建方法。

97、本公开示例性实施例还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行如本公开示例性实施例提供的软件漏洞基准构建方法。

98、本公开示例性实施例提供的技术方案与现有技术相比具有如下优点:

99、本公开示例性实施例提供的软件漏洞基准构建方法,通过获取人工智能基础设施代码仓库的提交记录;对所述提交记录进行安全语义特征挖掘,生成安全语义特征集合,计算各提交记录相对于所述安全语义特征集合的安全相关性评分,生成候选队列;对所述候选队列中的提交记录进行代码审查模型预筛和一致性复核,生成漏洞事件记录;基于所述漏洞事件记录,通过定位修复前版本和修复后版本,获取版本之间的代码差异,基于所述代码差异,从所述修复前版本与所述修复后版本中确定修复前后代码;对所述修复前后代码进行样本对齐,生成补丁样本对;对所述漏洞事件记录和所述补丁样本对进行质量校验,输出软件漏洞基准;有效实现了软件漏洞基准的构建。