一种基于图神经网络和漏洞补丁关系的自动化漏洞挖掘技术
申请人信息
- 申请人:南京邮电大学
- 申请人地址:210023 江苏省南京市栖霞区文苑路9号
- 发明人: 南京邮电大学
专利详细信息
| 项目 | 内容 |
|---|---|
| 专利名称 | 一种基于图神经网络和漏洞补丁关系的自动化漏洞挖掘技术 |
| 专利类型 | 发明授权 |
| 申请号 | CN202311804982.5 |
| 申请日 | 2023/12/26 |
| 公告号 | CN117473510B |
| 公开日 | 2024/3/26 |
| IPC主分类号 | G06F21/57 |
| 权利人 | 南京邮电大学 |
| 发明人 | 陈丹伟; 付翼鼎; 张舰飞; 王太愚; 罗圣美 |
| 地址 | 江苏省南京市栖霞区文苑路9号 |
摘要文本
南京邮电大学取得“一种透气窗帘布”专利技术,本发明公开了一种基于图神经网络和漏洞补丁关系的自动化漏洞挖掘技术,采用自动化数据收集框架对Github的开源项目进行信息爬取,通过专家模型对提交的Commit进行判断是否与漏洞相关,利用代码的增删改对对应行的代码打上标记,再通过关键词提取完成初步筛选,获取五种CWE漏洞类型的训练样本和未分类样本组,提取漏洞特征和其与补丁关联特征后输入到Struc2Vec和DNN组成的模型框架中训练,完成模型初步训练后对未分类样本组进一步筛选,将筛选出来的样本加入训练集,剩余未分组等待下一轮训练完成,持续该流程直至不再有样本被划分到五种CWE漏洞中则样本完成分类,本发明能够显著表征更多维度的代码特征,更高效的学习漏洞代码特征。
专利主权项内容
1.一种基于图神经网络和漏洞补丁关系的自动化漏洞挖掘方法,其特征在于,包括如下步骤:步骤S1、采用自动化数据收集框架对Github的开源项目进行信息爬取;步骤S2、通过专家模型对提交的Commit进行判断是否与漏洞相关;步骤S3、利用代码的增删改对对应行的代码打上标记,再通过关键词提取完成初步筛选,获取五种CWE漏洞类型的训练样本和未分类样本组;步骤S4、提取漏洞特征和其与补丁关联特征后输入到Struc2Vec和DNN组成的深度学习模型框架中训练,完成模型初步训练后对未分类样本组进一步筛选:首先需要对样本进行处理,使用LLVM编译器将其编译为IR,使用各自漏洞对应的自定义插件来分析IR生成图ePDG,标记潜在的表现点m和根本原因点,表现点为漏洞触发代码,根本原因点为导致漏洞出现的代码,将其中对表现点和漏洞点有影响的条件语句也进行标记,在补丁样本中修补漏洞时使用的if语句,将漏洞和补丁的关系添加进模型学习;iePDG是一个多重图,定义为G : =(V, E, q, r),其中V是一组节点,E是一组边,q和r分别是节点和边到类别和属性的映射;其中q是将V中的节点映射到指令类别的映射,定义为q : V→{{c, a} : c∈C, a∈A},C是LLVM指令API中所有类型的指令的集合;A是指令v∈V的类型c的所有可能属性的集合,包括算术运算中的静态值;调用指令的函数名称以及根本原因和表现标签;r是将E中的边映射到一对节点的映射,定义为:r : E→{{(x, y), d, b} : x, y∈V, d∈D, b∈A},其中D是边缘类型的集合,A是流类型d的流属性的集合;ccdd再获取ePDG后开始使用BFS进行程序切片,从表现点的位置向后切割出一个指定深度的子图G,对子图的每个节点添加特征向量,边添加显示特征,提取特征后生成了与图G相同结构的G',之后将该图传递给Structure2Vector模型,通过两个节点之间的关联来预测表现点是否为漏洞点,最后将S2V模型输出的向量输入DNN二类分类器,输出一个大小为0到1的概率y来判断该节点的是否为漏洞表现点;iii所述深度学习模型包括两个端到端训练的组件:图嵌入网络M和深度神经网络分类器M,图嵌入网络M使用神经网络通过图的结构传递消息来生成节点嵌入,M的参数被调整以适应M的分类学习目标,即M(M(G′))=y,其中y是m是漏洞的概率;GCGGCCGiiM(G′)的执行包括从每个节点v∈V到其邻居v∈Γ(v)的多次消息传递迭代,其中来自节点v的消息采用矢量e的形式,在每次迭代开始时,使用神经网络根据其邻居的最后消息以及存储在该节点和关联边的特征向量预测第i个节点的下一个广播消息,节点特征向量x∈X,关联边特征向量x∈X,其中X为节点特征矩阵,X为边特征矩阵来,M(G′)的执行过程被建模为:GiijiiiviveijeveGi其中Wv和We是训练过程中学习参数矩阵,Γ(i)表示伽玛函数,σ是深度神经网络,单次的迭代以矩阵形式计算为:E=ReLU(WX+CWX+σ(AE)),E是包含当前节点嵌入的矩阵,经过niter次迭代,其中niter为超参数,用户提取指定;将E中的节点嵌入平均在一起,形成一个单一的嵌入向量,然后通过批量归一化层传递给M,tvveet-1C使用ReLU激活来帮助建模图中的复杂关系,函数定义为ReLU(x)=max(0, x),其中x是输入值,如果x大于等于零,则ReLU(x)等于x,否则等于零,为训练M和M模型的参数,优化下列的学习目标函数 : Gc其中L是标准的交叉熵损失函数,y代表真实标签;CE步骤S5、将筛选出来的样本加入训练集,剩余未分组等待下一轮训练完成,持续进行重复筛选样本加入训练集、训练模型、再次筛选的过程,直至不再有样本被划分到五种CWE漏洞中则样本完成分类。