CN117473510B - 一种基于图神经网络和漏洞补丁关系的自动化漏洞挖掘技术 - Google Patents
一种基于图神经网络和漏洞补丁关系的自动化漏洞挖掘技术 Download PDFInfo
- Publication number
- CN117473510B CN117473510B CN202311804982.5A CN202311804982A CN117473510B CN 117473510 B CN117473510 B CN 117473510B CN 202311804982 A CN202311804982 A CN 202311804982A CN 117473510 B CN117473510 B CN 117473510B
- Authority
- CN
- China
- Prior art keywords
- vulnerability
- model
- training
- samples
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 21
- 238000005516 engineering process Methods 0.000 title abstract description 7
- 238000012549 training Methods 0.000 claims abstract description 35
- 238000012216 screening Methods 0.000 claims abstract description 8
- 238000000605 extraction Methods 0.000 claims abstract description 7
- 238000013480 data collection Methods 0.000 claims abstract description 5
- 230000009193 crawling Effects 0.000 claims abstract description 3
- 239000000284 extract Substances 0.000 claims abstract description 3
- 230000006870 function Effects 0.000 claims description 22
- 239000013598 vector Substances 0.000 claims description 22
- 239000011159 matrix material Substances 0.000 claims description 14
- 238000000034 method Methods 0.000 claims description 14
- 238000013507 mapping Methods 0.000 claims description 6
- 230000003068 static effect Effects 0.000 claims description 6
- 238000013136 deep learning model Methods 0.000 claims description 5
- 230000004913 activation Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 claims description 4
- VWDWKYIASSYTQR-UHFFFAOYSA-N sodium nitrate Chemical compound [Na+].[O-][N+]([O-])=O VWDWKYIASSYTQR-UHFFFAOYSA-N 0.000 claims description 3
- 238000012935 Averaging Methods 0.000 claims description 2
- 241000965478 Darksidea epsilon Species 0.000 claims description 2
- 230000008859 change Effects 0.000 claims description 2
- 238000001914 filtration Methods 0.000 claims description 2
- 238000007477 logistic regression Methods 0.000 claims description 2
- 238000010606 normalization Methods 0.000 claims description 2
- 238000007637 random forest analysis Methods 0.000 claims description 2
- 238000012706 support-vector machine Methods 0.000 claims description 2
- 239000013256 coordination polymer Substances 0.000 claims 1
- 238000005065 mining Methods 0.000 abstract description 2
- 238000010924 continuous production Methods 0.000 abstract 1
- 238000001514 detection method Methods 0.000 description 6
- 238000013527 convolutional neural network Methods 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000000306 recurrent effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005206 flow analysis Methods 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
- 238000012038 vulnerability analysis Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/09—Supervised learning
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computational Linguistics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Pure & Applied Mathematics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Evolutionary Biology (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于图神经网络和漏洞补丁关系的自动化漏洞挖掘技术,采用自动化数据收集框架对Github的开源项目进行信息爬取,通过专家模型对提交的Commit进行判断是否与漏洞相关,利用代码的增删改对对应行的代码打上标记,再通过关键词提取完成初步筛选,获取五种CWE漏洞类型的训练样本和未分类样本组,提取漏洞特征和其与补丁关联特征后输入到Struc2Vec和DNN组成的模型框架中训练,完成模型初步训练后对未分类样本组进一步筛选,将筛选出来的样本加入训练集,剩余未分组等待下一轮训练完成,持续该流程直至不再有样本被划分到五种CWE漏洞中则样本完成分类,本发明能够显著表征更多维度的代码特征,更高效的学习漏洞代码特征。
Description
技术领域
本发明涉及对静态程序的自动化漏洞分析领域,具体涉及一种基于图神经网络和漏洞补丁关系的自动化漏洞挖掘技术。
背景技术
随着信息和自动化时代的到来,各类电子产品已经完全融入了人们的日常生活中。软件作为这些电子产品重要的一部分, 其安全问题也越来越受到广泛关注,由于软件设计不严谨和软件开发人员的水平受限等因素都可能导致软件含有漏洞(例如缓冲区溢出、整型溢出、格式化字符串攻击等)。这类漏洞严重影响***安全,然而, 由于传统的缺陷检测需要专业人员花费较多的人力,人们对自动化漏洞检测的需求日益增长。
目前深度学***铺的一维序列,然后使用深度学习模型,一般是卷积神经网络(Convolutional Neural Network,CNN)或循环神经网络(Recurrent Neural Network,RNN),来学习代码的表示。然而,程序中包含复杂的上下文关系,将程序表示成一维序列很难学习程序中的结构和上下文信息。
发明内容
为解决上述现有技术的不足,本发明提供了一种基于图神经网络和漏洞补丁关系的自动化漏洞挖掘技术。
为实现上述发明目的,本发明采取如下技术效果:
一种基于图神经网络和漏洞补丁关系的自动化漏洞挖掘技术,包括如下步骤:
步骤S1、采用自动化数据收集框架对Github的开源项目进行信息爬取;
步骤S2、通过专家模型对提交的Commit进行判断是否与漏洞相关;
步骤S3、利用代码的增删改对对应行的代码打上标记,再通过关键词提取完成初步筛选,获取五种CWE漏洞类型的训练样本和未分类样本组;
步骤S4、提取漏洞特征和其与补丁关联特征后输入到Struc2Vec和DNN组成的模型框架中训练,完成模型初步训练后对未分类样本组进一步筛选;
步骤S5、将筛选出来的样本加入训练集,剩余未分组等待下一轮训练完成,持续进行重复筛选样本加入训练集、训练模型、再次筛选的过程,直至不再有样本被划分到五种CWE漏洞中则样本完成分类。
进一步的,所述专家模型由五个分类器组成:支持向量机、随机森林、k最近邻、逻辑回归和梯度提升;将提交信息和代码更改中提取的特征作为模型的输入,应用CP方法来评估个体分类器对给定输入的可信度,过滤掉可信度小于0.7的高不确定性预测;使用多数投票方案来汇总剩余的预测结果以生成最终结果。
进一步的,本发明将漏洞和补丁作为深度学习中的阳性样本和阴性样本,同时提取二者的关系信息;
首先需要对样本进行处理,使用LLVM编译器将其编译为IR,使用各自漏洞对应的自定义插件来分析IR生成图ePDG,标记潜在的表现点mi和根本原因点,表现点为漏洞触发代码,根本原因点为导致漏洞出现的代码,将其中对表现点和漏洞点有影响的条件语句也进行标记,在补丁样本中修补漏洞时使用的if语句,将漏洞和补丁的关系添加进模型学习;
ePDG是一个多重图,定义为G:= (V,E,q,r),其中V是一组节点,E是一组边,q和r分别是节点和边到类别和属性的映射;
其中q是将V中的节点映射到指令类别的映射,定义为q:V → {{c,a}: c∈C,a∈Ac},C是LLVM指令API中所有类型的指令的集合;Ac是指令v∈V的类型c的所有属性的集合,包括算术运算中的静态值;调用指令的函数名称以及根本原因和表现标签;r是将E中的边映射到一对节点的映射,定义为:r:E → {{(x,y),d,b}: x,y∈V ,d∈D,b∈Ad},其中D是边缘类型的集合,Ad是流类型d的流属性的集合;
再获取ePDG后开始使用BFS进行程序切片,从表现点的位置向后切割出一个指定深度的子图Gi,对子图的每个节点添加特征向量,边添加显示特征,提取特征后生成了与图Gi相同结构的Gi',之后将该图传递给Structure2Vector模型,通过两个节点之间的关联来预测表现点是否为漏洞点,最后将S2V模型输出的向量输入DNN二类分类器,输出一个大小为0到1的概率y来判断该节点的是否为漏洞表现点。
进一步的,所述深度学习模型包括两个端到端训练的组件:图嵌入网络MG和深度神经网络分类器MC,图嵌入网络MG使用神经网络通过图的结构传递消息来生成节点嵌入,MG的参数被调整以适应MC的分类学习目标,即MC(MG(G′i))=y,其中y是mi是漏洞的概率;
MG(G′i)的执行包括从每个节点vi ∈ V到其邻居vj ∈ Γ(vi)的多次消息传递迭代,其中来自节点vi的消息采用矢量ei的形式,在每次迭代开始时,使用神经网络根据其邻居的最后消息以及存储在该节点和关联边的特征向量预测第i个节点的下一个广播消息,所述节点特征向量xvi ∈Xv,关联边特征向量xei j ∈Xe,其中Xv为节点特征矩阵, Xe为边特征矩阵,MG(G′i)的执行过程被建模为:
,
其中Wv和We是训练过程中学***均在一起,形成一个单一的嵌入向量,然后通过批量归一化层传递给MC,
使用ReLU激活来帮助建模图中的复杂关系,函数定义为ReLU(x) = max(0, x),其中 x 是输入值,如果 x 大于等于零,则 ReLU(x) 等于 x,否则等于零,
为训练MG和Mc模型的参数,优化下列的学习目标函数:
,
其中LCE是标准的交叉熵损失函数,y代表真实标签。
本发明相比现有技术,具有如下技术效果:
本发明能够显著表征更多维度的代码特征,更高效的学习漏洞代码特征。
附图说明
图1是本发明的漏洞检测模型;
图2是本发明的样本收集流程图。
具体实施方式
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。
一种基于图神经网络和漏洞补丁关系的自动化漏洞挖掘技术中数据收集分为三个步骤:1.1训练数据生成;1.2模型训练;1.3使用模型。
1.1训练数据生成
首先从Github上托管的开源项目中提交的日志和补丁中提取信息。使用一套正则表达式(RE)规则来选择可能与漏洞相关的提交,收集后手动确认该漏洞是否已在CVE库中发布,如果是,则使用 CVE 编号建立与公共 CVE 描述的链接。否则手动提取包含漏洞的代码段、提交日志和问题报告,并将通过RE的代码修订标记为漏洞相关或无关,该手动检查只需一次既可用于训练模型,之后就可以用模型来收集数据。
构建良好的机器学习模型的一个关键方面是找到正确的特征来表征输入。对于该模型提取的特征为:(1)#stars;(2)#commits;(3)#releases;(4)#contributors;(5)contribution rate;(6)#branches,以及提交的信息和更改的代码。使用预先训练好的word2vec网络将提交消息和修改后的代码语句映射到嵌入向量中。生成的嵌入与项目质量和活动的特征值放在一起,形成聚合特征向量。
1.2模型训练
再向专家模型提供训练数据后它就会执行其内部监督学习算法,为了优化模型,使用CP(Conformal Prediction)来捕捉输入x的类标签y(即与漏洞相关或不相关)的“奇异性”(称为非一致性度量)。非一致性分数使用PyCP提供的函数A(x,y,h)进行估计。计算统计置信度,将10%的模型训练数据作为校准集(不用于训练专家模型),离线计算出校准分数a1 yp,a2 yp,···an yp,通过对校准集中的每个实例应用函数A,并使用模型h给出的每个类标签y的概率(yp)。对于新输入的xn+1,使用函数A计算出一致性分数an+1 yp后,计算出xn+1的p值pv:
,
如果p值很小接近其下界1/(n+1),则预测属于异常值,很大接近1则是非常一致,只考虑p值大于的预测,其中c根据经验可设为0.3。
1.3使用模型
离线训练好模型后,可使用Github API自动爬取并获取排名靠前的项目的代码提交,应用RE规则来选择可能与漏洞相关的代码提交,使用特征提取器来处理收集到的代码提交日志、补丁和项目相关信息,以形成特征向量,之后每个专家都会预测代码修订是否与漏洞修复相关,保留不合格分数大于置信水平的输出,最后根据剩余输出的简单多数投票达成最终共识。如果判断为相关,则与旧版本比较,将旧版本中删除的语句标记为漏电相关,新增的语句中去掉在删除语句中重复出现的语句后,标记为补丁相关。之后模型的使用需要对每一类漏洞都进行单独的训练,所以除了行级标记,还需要进行分类处理,首先提取日志描述的关键词,如果确切提出了CWE号或者漏洞类型则直接进行分类,得到了整数溢出(CWE-190)、堆栈和堆溢出(CWE-121、122)、使用后释放(CWE-416)和双重释放(CWE-415)这五类漏洞,以及未分类的“其他”样本,该类别在完成漏洞检测模型训练完成后再进行循环分类处理。
基于图的深度学习模型框架主要分为四步:2.1ePDG 生成,2.2采样,2.3特征提取,2.4模型训练和执行,可结合图1进行理解。为了实现分类功能,本发明设计对于每类漏洞都单独训练出各自的模型,这样准确高,也达到了分类的目的。
2.1 ePDG生成
首先使用LLVM将源代码S编译为LLVM IR,再利用LLVM中间优化器Opt自定义插件将IR转化为图ePDG, Opt插件会调用LLVM的内置控制流和数据流分析,然后对目标代码进行逐条指令的扫描。对于每条指令Ij,创建一个相应的节点vj ∈V和映射qj ∈q:vj。再使用LLVM的API提取有关Ij的语义信息以填充qj的条目{cj,aj}(例如,操作、指令是否为条件分支等)。除了直接从LLVM的API获取的语义信息外,这些属性还包括调试信息(例如,源文件和行号),指示潜在根本原因和表现点标签,对这两点有影响的条件语句标签,以及用于模型训练的实际根本原因和表现点的标签,补丁样本中存在的实际补丁语句标签。
接下来进行第二次逐指令遍历,生成G中的控制流和数据流边。这是使用LLVM的API来识别指令的前驱/后继和定义/使用的值来确定的。对于给定指令的每个前驱和后继,生成一个相应的带有适当类型和属性的边ej,k∈E。控制流边被分配一个void数据类型,数据流边被分配一个与源节点(Ij)中值定义对应的数据类型。在完成对来自S的IR指令的两次遍历后,ePDG生成完成后以JSON格式输出G,以供下一步采样使用。
2.2采样
为了从G中提取样本,首先要识别给定CWE的表现节点mi,具体来说,对于整数溢出(CWE-190)是传递整数参数的任何函数调用;对于堆栈和堆溢出(CWE-121、122)分别是存储指令到局部内存或动态分配内存;对于使用后释放(CWE-416)是对动态分配内存的任何内存访问;对于双重释放(CWE-415),是对内存管理器的free函数的任何调用。
确定每一个潜在表现点mi后,使用广度优先搜索(BFS)从mi开始向后遍历G,直到预定义的深度ndepth为止(ndepth是用户定义的深度)生成子图Gi,由于mi是Gi的终止节点,所以相关的表现点将锚定在静态位置,有利于有效的消息传递和预测的本地化,通过获取节点的元数据q(mi)。
对于从G中提取的每个Gi,根据表现点mi在Gi中的基本事实,分配一个标签y ={negative,positive}。正向标签(易受攻击的)分配给源代码中的行,然后使用调试符号映射到IR。如果一行源代码包含多个潜在表现点,将标签应用于语句中的最后一个相关IR指令。相反,任何未标记为易受攻击的mi在G中都会收到一个负标签。
特别说明,阳性样本使用的是漏洞代码,阴性样本使用的是补丁代码,二者因为是成对收集的数据,所以样本比例为1:1。
2.3 特征提取
这部分需要对生成的子图Gi提取节点特征和边特征,生成结构相同但是带有特征向量的Gi '。在节点上捕捉执行的操作,如静态值、操作类型、基本功能以及指令是否是 if子句的一部分等特征。为了学习到原因点和表现点之间的关系,也就是使用该S2V模型检测漏洞的核心点,将二者之间的距离也作为特征提取,而原因点和表现点方式相同,采用启发式方法,具体来说,整数算术操作是整数溢出的潜在根本原因,堆栈和堆写入分别是堆栈和堆溢出的潜在根本原因,以及调用内存释放函数是使用后释放和双重释放的潜在根本原因。作为本发明的创新点,漏洞和补丁之间的关系也需要提取特征来进行学习,这里提取对这两点发挥影响的条件语句数量以及距离这两点最近的条件语句距离。除了距离关系外,还需指出该节点本身是否为潜在的根本原因或表现点。
在边特征上需要指示边的类型(控制流或数据依赖性)并捕获数据依赖性的数据类型,以便模型可以捕获哪种数据到哪里。通过了解静态值的流、外部输入(来自某些函数)及其数据类型,模型有足够的信息来预见(模拟)数据对程序的影响。
属性图Gi '表现为(Xv,Xe,A,C): 节点特征矩阵 Xv、边特征矩阵 Xe、其邻接矩阵 A及其关联矩阵 C。
2.4 模型训练和执行
模型通过图神经网络的嵌入层(embedding layer)和分类器层(classifierlayer)来将输入图中的节点映射到类别概率分布上。
嵌入层(Embedding Layer):模型定义一个嵌入层 embedding,其中使用指定的嵌入方法 embedding(使用Structure2Vector库中MeanFieldInference),该嵌入方法会根据节点和边的特征信息,将节点嵌入到一个低维向量空间中。
分类器层(Classifier Layer):在嵌入层输出后,使用深度神经网络构建分类器,将嵌入向量映射到更高维的特征空间,以便进行分类任务。
输出层:最后,通过一个线性变换将分类器层的输出映射到最终的类别概率分布,对应着模型的预测结果。激活函数使用指定的激活函数ReLU。
而在输出层后,通过softmax对输出进行操作,将模型的输出转换为对数概率,用于多分类任务的损失计算。
总的来说,它将输入的图数据对象(节点特征和边特征)映射到类别概率分布上,通过嵌入层和分类器层进行特征提取和转换,并输出对各个类别的概率预测。
在自动数据收集框架的最后部分提到会存在类别为“其他”的未分类样本,由于这部分数据明确是与漏洞相关的,所以在初步训练完检测模型后,直接使用五种模型进行筛选,如果模型判断样本存在漏洞,则直接加入其所属类型的训练集,再训练集扩充后可进行第二轮学习,以此流程循环直至“其他”样本基本分类完成,具体可结合附图2理解。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (2)
1.一种基于图神经网络和漏洞补丁关系的自动化漏洞挖掘方法,其特征在于,包括如下步骤:
步骤S1、采用自动化数据收集框架对Github的开源项目进行信息爬取;
步骤S2、通过专家模型对提交的Commit进行判断是否与漏洞相关;
步骤S3、利用代码的增删改对对应行的代码打上标记,再通过关键词提取完成初步筛选,获取五种CWE漏洞类型的训练样本和未分类样本组;
步骤S4、提取漏洞特征和其与补丁关联特征后输入到Struc2Vec和DNN组成的深度学习模型框架中训练,完成模型初步训练后对未分类样本组进一步筛选:
首先需要对样本进行处理,使用LLVM编译器将其编译为IR,使用各自漏洞对应的自定义插件来分析IR生成图ePDG,标记潜在的表现点mi和根本原因点,表现点为漏洞触发代码,根本原因点为导致漏洞出现的代码,将其中对表现点和漏洞点有影响的条件语句也进行标记,在补丁样本中修补漏洞时使用的if语句,将漏洞和补丁的关系添加进模型学习;
ePDG是一个多重图,定义为G:=(V,E,q,r),其中V是一组节点,E是一组边,q和r分别是节点和边到类别和属性的映射;
其中q是将V中的节点映射到指令类别的映射,定义为q:V→{{c,a}:c∈C,a∈Ac},C是LLVM指令API中所有类型的指令的集合;Ac是指令v∈V的类型c的所有可能属性的集合,包括算术运算中的静态值;调用指令的函数名称以及根本原因和表现标签;r是将E中的边映射到一对节点的映射,定义为:r:E→{{(x,y),d,b}:x,y∈V,d∈D,b∈Ad},其中D是边缘类型的集合,Ad是流类型d的流属性的集合;
再获取ePDG后开始使用BFS进行程序切片,从表现点的位置向后切割出一个指定深度的子图Gi,对子图的每个节点添加特征向量,边添加显示特征,提取特征后生成了与图Gi相同结构的Gi',之后将该图传递给Structure2Vector模型,通过两个节点之间的关联来预测表现点是否为漏洞点,最后将S2V模型输出的向量输入DNN二类分类器,输出一个大小为0到1的概率y来判断该节点的是否为漏洞表现点;
所述深度学习模型包括两个端到端训练的组件:图嵌入网络MG和深度神经网络分类器MC,图嵌入网络MG使用神经网络通过图的结构传递消息来生成节点嵌入,MG的参数被调整以适应MC的分类学习目标,即MC(MG(G′i))=y,其中y是mi是漏洞的概率;
MG(G′i)的执行包括从每个节点vi∈V到其邻居vj∈Γ(vi)的多次消息传递迭代,其中来自节点vi的消息采用矢量ei的形式,在每次迭代开始时,使用神经网络根据其邻居的最后消息以及存储在该节点和关联边的特征向量预测第i个节点的下一个广播消息,节点特征向量xvi∈Xv,关联边特征向量xeij∈Xe,其中Xv为节点特征矩阵,Xe为边特征矩阵来,MG(G′i)的执行过程被建模为:
其中Wv和We是训练过程中学***均在一起,形成一个单一的嵌入向量,然后通过批量归一化层传递给MC,
使用ReLU激活来帮助建模图中的复杂关系,函数定义为ReLU(x)=max(0,x),其中x是输入值,如果x大于等于零,则ReLU(x)等于x,否则等于零,
为训练MG和Mc模型的参数,优化下列的学习目标函数:
其中LCE是标准的交叉熵损失函数,y代表真实标签;
步骤S5、将筛选出来的样本加入训练集,剩余未分组等待下一轮训练完成,持续进行重复筛选样本加入训练集、训练模型、再次筛选的过程,直至不再有样本被划分到五种CWE漏洞中则样本完成分类。
2.根据权利要求1所述的一种基于图神经网络和漏洞补丁关系的自动化漏洞挖掘方法,其特征在于,所述专家模型由五个分类器组成:支持向量机、随机森林、k最近邻、逻辑回归和梯度提升;将提交信息和代码更改中提取的特征作为模型的输入,应用CP方法来评估个体分类器对给定输入的可信度,过滤掉可信度小于0.7的高不确定性预测;使用多数投票方案来汇总剩余的预测结果以生成最终结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311804982.5A CN117473510B (zh) | 2023-12-26 | 2023-12-26 | 一种基于图神经网络和漏洞补丁关系的自动化漏洞挖掘技术 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311804982.5A CN117473510B (zh) | 2023-12-26 | 2023-12-26 | 一种基于图神经网络和漏洞补丁关系的自动化漏洞挖掘技术 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117473510A CN117473510A (zh) | 2024-01-30 |
CN117473510B true CN117473510B (zh) | 2024-03-26 |
Family
ID=89635052
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311804982.5A Active CN117473510B (zh) | 2023-12-26 | 2023-12-26 | 一种基于图神经网络和漏洞补丁关系的自动化漏洞挖掘技术 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117473510B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6671818B1 (en) * | 1999-11-22 | 2003-12-30 | Accenture Llp | Problem isolation through translating and filtering events into a standard object format in a network based supply chain |
CN111611586A (zh) * | 2019-02-25 | 2020-09-01 | 上海信息安全工程技术研究中心 | 基于图卷积网络的软件漏洞检测方法及装置 |
CN114003270A (zh) * | 2021-10-29 | 2022-02-01 | 东南大学 | 基于深度学习的软件安全漏洞修复者推荐方法 |
CN115033890A (zh) * | 2022-06-29 | 2022-09-09 | 扬州大学 | 一种基于对比学习的源代码漏洞检测方法及*** |
CN115562721A (zh) * | 2022-10-28 | 2023-01-03 | 南开大学 | 一种从汇编语言中挖掘特征的克隆代码检测方法及*** |
CN116108446A (zh) * | 2022-12-06 | 2023-05-12 | 西安电子科技大学 | 基于深度学习的漏洞补丁存在性检测方法 |
CN116305158A (zh) * | 2023-03-10 | 2023-06-23 | 天翼云科技有限公司 | 一种基于切片代码依赖图语义学习的漏洞识别方法 |
CN116383833A (zh) * | 2023-04-28 | 2023-07-04 | 中国工商银行股份有限公司 | 软件程序代码的测试方法及其装置、电子设备、存储介质 |
CN116415253A (zh) * | 2023-03-14 | 2023-07-11 | 温氏食品集团股份有限公司 | 一种基于超图神经网络的程序漏洞检测方法及*** |
CN116975881A (zh) * | 2023-08-25 | 2023-10-31 | 国网甘肃省电力公司电力科学研究院 | 一种基于llvm的漏洞细粒度定位方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8468244B2 (en) * | 2007-01-05 | 2013-06-18 | Digital Doors, Inc. | Digital information infrastructure and method for security designated data and with granular data stores |
US8655939B2 (en) * | 2007-01-05 | 2014-02-18 | Digital Doors, Inc. | Electromagnetic pulse (EMP) hardened information infrastructure with extractor, cloud dispersal, secure storage, content analysis and classification and method therefor |
US20210019674A1 (en) * | 2015-10-28 | 2021-01-21 | Qomplx, Inc. | Risk profiling and rating of extended relationships using ontological databases |
-
2023
- 2023-12-26 CN CN202311804982.5A patent/CN117473510B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6671818B1 (en) * | 1999-11-22 | 2003-12-30 | Accenture Llp | Problem isolation through translating and filtering events into a standard object format in a network based supply chain |
CN111611586A (zh) * | 2019-02-25 | 2020-09-01 | 上海信息安全工程技术研究中心 | 基于图卷积网络的软件漏洞检测方法及装置 |
CN114003270A (zh) * | 2021-10-29 | 2022-02-01 | 东南大学 | 基于深度学习的软件安全漏洞修复者推荐方法 |
CN115033890A (zh) * | 2022-06-29 | 2022-09-09 | 扬州大学 | 一种基于对比学习的源代码漏洞检测方法及*** |
CN115562721A (zh) * | 2022-10-28 | 2023-01-03 | 南开大学 | 一种从汇编语言中挖掘特征的克隆代码检测方法及*** |
CN116108446A (zh) * | 2022-12-06 | 2023-05-12 | 西安电子科技大学 | 基于深度学习的漏洞补丁存在性检测方法 |
CN116305158A (zh) * | 2023-03-10 | 2023-06-23 | 天翼云科技有限公司 | 一种基于切片代码依赖图语义学习的漏洞识别方法 |
CN116415253A (zh) * | 2023-03-14 | 2023-07-11 | 温氏食品集团股份有限公司 | 一种基于超图神经网络的程序漏洞检测方法及*** |
CN116383833A (zh) * | 2023-04-28 | 2023-07-04 | 中国工商银行股份有限公司 | 软件程序代码的测试方法及其装置、电子设备、存储介质 |
CN116975881A (zh) * | 2023-08-25 | 2023-10-31 | 国网甘肃省电力公司电力科学研究院 | 一种基于llvm的漏洞细粒度定位方法 |
Non-Patent Citations (2)
Title |
---|
一种基于改进流形学习方法的云计算入侵检测模型;陈丹伟;侯楠;孙国梓;;计算机科学;20101015(第10期);65-68 * |
开源软件漏洞补丁的采集与整理;邹雅毅;李珍;;河北省科学院学报;20160915(第03期);22-26 * |
Also Published As
Publication number | Publication date |
---|---|
CN117473510A (zh) | 2024-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113641586B (zh) | 软件源代码缺陷检测方法、***、电子设备及储存介质 | |
Xia et al. | Collective personalized change classification with multiobjective search | |
CN111459799B (zh) | 一种基于Github的软件缺陷检测模型建立、检测方法及*** | |
CN109697162A (zh) | 一种基于开源代码库的软件缺陷自动检测方法 | |
CN112070138B (zh) | 多标签混合分类模型的构建方法、新闻分类方法及*** | |
CN109871688B (zh) | 漏洞威胁程度评估方法 | |
CN113221960B (zh) | 一种高质量漏洞数据收集模型的构建方法及收集方法 | |
TWI590095B (zh) | 軟體功能驗證系統及其驗證方法 | |
CN113138920B (zh) | 基于知识图谱与语义角色标注的软件缺陷报告分派方法及装置 | |
CN115357904B (zh) | 一种基于程序切片和图神经网络的多类漏洞检测方法 | |
CN112418320A (zh) | 一种企业关联关系识别方法、装置及存储介质 | |
CN111767216B (zh) | 一种可缓解类重叠问题的跨版本深度缺陷预测方法 | |
CN115048316A (zh) | 一种半监督的软件代码缺陷检测方法及装置 | |
CN116361788A (zh) | 一种基于机器学习的二进制软件漏洞预测方法 | |
CN115098857A (zh) | 一种可视化恶意软件的分类方法及装置 | |
CN116702160B (zh) | 一种基于数据依赖增强程序切片的源代码漏洞检测方法 | |
CN117725592A (zh) | 一种基于有向图注意力网络的智能合约漏洞检测方法 | |
CN116702157B (zh) | 一种基于神经网络的智能合约漏洞检测方法 | |
CN111240993B (zh) | 一种基于模块依赖图的软件缺陷预测方法 | |
CN117473510B (zh) | 一种基于图神经网络和漏洞补丁关系的自动化漏洞挖掘技术 | |
CN109582562B (zh) | 基于生成对抗网络的智能化软件测试及云平台构建方法 | |
CN111445006A (zh) | 开源社区中开发者代码提交次数的预测方法及*** | |
CN113419951B (zh) | 人工智能模型优化方法、装置、电子设备及存储介质 | |
CN115660695A (zh) | 客服人员标签画像构建方法、装置、电子设备及存储介质 | |
CN115587029A (zh) | 补丁的检测方法及装置、电子设备、计算机可读介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |