CN116361788A - 一种基于机器学习的二进制软件漏洞预测方法 - Google Patents
一种基于机器学习的二进制软件漏洞预测方法 Download PDFInfo
- Publication number
- CN116361788A CN116361788A CN202211661314.7A CN202211661314A CN116361788A CN 116361788 A CN116361788 A CN 116361788A CN 202211661314 A CN202211661314 A CN 202211661314A CN 116361788 A CN116361788 A CN 116361788A
- Authority
- CN
- China
- Prior art keywords
- embedding
- vulnerability
- graph
- statistical
- control flow
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 67
- 238000010801 machine learning Methods 0.000 title claims abstract description 21
- 230000006870 function Effects 0.000 claims abstract description 43
- 238000000605 extraction Methods 0.000 claims abstract description 36
- 239000013598 vector Substances 0.000 claims abstract description 35
- 238000013528 artificial neural network Methods 0.000 claims abstract description 24
- 238000004458 analytical method Methods 0.000 claims abstract description 16
- 238000003058 natural language processing Methods 0.000 claims abstract description 16
- 230000008569 process Effects 0.000 claims description 18
- 238000012549 training Methods 0.000 claims description 16
- 238000010606 normalization Methods 0.000 claims description 14
- 230000006399 behavior Effects 0.000 claims description 9
- 238000012545 processing Methods 0.000 claims description 8
- 238000004422 calculation algorithm Methods 0.000 claims description 7
- 230000003068 static effect Effects 0.000 claims description 7
- 230000000694 effects Effects 0.000 claims description 6
- 238000007781 pre-processing Methods 0.000 claims description 6
- 238000009826 distribution Methods 0.000 claims description 5
- 238000005295 random walk Methods 0.000 claims description 5
- 230000002776 aggregation Effects 0.000 claims description 4
- 238000004220 aggregation Methods 0.000 claims description 4
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 230000004927 fusion Effects 0.000 claims description 3
- 230000007704 transition Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 12
- 230000006872 improvement Effects 0.000 description 10
- 239000011159 matrix material Substances 0.000 description 9
- 238000004590 computer program Methods 0.000 description 7
- 239000000284 extract Substances 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000001514 detection method Methods 0.000 description 4
- 238000003860 storage Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 229910002056 binary alloy Inorganic materials 0.000 description 2
- 238000005065 mining Methods 0.000 description 2
- 230000008447 perception Effects 0.000 description 2
- 238000011176 pooling Methods 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 238000007619 statistical method Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000007621 cluster analysis Methods 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000012417 linear regression Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005728 strengthening Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
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/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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
-
- 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)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Artificial Intelligence (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Virology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于机器学习的二进制软件漏洞预测方法,其包括:基本块语义特征提取:用来对汇编指令序列基于自然语言处理模型进行语义特征的提取,形成语义特征向量;函数统计特征提取:用来对统计数据进行统计特征提取,形成统计特征向量,然后将语义特征向量和统计特征向量进行融合,得到块嵌入表示;控制流结构特征提取:用来将块嵌入和控制流图结合,生成属性控制流图ACFG,并基于改进后的图神经网络struct2vec模型生成图嵌入表示;通过GNN分析,经过softmax层输出一个针对函数的安全性的评分,判断函数存在漏洞的可能性。本发明具有原理简单、操作简便、适用范围广等优点。
Description
技术领域
本发明主要涉及到计算机安全技术领域,特指一种基于机器学习的二进制软件漏洞预测方法,尤其适用于计算机安全领域的二进制漏洞预测。
背景技术
软件漏洞损害软件可靠性,危害国家安全和社会稳定,高效、准确、及时发掘软件漏洞意义巨大。然而,在现实漏洞检测场景中,软件源代码通常难以获取,如购买的商业软件、网络对抗的目标软件等,因此,针对无源码二进制软件的漏洞挖掘成为漏洞挖掘领域的重点和难点。
相比于源代码层面的软件漏洞挖掘,目前二进制层面的漏洞挖掘主要采用动态手段进行挖掘,即在实际运行被测软件过程中,通过不同输入检测漏洞。但动态手段需要搭建的软件运行环境复杂,尤其是涉及到硬件依赖及不同平台架构的驱动软件,难以构建环境运行。此外,动态手段每次只能测试一条执行路径,因此漏洞检测效率和覆盖率有限。
另一类方法是采用静态分析方法直接分析软件代码。静态方法在有源码的条件下取得了比较好的漏洞检测效果,能够克服动态手段的各种不足,但仍存在依赖编程语言语法特性(如只针对C语言)等问题。但在二进制层面,静态方法的主要不足在于准确性偏低。虽然,借助深度学习方法,二进制同源比对的方法可以实现较高准确率的1-day漏洞检测,但是针对0-day漏洞的预测,一直没有较实用的方法。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种原理简单、操作简便、适用范围广的基于机器学习的二进制软件漏洞预测方法。
为解决上述技术问题,本发明采用以下技术方案:
一种基于机器学习的二进制软件漏洞预测方法,其包括:
基本块语义特征提取:用来对汇编指令序列基于自然语言处理模型进行语义特征的提取,形成语义特征向量;
函数统计特征提取:用来对统计数据进行统计特征提取,形成统计特征向量,然后将语义特征向量和统计特征向量进行融合,得到块嵌入表示;
控制流结构特征提取:用来将块嵌入和控制流图结合,生成属性控制流图ACFG,并基于改进后的图神经网络struct2vec模型生成图嵌入表示;通过GNN分析,经过softmax层输出一个针对函数的安全性的评分,判断函数存在漏洞的可能性。
作为本发明方法的进一步改进:所述基本块语义特征提取采用基于自然语言处理的基本块语义特征提取方法,首先将二进制反汇编得到汇编语言,然后基于自然语言处理RoBERTa模型,将汇编指令的操作码和操作数分别作为token识别并训练,并通过RandomWalk随机生成指令序列强化训练效果。
作为本发明方法的进一步改进:所述基本块语义特征提取包括Token的归一化处理,基于RoBERTa模型提取汇编语言语义特征时,将每条汇编指令看做一个句子,每个基本块表示一个段落,指令中的操作码、操作数、寄存器、立即数看做token,识别操作码和操作数,将汇编指令中出现的操作码、符号、数值识别为token;对于数字,如果其16进制长度大于6个字符,则统一识别为“<addr>”,否则识别为普通token;对于变量,则统一识别为“<var>”,对于符号,除了“,”,其它都识别为token。
作为本发明方法的进一步改进:所述基本块语义特征提取时,在RoBERTa模型定义符号嵌入的基础之上,增加段嵌入segment embedding和位置嵌入position embedding,所述段嵌入用来识别输入中的不同句子,所述位置嵌入用来识别每个token的位置,然后合并成最终的模型输入。
作为本发明方法的进一步改进:所述函数统计特征提取采用面向漏洞行为的指令统计特征提取方法,从指令、跳转、操作数、字符串方面统计汇编代码的数量特征,提出包含43个指令的共56维数量特征,移除漏洞无关指令,通过统计特征对漏洞行为进行刻画,基于聚类刻画漏洞的画像。
作为本发明方法的进一步改进:在统计数量特征的基础之上,对数量特征进行预处理,所述预处理包括:
确定特征取值范围;所述特征取值范围指的是不同指标在数量统计上存在着差异性,通过归一化或者将纯数值特征转换成方差或概率分布特征;
消除特征关联性;所述特征关联性指的是对原始数据资源进行特征提取过程中可能会存在数据内容的重合;
确定特征的排列方式。
作为本发明方法的进一步改进:所述控制流结构特征提取采用基于图神经网络的结构特征提取方法,基于静态分析手段,从汇编代码中提取漏洞代码的控制流图结构数据,构建向量化的结构特征属性图ACFG,通过特征向量的融合嵌入,完善漏洞代码特征模型,然后基于改进后的structure2vec图神经网络进行结构特征数据的聚合分析,预测潜在漏洞。
作为本发明方法的进一步改进:所述structure2vec中关注节点的结构性并且使用多层将不同条数的节点组织起来,使用alias算法进行采样和转移概率的方式组织训练所需要的语料,最后通过word2vec将其训练;所述structure2vec利用节点的度来衡量两个节点之间的节点相似性,再通过节点的跳数对节点进行分层,构建多层的结构相似度拓扑图。
作为本发明方法的进一步改进:所述基于改进型structure2vec模型的漏洞概率生成方法的流程包括:
1)通过二进制反汇编获取程序的控制流图CFG;
2)将CFG与块嵌入信息结合,得到ACFG;
3)将ACFG输入改进后的structure2vec模型,通过normalize层归一化处理;
4)由softmax层来获取每个函数存在漏洞的概率。
作为本发明方法的进一步改进:所述预测方法的流程包括:
步骤S1:使用反汇编工具将二进制程序反汇编,得到汇编代码;
步骤S2:对汇编代码进行分析,得到控制流图;
步骤S3:对汇编代码以函数为单位提取指令、跳转、操作数、字符串等统计数据;
步骤S4:基于自然语言处理模型RoBERTa对汇编指令序列进行语义特征的提取,形成语义特征向量;
步骤S5:将语义特征向量和统计特征向量进行融合,得到块嵌入block embedding表示;
步骤S6:将块嵌入和控制流图结合,生成属性控制流图ACFG;
步骤S7:基于图神经网络GNN生成图嵌入graph embedding表示;
步骤S8:通过GNN分析,经过softmax层输出一个针对函数安全性的评分,判断函数存在漏洞的可能性。
与现有技术相比,本发明的优点就在于:
1、本发明的基于机器学习的二进制软件漏洞预测方法,原理简单、操作简便、适用范围广,其基于自然语言处理、图神经网络、聚类分析等多种机器学习方法组合,融合代码语义特征、统计特征、结构特征,构建多维漏洞特征提取模型,实现二进制层面的静态漏洞智能预测。
2、本发明的基于机器学习的二进制软件漏洞预测方法,采用无源码二进制软件信息提取方法。首先通过将二进制代码反汇编,得到汇编代码并构建相应控制流图,然后针对汇编代码提取统计数据。本发明通过自然语言处理技术,直接从指令序列上提取语义信息,通过统计分析方法从汇编代码上提取数值信息,通过图神经网络技术从控制流图上提取结构信息。
3、本发明的基于机器学习的二进制软件漏洞预测方法,构建漏洞多维特征模型。为了更精确、更全面的刻画漏洞行为特征,本发明从指令级、基本块级、图级多个层级分别提取漏洞特征,融合统计特征、语义特征和结构特征,基于统计分析、自然语言处理和图神经网络技术,通过特征数据的聚合,形成向量形式的多维漏洞特征模型,实现漏洞特征的准确刻画。
附图说明
图1是本发明方法的流程示意图。
图2是本发明在具体应用实例中加入片段嵌入和位置嵌入后的RoBERTa模型输入结构原理示意图。
图3是本发明在具体应用实例中改进后的图神经网络的流程示意图。
图4是本发明在具体应用实例中所提取的多维统计特征分类的示意图。
具体实施方式
以下将结合说明书附图和具体实施例对本发明做进一步详细说明。
如图1和图2所示,本发明的基于机器学习的二进制软件漏洞预测方法,其步骤包括:
基本块语义特征提取:用来对汇编指令序列基于自然语言处理模型(RoBERTa)进行语义特征的提取,形成语义特征向量。将汇编指令的操作码和操作数分别作为token识别并训练,并通过RandomWalk随机生成指令序列来强化训练效果。
函数统计特征提取:用来对统计数据进行统计特征提取,形成统计特征向量,然后将语义特征向量和统计特征向量进行融合,得到块嵌入(block embedding)表示。从指令、跳转、操作数、字符串等方面统计汇编代码的数量特征,提出包含43个指令的共56维数量特征。
控制流结构特征提取:用来将块嵌入和控制流图结合,生成属性控制流图(ACFG),并基于改进后的图神经网络struct2vec模型生成图嵌入(graph embedding)表示。通过GNN分析,经过softmax层输出一个针对函数的安全性的评分,判断函数存在漏洞的可能性。评分取值[0,1],0代表无漏洞,1代表有漏洞。
在具体应用实例中,本发明采用基于自然语言处理的基本块语义特征提取方法,该方法首先将二进制反汇编得到汇编语言,然后基于自然语言处理RoBERTa模型,然后将汇编指令的操作码和操作数分别作为token识别并训练,并通过RandomWalk随机生成指令序列强化训练效果,该技术能将汇编代码中的基本块语义特征映射到高维的数值表示上构建向量形式的特征模型。
在具体应用实例中,所述基于自然语言处理的基本块语义特征提取方法包括:
Token的归一化处理:基于RoBERTa模型提取汇编语言语义特征时,本发明将每条汇编指令看做一个句子,每个基本块表示一个段落,指令中的操作码、操作数、寄存器、立即数等看做token,不仅识别操作码和操作数,而且将汇编指令中出现的操作码、符号、数值识别为token,以此来保留更丰富的信息。对于数字,如果其16进制长度大于6个字符,则统一识别为“<addr>”,否则识别为普通token。对于变量,则统一识别为“<var>”,对于符号,除了“,”,其它都识别为token。例如,指令“mov[ebp+VAR 4]eax”将被分解为“mov”,“[”,“ebp”,“+”,“hvari”,“]”,“eax”。
汇编语言非线性结构处理:针对汇编语言中存在自然语言中没有的多分支结构等差别,如条件跳转结构和循环结构等。为了更精准的处理这样的非线性结构,本发明采用RandomWalk技术在控制流图上随机生成执行路径,模拟程序实际运行情况,生成同一目标代码的不同指令序列,然后再对生成的指令序列进行自然语言处理,提取语义特征,实现多路径协同训练。
增加段嵌入和位置嵌入层:在RoBERTa模型定义符号嵌入的基础之上,增加段嵌入(segment embedding)和位置嵌入(position embedding),如图2所示,段嵌入用来识别输入中的不同句子,位置嵌入用来识别每个token的位置,然后合并成最终的模型输入。
在具体应用实例中,本发明采用面向漏洞行为的指令统计特征提取方法,该方法从指令、跳转、操作数、字符串等方面统计汇编代码的数量特征,提出包含43个指令的共56维数量特征,通过移除漏洞无关指令,提升训练和分析效率。在此基础上,通过统计特征对漏洞行为进行刻画,基于聚类刻画漏洞的画像。
在具体应用实例中,本发明从指令、操作数及字符串三个维度提出一种面向漏洞行为的指令统计特征提取方法,如图4中的表所示,重点统计跟漏洞行为密切相关的指令数量特征。该模型包含43个指令的共56维特征向量T,降低了其他工作在指令统计方面的冗余,降低模型训练开销,提升效率。相比复杂的语义特征,指令级的统计信息能更直观的反应汇编代码的特征,通过提取跟漏洞行为密切相关的指令、操作数及字符串的统计特征,进一步完善漏洞代码的特征模型。
在统计数量特征的基础之上,对数量特征进行预处理,重点消除特征取值范围、特征关联性及特征排列方式等三个因素的影响。
(1)特征取值范围,指的是不同指标在数量统计上存在着差异性,如mov等指令在汇编代码中大量存在,但malloc等函数调用的出现频次则明显更少,不同数量级的数据代表着特征权重不同,而后期算法无法通过迭代消除这种差异,导致特征在权重上的误差(即输入阶段就认为数值大的特征更重要)。通过特征向量的预处理,人工消除这种权重误差。所用手段包括归一化,或者将纯数值特征转换成方差或概率分布等其他特征。
(2)特征关联性,指的是对原始数据资源进行特征提取过程中可能会存在数据内容的重合。因此,特征之间可能会存在关联性,这种关联性可能会增加某个特征的权重,从而影响某些模型的训练过程和分析结果(例如线性回归算法对于特征之间的线性关联比较敏感)。因此在特征提取过程中,尽量消除这种关联性。
(3)特征的排列方式,指的是对一些通过局部感知进行分析的模型来说,特征的排列顺序至关重要。例如,在卷积神经网络进行图像识别时,如果图象分块排列顺序被打乱,在对边界附近的切片进行卷积时,会影响到其局部感知,导致准确率下降。这种排列顺序的影响在图卷积神经网络(GCN)中也会存在,因此,后期使用GCN处理程序结构特征时,应尽量消除特征向量的排列方式影响。在统计数量特征的基础之上,对数量特征进行预处理,重点消除特征取值范围、特征关联性及特征排列方式等三个因素的影响。
在具体应用实例中,本发明采用基于图神经网络的结构特征提取方法,该方法基于静态分析手段,从汇编代码中提取漏洞代码的控制流图结构数据,构建向量化的结构特征属性图(ACFG),通过特征向量的融合嵌入,进一步完善漏洞代码特征模型,然后基于改进后的structure2vec图神经网络进行结构特征数据的聚合分析,预测潜在漏洞。
在具体应用实例中,所述基于图神经网络的结构特征提取方法,包括:
首先,通过反汇编获取函数的控制流图信息,结合块嵌入信息得到属性控制流图(ACFG)。然后,将ACFG输入GNN网络,通过normalize层归一化处理,由softmax层来获取每个函数存在漏洞的概率。与传统的分类器神经网络不同,该网络输出的是函数存在漏洞的概率。
为了提取汇编函数的结构特征生成图嵌入,本发明对structure2vec模型进行了改进,增加自环以提升节点自注意力,提高了提取结构特征的能力。图3所示为所使用的改进后的GNN流程图。其中F是ACFG中所有的基本块特征向量组成的特征矩阵。A是增加了自环的ACFG的邻接矩阵。增加的自环能够保证每个基本块在收集相邻信息时能总是保持自注意力。
假定一个ACFG有p个结点,块嵌入的维度是b*1,则F是个p*b的矩阵,A是个p*p的矩阵。在此GNN中,使用p*e的矩阵φ来提取每个节点的信息,e表示最终生成的图嵌入向量的维度。φ初始化为全0,记为通过不断计算新的/>来更新节点信息。/>计算方法如下:
其中W1是b*e的矩阵,σ是一个由d-层全连接层连接的神经网络。
全连接层在整个神经网络中起到分类器的作用,对前面的特征作加权和,将学到的分布式特征表示映射到样本标记空间。在实际实现中,每个全连接层之后都需要一个非线性层来提升模型的表现力。ξ进行ReLu激活和归一化(normalization)操作。ReLu函数是人工神经网络常用的激活函数,主要功能是取最大值。ReLu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生。在ReLu之后加一步归一化操作,能尽可能保证每一层网络的输入具有相同的分布。ξ能有效避免梯度离散并提升训练效果。在T轮之后,得到最终的图特征矩阵维度为p*e,然后通过变换得到ACFG的图嵌入。
其中W3是个2*e矩阵。这样Z的两个值之间没有约束。
output=F(Z) (4)
其中F在Z上进行非线性转换,使用了softmax层和normalize层。Softmax层的作用是为每个输出分类的结果都赋予一个概率值,表示属于每个类别的可能性。
其中zi为第i个节点输出值,C为节点个数,即分类的类别个数(此处为2)。通过softmax函数可以将分类输出值转换为范围在[0,1]和为1的概率分布。因此,输出output的取值范围是{p,1-p},其中p代表了该输入ACFG图中存在漏洞的概率。
在一个具体应用实例中,本发明方法的详细流程包括:
步骤S1:使用反汇编工具(如IDA-python)将二进制程序反汇编,得到汇编代码;
步骤S2:对汇编代码进行分析,得到控制流图;
步骤S3:对汇编代码以函数为单位提取指令、跳转、操作数、字符串等统计数据;
步骤S4:基于自然语言处理模型(RoBERTa)对汇编指令序列进行语义特征的提取,形成语义特征向量;
步骤S5:将语义特征向量和统计特征向量进行融合,得到块嵌入(blockembedding)表示;
步骤S6:将块嵌入和控制流图结合,生成属性控制流图(ACFG);
步骤S7:基于图神经网络(GNN)生成图嵌入(graph embedding)表示;
步骤S8:通过GNN分析,经过softmax层输出一个针对函数安全性的评分,判断函数存在漏洞的可能性。
参见图2,在具体应用实例中,本发明所采用自然语言处理技术在RoBERTa模型定义符号嵌入的基础之上,增加段嵌入(segment embedding)和位置嵌入(positionembedding),段嵌入用来识别输入中的不同句子,位置嵌入用来识别每个token的位置,然后合并成最终的模型输入。
在具体应用实例中,本发明所采用的基于改进型structure2vec模型的漏洞概率生成算法是通过反汇编获取程序的CFG结构信息,结合块嵌入信息得到ACFG。然后将ACFG输入GNN网络,通过normalize层归一化处理,由softmax层来获取每个函数存在漏洞的概率。与传统的分类器神经网络不同,该网络输出的是函数存在漏洞的概率。为了提取汇编函数的结构特征生成图嵌入,本发明对structure2vec模型进行了改进,增加自环以提升节点自注意力,提高了提取结构特征的能力。之前生成图嵌入的模型,如node2vec,deepwalk,都是基于邻居节点的相似度来组织语料,然后使用word2vec来进行训练。这种无监督的训练方式将相似的节点进行聚合,然而它们更加关注“相邻性”,而忽视了“结构相似性”。而structure2vec主要考虑节点的结构性并且使用多层将不同条数的节点组织起来,使用alias算法进行采样和转移概率的方式组织训练所需要的语料,最后通过word2vec将其训练。structure2vec利用节点的度来衡量两个节点之间的节点相似性,再通过节点的跳数对节点进行分层,进而构建了多层的结构相似度拓扑图。
参见图3,在具体应用实例中,本发明所提出的基于改进型structure2vec模型的漏洞概率生成算法实施步骤包括:
1)通过二进制反汇编获取程序的控制流图CFG;
2)将CFG与块嵌入信息结合,得到ACFG;
3)将ACFG输入改进后的structure2vec模型,通过normalize层归一化处理;
4)由softmax层来获取每个函数存在漏洞的概率。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
Claims (10)
1.一种基于机器学习的二进制软件漏洞预测方法,其特征在于,包括:
基本块语义特征提取:用来对汇编指令序列基于自然语言处理模型进行语义特征的提取,形成语义特征向量;
函数统计特征提取:用来对统计数据进行统计特征提取,形成统计特征向量,然后将语义特征向量和统计特征向量进行融合,得到块嵌入表示;
控制流结构特征提取:用来将块嵌入和控制流图结合,生成属性控制流图ACFG,并基于改进后的图神经网络struct2vec模型生成图嵌入表示;通过GNN分析,经过softmax层输出一个针对函数的安全性的评分,判断函数存在漏洞的可能性。
2.根据权利要求1所述的基于机器学习的二进制软件漏洞预测方法,其特征在于,所述基本块语义特征提取采用基于自然语言处理的基本块语义特征提取方法,首先将二进制反汇编得到汇编语言,然后基于自然语言处理RoBERTa模型,将汇编指令的操作码和操作数分别作为token识别并训练,并通过RandomWalk随机生成指令序列强化训练效果。
3.根据权利要求2所述的基于机器学习的二进制软件漏洞预测方法,其特征在于,所述基本块语义特征提取包括Token的归一化处理,基于RoBERTa模型提取汇编语言语义特征时,将每条汇编指令看做一个句子,每个基本块表示一个段落,指令中的操作码、操作数、寄存器、立即数看做token,识别操作码和操作数,将汇编指令中出现的操作码、符号、数值识别为token;对于数字,如果其16进制长度大于6个字符,则统一识别为“<addr>”,否则识别为普通token;对于变量,则统一识别为“<var>”,对于符号,除了“,”,其它都识别为token。
4.根据权利要求2所述的基于机器学习的二进制软件漏洞预测方法,其特征在于,所述基本块语义特征提取时,在RoBERTa模型定义符号嵌入的基础之上,增加段嵌入segmentembedding和位置嵌入position embedding,所述段嵌入用来识别输入中的不同句子,所述位置嵌入用来识别每个token的位置,然后合并成最终的模型输入。
5.根据权利要求1所述的基于机器学习的二进制软件漏洞预测方法,其特征在于,所述函数统计特征提取采用面向漏洞行为的指令统计特征提取方法,从指令、跳转、操作数、字符串方面统计汇编代码的数量特征,提出包含43个指令的共56维数量特征,移除漏洞无关指令,通过统计特征对漏洞行为进行刻画,基于聚类刻画漏洞的画像。
6.根据权利要求5所述的基于机器学习的二进制软件漏洞预测方法,其特征在于,在统计数量特征的基础之上,对数量特征进行预处理,所述预处理包括:
确定特征取值范围;所述特征取值范围指的是不同指标在数量统计上存在着差异性,通过归一化或者将纯数值特征转换成方差或概率分布特征;
消除特征关联性;所述特征关联性指的是对原始数据资源进行特征提取过程中可能会存在数据内容的重合;
确定特征的排列方式。
7.根据权利要求1所述的基于机器学习的二进制软件漏洞预测方法,其特征在于,所述控制流结构特征提取采用基于图神经网络的结构特征提取方法,基于静态分析手段,从汇编代码中提取漏洞代码的控制流图结构数据,构建向量化的结构特征属性图ACFG,通过特征向量的融合嵌入,完善漏洞代码特征模型,然后基于改进后的structure2vec图神经网络进行结构特征数据的聚合分析,预测潜在漏洞。
8.根据权利要求7所述的基于机器学习的二进制软件漏洞预测方法,其特征在于,所述structure2vec中关注节点的结构性并且使用多层将不同条数的节点组织起来,使用alias算法进行采样和转移概率的方式组织训练所需要的语料,最后通过word2vec将其训练;所述structure2vec利用节点的度来衡量两个节点之间的节点相似性,再通过节点的跳数对节点进行分层,构建多层的结构相似度拓扑图。
9.根据权利要求7所述的基于机器学习的二进制软件漏洞预测方法,其特征在于,所述基于改进型structure2vec模型的漏洞概率生成方法的流程包括:
1)通过二进制反汇编获取程序的控制流图CFG;
2)将CFG与块嵌入信息结合,得到ACFG;
3)将ACFG输入改进后的structure2vec模型,通过normalize层归一化处理;
4)由softmax层来获取每个函数存在漏洞的概率。
10.根据权利要求1-9中任意一项所述的基于机器学习的二进制软件漏洞预测方法,其特征在于,所述预测方法的流程包括:
步骤S1:使用反汇编工具将二进制程序反汇编,得到汇编代码;
步骤S2:对汇编代码进行分析,得到控制流图;
步骤S3:对汇编代码以函数为单位提取指令、跳转、操作数、字符串等统计数据;
步骤S4:基于自然语言处理模型RoBERTa对汇编指令序列进行语义特征的提取,形成语义特征向量;
步骤S5:将语义特征向量和统计特征向量进行融合,得到块嵌入block embedding表示;
步骤S6:将块嵌入和控制流图结合,生成属性控制流图ACFG;
步骤S7:基于图神经网络GNN生成图嵌入graph embedding表示;
步骤S8:通过GNN分析,经过softmax层输出一个针对函数安全性的评分,判断函数存在漏洞的可能性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211661314.7A CN116361788A (zh) | 2022-12-23 | 2022-12-23 | 一种基于机器学习的二进制软件漏洞预测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211661314.7A CN116361788A (zh) | 2022-12-23 | 2022-12-23 | 一种基于机器学习的二进制软件漏洞预测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116361788A true CN116361788A (zh) | 2023-06-30 |
Family
ID=86905803
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211661314.7A Pending CN116361788A (zh) | 2022-12-23 | 2022-12-23 | 一种基于机器学习的二进制软件漏洞预测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116361788A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117435511A (zh) * | 2023-12-20 | 2024-01-23 | 厦门市唯云网络科技有限公司 | 一种基于图神经网络的流量监测软件的测试方法和装置 |
-
2022
- 2022-12-23 CN CN202211661314.7A patent/CN116361788A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117435511A (zh) * | 2023-12-20 | 2024-01-23 | 厦门市唯云网络科技有限公司 | 一种基于图神经网络的流量监测软件的测试方法和装置 |
CN117435511B (zh) * | 2023-12-20 | 2024-03-19 | 厦门市唯云网络科技有限公司 | 一种基于图神经网络的流量监测软件的测试方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Umer et al. | CNN-based automatic prioritization of bug reports | |
Evans et al. | What's inside the black-box? a genetic programming method for interpreting complex machine learning models | |
CN113723070B (zh) | 文本相似度模型训练方法、文本相似度检测方法及装置 | |
US11954202B2 (en) | Deep learning based detection of malicious shell scripts | |
CN111400713B (zh) | 基于操作码邻接图特征的恶意软件族群分类方法 | |
CN115344863A (zh) | 一种基于图神经网络的恶意软件快速检测方法 | |
Kakisim et al. | Sequential opcode embedding-based malware detection method | |
Zhang et al. | The classification and detection of malware using soft relevance evaluation | |
CN116361788A (zh) | 一种基于机器学习的二进制软件漏洞预测方法 | |
Liu et al. | A practical black-box attack on source code authorship identification classifiers | |
Zhang et al. | CPVD: Cross Project Vulnerability Detection Based On Graph Attention Network And Domain Adaptation | |
Pei et al. | Combining multi-features with a neural joint model for Android malware detection | |
CN116522337A (zh) | 一种基于api语义的恶意软件家族无偏检测方法 | |
EP4064038B1 (en) | Automated generation and integration of an optimized regular expression | |
Wen et al. | A Cross-Project Defect Prediction Model Based on Deep Learning With Self-Attention | |
CN111562943B (zh) | 一种基于事件嵌入树及gat网络的代码克隆检测方法和装置 | |
CN113420127A (zh) | 威胁情报处理方法、装置、计算设备及存储介质 | |
Luo et al. | Binary code similarity detection through LSTM and Siamese neural network | |
CN114218580A (zh) | 一种基于多任务学习的智能合约漏洞检测方法 | |
Gaykar et al. | A Hybrid Supervised Learning Approach for Detection and Mitigation of Job Failure with Virtual Machines in Distributed Environments. | |
Gomes et al. | Bert-based feature extraction for long-lived bug prediction in floss: A comparative study | |
KR20210142443A (ko) | 사이버 공간에서 실시간 공격 탐지를 위한 시간에 따른 지속적인 적응형 학습을 제공하는 방법 및 시스템 | |
KR20200010679A (ko) | 이질성 학습 기반의 정보 분류 장치 | |
CN115640577B (zh) | 一种针对二进制物联网固件程序的漏洞检测方法和系统 | |
CN113344122B (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 |