一种软件漏洞生成和软件漏洞检测的方法、装置和系统与流程

摘要: 本发明涉及计算机,更具体地,涉及一种软件漏洞生成和软件漏洞检测的方法、装置和系统。背景技术:1、随着数字化转型的深入推进,软件系统已成为支撑经济和关键基础设施运...
一种软件漏洞生成和软件漏洞检测的方法、装置和系统与流程

本发明涉及计算机,更具体地,涉及一种软件漏洞生成和软件漏洞检测的方法、装置和系统。

背景技术:

1、随着数字化转型的深入推进,软件系统已成为支撑经济和关键基础设施运行的核心要素,软件安全漏洞的数量和复杂度也在持续攀升,且大量高危漏洞涉及内存安全、逻辑缺陷、权限绕过等深层次问题,因此需要对上述软件安全漏洞进行有效的检测。

2、现有技术中,采用基于预定义规则的静态分析方法、基于深度学习的漏洞检测方法、基于大语言模型的漏洞检测方法以及基于模糊测试的漏洞挖掘方法等多种方法对漏洞进行检测,但是上述检测方法均为单向静态的检测范式,无法对新型复杂的漏洞进行有效检测。

3、综上所述,如何提高漏洞检测的准确性,是目前需要解决的问题。

技术实现思路

1、有鉴于此,本发明实施例提供了一种软件漏洞生成和软件漏洞检测的方法、装置和系统,可以提高生成漏洞的质量,并提高漏洞检测的准确性。

2、第一方面,本发明实施例提供了一种软件漏洞生成的方法,所述方法包括:获取代码属性图,其中,所述代码属性图根据待处理的源代码文件构建的;根据所述代码属性图确定代码属性图表征,其中,所述代码属性图表征中包括至少一种表征向量;将所述代码属性图和所述代码属性图表征输入到漏洞编写者智能体,确定注入漏洞的代码区域,并根据预先设计的策略网络生成包含漏洞的目标代码;根据所述目标代码生成所述漏洞编写者智能体的奖励参数,更新所述漏洞编写者智能体,其中,更新后的所述漏洞编写者智能体用于生成包含高复杂度漏洞的目标代码。

3、可选的,所述获取代码属性图,具体包括:获取所述待处理的源代码文件;根据所述待处理的源代码文件生成抽象语法树、控制流图和程序依赖图;根据所述抽象语法树、所述控制流图和所述程序依赖图生成所述代码属性图。

4、可选的,所述根据所述代码属性图确定代码属性图表征,具体包括:根据所述代码属性图确定每个节点对应的节点级表征;根据所述节点级表征确定语句级表征;根据所述语句级表征确定函数级表征;根据所述函数级表征确定文件级表征;将所述节点级表征、所述语句级表征、所述函数级表征和所述文件级表征确定为所述代码属性图表征。

5、可选的,将所述代码属性图和所述代码属性图表征输入到漏洞编写者智能体,确定注入漏洞的代码区域,并根据预先设计的策略网络生成包含漏洞的目标代码,具体包括:将所述代码属性图和所述代码属性图表征输入到漏洞编写者智能体,根据图注意力机制确定注入漏洞的代码区域;将所述代码属性图表征输入到所述预先设计的策略网络,输出动作空间中至少一种漏洞注入操作的概率分布;根据所述概率分布在所述注入漏洞的代码区域执行漏洞注入操作,生成所述包含漏洞的目标代码。

6、可选的,所述根据所述目标代码生成所述漏洞编写者智能体的奖励参数,更新所述漏洞编写者智能体,具体包括:根据所述目标代码确定奖励函数对应的数值,其中,所述奖励函数为预先设计的,用于判断生成的所述目标代码的质量;根据所述奖励函数对应的数值计算所述漏洞编写者智能体的所述奖励参数;根据所述奖励参数更新所述漏洞编写者智能体。

7、可选的,所述方法还包括:将所述目标代码进行静态语义验证和动态沙箱验证,确定所述目标代码中的具有高保真的漏洞的目标代码;将所述具有高保真的漏洞的目标代码保存到训练集,其中,所述训练集用于漏洞检测者智能体的训练。

8、第二方面,本发明实施例提供了一种软件漏洞检测的方法,所述方法包括:取待检测代码,其中,所述待检测代码包括漏洞编写者智能体生成的目标代码、源代码文件和公开的通用漏洞与暴露真实漏洞代码;将所述待检测代码输入到漏洞检测者智能体,输出检测结果,其中,所述检测结果包括存在性判别、漏洞类型分类和位置定位;根据所述检测结果计算所述漏洞检测者智能体的损失函数;根据所述损失函数确定所述漏洞检测者智能体的损失参数,更新所述漏洞检测者智能体,其中,更新后的所述漏洞检测者智能体用于检测包含高复杂度漏洞的所述待检测代码。

9、可选的,所述根据所述检测结果计算所述漏洞检测者智能体的损失函数,具体包括:根据所述检测结果分别确定所述存在性判别对应的二元交叉熵损失、所述漏洞类型分类对应的多分类交叉熵损失和所述位置定位对应的序列标注损失;根据所述二元交叉熵损失、所述多分类交叉熵损失和所述序列标注损失确定所述损失函数。

10、第三方面,本发明实施例提供了一种软件漏洞生成的装置,所述装置包括:第一获取单元,用于获取代码属性图,其中,所述代码属性图根据待处理的源代码文件构建的;生成单元,用于根据所述代码属性图确定代码属性图表征,其中,所述代码属性图表征中包括至少一种表征向量;第一确定单元,用于将所述代码属性图和所述代码属性图表征输入到漏洞编写者智能体,确定注入漏洞的代码区域,并根据预先设计的策略网络生成包含漏洞的目标代码;第一更新单元,用于根据所述目标代码生成所述漏洞编写者智能体的奖励参数,更新所述漏洞编写者智能体,其中,更新后的所述漏洞编写者智能体用于生成包含高复杂度漏洞的目标代码。

11、可选的,所述第一获取单元具体用于:获取所述待处理的源代码文件;根据所述待处理的源代码文件生成抽象语法树、控制流图和程序依赖图;根据所述抽象语法树、所述控制流图和所述程序依赖图生成所述代码属性图。

12、可选的,所述生成单元具体用于: 根据所述代码属性图确定每个节点对应的节点级表征;根据所述节点级表征确定语句级表征;根据所述语句级表征确定函数级表征;根据所述函数级表征确定文件级表征;将所述节点级表征、所述语句级表征、所述函数级表征和所述文件级表征确定为所述代码属性图表征。

13、可选的,所述第一确定单元具体用于:将所述代码属性图和所述代码属性图表征输入到漏洞编写者智能体,根据图注意力机制确定注入漏洞的代码区域;将所述代码属性图表征输入到所述预先设计的策略网络,输出动作空间中至少一种漏洞注入操作的概率分布;根据所述概率分布在所述注入漏洞的代码区域执行漏洞注入操作,生成所述包含漏洞的目标代码。

14、可选的,所述第一更新单元具体用于:根据所述目标代码确定奖励函数对应的数值,其中,所述奖励函数为预先设计的,用于判断生成的所述目标代码的质量;根据所述奖励函数对应的数值计算所述漏洞编写者智能体的所述奖励参数;根据所述奖励参数更新所述漏洞编写者智能体。

15、可选的,所述装置还包括:保存单元,用于将所述目标代码进行静态语义验证和动态沙箱验证,确定所述目标代码中的具有高保真的漏洞的目标代码;将所述具有高保真的漏洞的目标代码保存到训练集,其中,所述训练集用于漏洞检测者智能体的训练。

16、第四方面,本发明实施例提供了一种软件漏洞检测的装置,所述装置包括:第二获取单元,用于获取待检测代码,其中,所述待检测代码包括漏洞编写者智能体生成的目标代码、源代码文件和公开的通用漏洞与暴露真实漏洞代码;检测单元,用于检测将所述待检测代码输入到漏洞检测者智能体,输出检测结果,其中,所述检测结果包括存在性判别、漏洞类型分类和位置定位;第二确定单元,用于根据所述检测结果计算所述漏洞检测者智能体的损失函数;第二更新单元,用于根据所述损失函数确定所述漏洞检测者智能体的损失参数,更新所述漏洞检测者智能体,其中,更新后的所述漏洞检测者智能体用于检测包含高复杂度漏洞的所述待检测代码。

17、可选的,所述第二确定单元具体用于,根据所述检测结果分别确定所述存在性判别对应的二元交叉熵损失、所述漏洞类型分类对应的多分类交叉熵损失和所述位置定位对应的序列标注损失;根据所述二元交叉熵损失、所述多分类交叉熵损失和所述序列标注损失确定所述损失函数。

18、第五方面,本发明实施例提供了一种软件漏洞生成和软件漏洞检测的系统,所述系统包括:漏洞编写者智能体和漏洞检测者智能体;其中,所述漏洞编写者智能体用于获取代码属性图,其中,所述代码属性图根据待处理的源代码文件构建的;根据所述代码属性图确定代码属性图表征,其中,所述代码属性图表征中包括至少一种表征向量;将所述代码属性图和所述代码属性图表征输入到漏洞编写者智能体,确定注入漏洞的代码区域,并根据预先设计的策略网络生成包含漏洞的目标代码;根据所述目标代码生成所述漏洞编写者智能体的奖励参数,更新所述漏洞编写者智能体,其中,更新后的所述漏洞编写者智能体用于生成包含高复杂度漏洞的目标代码;所述漏洞检测者智能体用于获取待检测代码,其中,所述待检测代码包括漏洞编写者智能体生成的目标代码、源代码文件和公开的通用漏洞与暴露真实漏洞代码;将所述待检测代码输入到漏洞检测者智能体,输出检测结果,其中,所述检测结果包括存在性判别、漏洞类型分类和位置定位;根据所述检测结果计算所述漏洞检测者智能体的损失函数;根据所述损失函数确定所述漏洞检测者智能体的损失参数,更新所述漏洞检测者智能体,其中,更新后的所述漏洞检测者智能体用于检测包含高复杂度漏洞的所述待检测代码。

19、可选的,根据所述漏洞检测者智能体的漏洞检测成功率和所述漏洞编写者智能体的绕过成功率,对所述漏洞编写者智能体生成的包含漏洞的目标代码的复杂度进行调节。

20、第六方面,本发明实施例提供了一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条计算机程序指令,其中,所述一条或多条计算机程序指令被所述处理器执行以实现如第一方面、第一方面任一种可能、第二方面或第二方面任一种可能中任一项所述的方法。

21、第七方面,本发明实施例提供了一种计算机可读存储介质,其上存储计算机程序指令,所述计算机程序指令在被处理器执行时实现如第一方面或第一方面任一种可能中任一项所述的方法。

22、本发明实施例中,通过设计一种漏洞编写者智能体和漏洞检测者智能体的系统进行漏洞生成和漏洞检测,其中,所述漏洞编写者智能体用于获取代码属性图;根据所述代码属性图确定代码属性图表征;将所述代码属性图和所述代码属性图表征输入到漏洞编写者智能体,确定注入漏洞的代码区域,并根据预先设计的策略网络生成包含漏洞的目标代码;根据所述目标代码生成所述漏洞编写者智能体的奖励参数,更新所述漏洞编写者智能体;所述漏洞检测者智能体用于获取待检测代码;将所述待检测代码输入到漏洞检测者智能体,输出检测结果;根据所述检测结果计算所述漏洞检测者智能体的损失函数;根据所述损失函数确定所述漏洞检测者智能体的损失参数,更新所述漏洞检测者智能体;通过上述方法,采用漏洞编写者智能体和漏洞检测者智能体根据自博弈的方式,不断提高生成的目标代码的质量,以及漏洞检测的准确性。