CN116663008A - 漏洞检测方法、装置、电子设备、存储介质及程序产品 - Google Patents
漏洞检测方法、装置、电子设备、存储介质及程序产品 Download PDFInfo
- Publication number
- CN116663008A CN116663008A CN202310450067.4A CN202310450067A CN116663008A CN 116663008 A CN116663008 A CN 116663008A CN 202310450067 A CN202310450067 A CN 202310450067A CN 116663008 A CN116663008 A CN 116663008A
- Authority
- CN
- China
- Prior art keywords
- determining
- function
- graph
- sequence
- features
- 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
- 238000001514 detection method Methods 0.000 title claims abstract description 55
- 238000003860 storage Methods 0.000 title claims abstract description 20
- 230000006870 function Effects 0.000 claims abstract description 112
- 239000013598 vector Substances 0.000 claims abstract description 66
- 238000010586 diagram Methods 0.000 claims abstract description 27
- 238000000605 extraction Methods 0.000 claims abstract description 25
- 238000013528 artificial neural network Methods 0.000 claims abstract description 20
- 238000003058 natural language processing Methods 0.000 claims abstract description 19
- 230000004927 fusion Effects 0.000 claims abstract description 16
- 238000007781 pre-processing Methods 0.000 claims abstract description 16
- 238000000034 method Methods 0.000 claims description 52
- 239000011159 matrix material Substances 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 12
- 230000007246 mechanism Effects 0.000 claims description 7
- 238000013145 classification model Methods 0.000 claims description 3
- 230000004044 response Effects 0.000 claims description 3
- 230000004931 aggregating effect Effects 0.000 claims description 2
- 238000012163 sequencing technique Methods 0.000 claims description 2
- 238000004891 communication Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 6
- 239000012634 fragment Substances 0.000 description 6
- 238000010606 normalization Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 230000009286 beneficial effect Effects 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 238000010276 construction Methods 0.000 description 4
- 238000013136 deep learning model Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000012549 training Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011045 prefiltration Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
-
- 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/213—Feature extraction, e.g. by transforming the feature space; Summarisation; Mappings, e.g. subspace methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/25—Fusion techniques
- G06F18/253—Fusion techniques of extracted features
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computer Security & Cryptography (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Image Analysis (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Quality & Reliability (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Audiology, Speech & Language Pathology (AREA)
Abstract
本申请提供一种漏洞检测方法、装置、电子设备、存储介质及程序产品,包括:获取待检测代码片段,对所述待检测代码片段进行预处理,确定指令序列和控制流图;根据所述指令序列,通过预先构建的自然语言处理模型进行特征提取,确定函数序列特征;根据所述控制流图,通过预先构建的图嵌入神经网络进行特征提取,确定函数图结构特征;将所述函数序列特征和所述函数图结构特征输入预先构建的多层感知机进行特征融合,确定若干函数特征向量;确定相邻的所述函数特征向量的相似度,根据所述相似度进行漏洞检测。
Description
技术领域
本申请涉及信息安全技术领域,尤其涉及一种漏洞检测方法、装置、电子设备、存储介质及程序产品。
背景技术
在联网环境下,日益增长的嵌入式设备数目、日益复杂的固件系统规模、以及嵌入式设备低功耗环境下保护机制的缺失,使得固件安全问题日益凸显,检测固件中的漏洞成为了近年来的研究热点。在现有基于深度学习的二进制代码相似性研究工作中,根据采用的深度学习模型和输入模型的数据类型,可以分为基于时序的方法和基于图的方法。前者将代码表示为文本序列作为模型输入,后者将代码表示为图结构作为模型输入。
然而,现有的根据二进制代码进行漏洞搜索方法存在误报率高的问题。
发明内容
有鉴于此,本申请的目的在于提出一种漏洞检测方法、装置、电子设备、存储介质及程序产品。
基于上述目的,本申请提供了一种漏洞检测方法,包括:
获取待检测代码片段,对所述待检测代码片段进行预处理,确定指令序列和控制流图;
根据所述指令序列,通过预先构建的自然语言处理模型进行特征提取,确定函数序列特征;
根据所述控制流图,通过预先构建的图嵌入神经网络进行特征提取,确定函数图结构特征;
将所述函数序列特征和所述函数图结构特征输入预先构建的多层感知机进行特征融合,确定若干函数特征向量;
确定相邻的所述函数特征向量的相似度,根据所述相似度进行漏洞检测。
可选的,所述待检测代码片段中代码为二进制代码;
所述对所述待检测代码片段进行预处理,确定指令序列和控制流图,包括:
通过反汇编工具对所述待检测代码片段进行反编译,确定所述指令序列和所述控制流图。
可选的,所述指令序列中任一指令包括一个操作符和若干操作数;
所述根据所述指令序列,通过预先构建的自然语言处理模型进行特征提取,确定函数序列特征,包括:
根据所述指令序列,确定单词序列;其中,任一所述指令中的所述操作符和所述操作数为一个单词;
通过词嵌入模型,对所述单词序列中的任一所述单词进行数值向量嵌入,确定数值向量序列;
根据所述数值向量序列,通过所述自然语言处理模型,确定任一指令的数值特征向量;
对所述数值特征向量进行顺序排序,确定特征矩阵,并将所述特征向量作为所述函数序列特征。
可选的,所述方法,还包括:
所述自然语言处理模型为自注意力机制。
可选的,所述根据所述控制流图,通过预先构建的图嵌入神经网络进行特征提取,确定函数图结构特征,包括:
对所述控制流图进行归一化,确定邻接矩阵;
根据所述邻接矩阵,通过预先构建的文本分类模型进行语义提取,确定基本块特征;
将所述基本块特征和所述邻接矩阵输入所述图嵌入神经网络,确定所述函数图结构特征。
可选的,所述将所述基本块特征和所述邻接矩阵输入所述图嵌入神经网络,确定所述函数图结构特征,包括:
根据所述邻接矩阵,确定任一节点的节点特征;
对任一对相邻节点的所述节点特征进行聚合,确定消息向量,并根据所述消息向量对所述邻接矩阵的节点进行更新;
响应于确定完成更新,根据更新后的所述邻接矩阵,确定所述函数图结构特征。
基于同一发明构思,本申请实施例还提供了一种漏洞检测装置,包括:
预处理模块,被配置为获取待检测代码片段,对所述待检测代码片段进行预处理,确定指令序列和控制流图;
第一特征确定模块,被配置为根据所述指令序列,通过预先构建的自然语言处理模型进行特征提取,确定函数序列特征;
第二特征确定模块,被配置为根据所述控制流图,通过预先构建的图嵌入神经网络进行特征提取,确定函数图结构特征;
特征融合模块,被配置为将所述函数序列特征和所述函数图结构特征输入预先构建的多层感知机进行特征融合,确定若干函数特征向量;
检测模块,被配置为确定相邻的所述函数特征向量的相似度,根据所述相似度进行漏洞检测。
基于同一发明构思,本申请实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如上述任意一项所述的漏洞检测方法。
基于同一发明构思,本申请实施例还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,其特征在于,所述计算机指令用于使计算机执行上述任一所述的漏洞检测方法。
基于同一发明构思,本申请实施例还提供了一种计算机程序产品,包括计算机程序指令,当所述计算机程序指令在计算机上运行时,使得计算机执行上述任一所述的漏洞检测方法。
从上面所述可以看出,本申请提供的漏洞检测方法、装置、电子设备、存储介质及程序产品,包括:获取待检测代码片段,对所述待检测代码片段进行预处理,确定指令序列和控制流图;根据所述指令序列,通过预先构建的自然语言处理模型进行特征提取,确定函数序列特征;根据所述控制流图,通过预先构建的图嵌入神经网络进行特征提取,确定函数图结构特征;将所述函数序列特征和所述函数图结构特征输入预先构建的多层感知机进行特征融合,确定若干函数特征向量;确定相邻的所述函数特征向量的相似度,根据所述相似度进行漏洞检测。利用深度学习模型提取二进制代码的函数序列特征和函数图结构特征能够消除人为选取特征引入的偏见,有效地关注于易被忽略的特征。进一步通过融合函数序列特征和函数图结构特征形成深度特征表示,使得函数特征具有多层次且丰富的信息,有利于提高漏洞检测的准确性和效率。
附图说明
为了更清楚地说明本申请或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例的漏洞检测方法的流程示意图;
图2为本申请实施例的漏洞检测方法的处理流程示意图;
图3为本申请实施例的漏洞检测方法的函数序列特征提取流程示意图;
图4为本申请实施例的漏洞检测方法的函数图结构特征提取流程示意图;
图5为本申请实施例的漏洞检测装置的结构示意图;
图6为本申请实施例的电子设备结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本申请进一步详细说明。
需要说明的是,除非另外定义,本申请实施例使用的技术术语或者科学术语应当为本申请所属领域内具有一般技能的人士所理解的通常意义。本申请实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
如背景技术部分所述,在联网环境下,日益增长的嵌入式设备数目、日益复杂的固件系统规模、以及嵌入式设备低功耗环境下保护机制的缺失,使得固件安全问题日益凸显,检测固件中的漏洞成为了近年来的研究热点。通常来讲常用的固件漏洞检测技术主要包括:静态检测技术、符号执行技术、模糊测试技术和同源性分析技术。其中,同源性分析技术包括:从二进制固件代码和漏洞代码中提取特征,然后对特征进行编码,最后对编码后的特征进行相似度计算,以确定二进制固件代码中是否存在漏洞。具体的,根据采用的深度学习模型和输入模型的数据类型,可以分为基于时序的方法和基于图的方法。其中,基于时序的方法将代码表示为文本序列作为模型输入,基于图的方法将代码表示为图结构作为模型输入。
同源性分析技术的基本思路是从二进制固件代码和漏洞代码中提取特征,进行某种形式的编码,然后对编码后的特征进行相似度计算,以确定二进制固件代码中是否存在漏洞。FirmUp将函数进行基本块级别的拆分,接着将基本块进一步切片成更小的片段,再将这种片段中的寄存器名和地址偏移归一化,以函数为单位制成一张表,以两个表中相同的代码片段的数量作为相似度比较的依据。discovRE提取更轻量级的语法级别特征来加速特征提取,并且在图匹配之前通过简单的函数级特征进行预过滤,以提升搜索的效率。
然而,现有二进制代码漏洞搜索方法存在一些不容忽视的问题。首先,现有方法多采用人工定义和筛选的代码特征作为相似特征。特征向量中的每一维度代表一种代码属性,默认不同属性之间互不相关且对相似性的影响大小相同。然而,这种数值统计特征很容易会引入潜在的人为偏见,无法捕获二进制代码中潜在的语法和语义结构。此外,现有基于学习的二进制相似性技术中,大多将指令视为一个单词,作为词嵌入模型的输入,忽略指令级中操作符或操作数的微小变化对语义信息的影响。由于编译过程中引入的随机性,两个功能相同的代码片段在指令顺序、寄存器名称,内存地址等方面均有可能存在不同。如果这种指令级的变化无法体现在语义特征中,很容易导致较高的误报率。最后,现有基于学习的二进制相似性技术,大多直接将控制流图与基本块特征结合形成属性控制流图,作为图嵌入网络的输入,较少关注于控制流图的结构特征。编译过程中优化策略的不同会导致同一源码编译而来的二进制代码的控制流图结构不同。如果控制流图的结构信息,如节点重要性等,无法体现在函数特征中,很容易导致较高的误报率。
有鉴于此,本申请实施例提供了一种漏洞检测方法、装置、电子设备及存储介质。其中,漏洞检测方法基于深度学习进行检测,包括:获取待检测代码片段,对所述待检测代码片段进行预处理,确定指令序列和控制流图;根据所述指令序列,通过预先构建的自然语言处理模型进行特征提取,确定函数序列特征;根据所述控制流图,通过预先构建的图嵌入神经网络进行特征提取,确定函数图结构特征;将所述函数序列特征和所述函数图结构特征输入预先构建的多层反应机进行特征融合,确定若干函数特征向量;确定相邻的所述函数特征向量的相似度,根据所述相似度进行漏洞检测。本申请利用自然语言处理模型按照指令、基本块、函数的顺序逐层构建函数的特征表示。在关注指令信息变化的同时,消除数值统计特征引入的潜在偏见,能够很好地抵抗指令集、编译选项等对代码语法的影响。通过构建神经网络和引入注意力机制将控制流图嵌入成低维稠密的数值向量,以实现对图结构中节点重要性等信息的关注,通过计算向量间的相似度计算,实现漏洞的检测和定位,有利于提高漏洞检测的准确性和效率。
如图1所示,所述漏洞检测方法,包括:
步骤S102、获取待检测代码片段,对所述待检测代码片段进行预处理,确定指令序列和控制流图;
步骤S104、根据所述指令序列,通过预先构建的自然语言处理模型进行特征提取,确定函数序列特征;
步骤S106、根据所述控制流图,通过预先构建的图嵌入神经网络进行特征提取,确定函数图结构特征;
步骤S108、将所述函数序列特征和所述函数图结构特征输入预先构建的多层感知机进行特征融合,确定若干函数特征向量;
步骤S110、确定相邻的所述函数特征向量的相似度,根据所述相似度进行漏洞检测。
步骤S102中,待检测代码片段中代码为二进制代码。如图2所示,本申请的漏洞检测方法主要包括:预处理、特征构建以及相似度度量三个部分。
进一步的,预处理部分包括:当确定待检测代码片段后,需要对待检测代码片段进行预处理,响应于确定预处理完成才可以确定指令序列和控制流图。具体的,预处理的流程包括:首先,通过反汇编工具对二进制代码进行反编译,确定源代码;然后,通过预先编写的脚本文件调用源代码中的DAPython插件中的各项接口,从而提取二进制代码片段对应的指令序列和控制流图。其中,反汇编工具可以是IDA Pro(Interactive DisassemblerProfessional,交互式反汇编器专业版)工具,IDA Pro工具为静态反编译软件;用于调用的脚本文件通过Python程序语言编写。
需要说明的是,反编译是一个对目标可执行程序进行逆向分析,从而得到原始代码的过程。根据待检测片段的源代码的类型的不同,也可以通过其他的反编译工具对待检测片段进行反编译,其中,源代码的类型与编写源代码的开发平台有关。例如,当编写源代码的开发平台为Java时,可以通过Jadclipse、jad、JD-GUI、JD-GUI、uuDeJava等反编译工具中的任意一个进行反编译,确定源代码。所述指令序列是指多条(或很多条)指令的机器码以字节为基本单位顺序拼接形成的线性的队列。
在一些可选的实施方式中,在确定二进制代码片段对应的指令序列和控制流图后,将指令序列和控制流图分别存储于txt文件中,以便于后续进行特征构建以及相似度度量。
在步骤S104中,如图3所示,通过预先构建的自然语言处理模型对指令序列进行特征提取,确定函数序列特征,包括:归一化处理、指令特征表示模块、序列特征构建模块三个部分。其中,指令序列的排列方式为顺序排列。
具体的,归一化处理包括:首先,将指令序列中的低频词抽象为统一标签,例如,将数值抽象为num、地址抽象为addr等;其中,将低频词抽象为统一标签主要考虑到指令序列中存在的未登录词;未登录词,即没有被收录在分词词表中但必须切分出来的词。
指令特征表示模块的处理过程包括:完成对指令序列的归一化处理后,将归一化后的指令序列中的任一指令的一个操作符和多个操作数均作为一个单词,记做wt,并根据单词进行特征提取,确定函数序列特征,包括:利用Skip-Gram模型(即跳字模型)将其嵌入数值向量。其中,指令序列中的任一指令包括一个操作符和多个操作数。
需要说明的是,Skip-Gram模型包括:Input层、Hidden层以及Output层,其中,Input输入的是1*V的one-hot向量x(其中V为Skip-Gram模型的词典大小);Hidden构建一个大小为V*N的嵌入矩阵W(其中N为词向量的维度),所以用这个W和x相乘,得到最终Hidden的输出,大小为1*N;Output构建一个大小为N*V的矩阵W’,用W’和Hidden的输出相乘得到最终的输出,大小为1*V。skip-gram的训练过程是中心词和一个周围词组成一个训练样本。Skip-Gram模型的基本原理是是根据中心词来预测上下文单词。对于每个单词wt,会选择一个上下文窗口m,目标是要预测出范围内的上下文单词,使预测概率p(wt+j|wt)最大,其中,通过最小化如下式所示的损失函数以实现将单词嵌入向量:
其中,p(wt+j|wt)为预测概率,θ为训练的参数,t为文本中的一个单词,j为上下文窗口中的一个单词。
在一些可选的实施方式中,对于单独指令特征,通过自注意力机制来捕获一条指令中操作符和操作数、操作数和操作数之间的语义特征和相互依赖的关系,即也可以理解为每个单词之间的语义特征和相互依赖的关系。具体包括:首先,对于每个单词的嵌入向量,创建一个Query向量、一个Key向量和一个Value向量。其次,根据当前单词的Query向量对输入句子的每个词进行评分,分数代表了与其他单词的相关度。分数通过对Query向量与各个单词的Key向量进行点积、缩放和softmax归一化得到。
进一步的,如下所示,将Value向量乘以softmax分数得到加权分数,对加权分数进行求和得到当前单词的注意力值
Att(Q,K,V)=ω(QKT)V
其中,Q为Query向量,K为Key向量,V为Value向量,T为矩阵的转置,ω为缩放函数。
在一些可选的实施方式中,通过注意力机制,操作符和操作数的嵌入向量融合形成单独指令的数特征向量Fins。将单独指令特征按照执行顺序排列形成特征矩阵,作为函数序列特征Fseq。
在步骤S106中,如图4所示,根据所述控制流图,通过预先构建的图嵌入神经网络进行特征提取,确定函数图结构特征的处理流程包括:归一化处理、语义特征提取部分和图结构特征构建部分。
具体的,归一化处理阶段,包括将控制流图转化为邻接矩阵,以便于输入模型,并对基本块中的指令进行提取和清洗;在语义特征提取阶段,本方法通过自然语言处理模型以提取控制流图的节点语义特征。本申请首先利用Word2vec模型(词向量模型),将一条指令视为一个单词,将基本块中的指令嵌入为数值特征。然后,采用TextRCNN模型(文本分类模型),在学习语义表达时考虑其上下文信息,融合指令嵌入融合形成基本块特征。最后,基本块特征和控制流图结构(邻接矩阵)作为图神经网络的输入。
进一步的,如图4所示,根据图神经网络对具有节点特征的图结构进行特征提取,确定图结构特征。具体包括:消息传递阶段和读出阶段,其中,消息传递阶段用于确定消息向量、传递消息向量,并从传递的消息向量中确定有用信息,读出阶段用于对任一节点级别的表示进行计算,确定图级别的表示,并图级别的表示将作为函数图结构特征Fgraph。
在一些实施方式中,通过如下所示公式进行消息传递:
其中,为邻居的消息发送,/>为聚合函数,u为节点v的一个邻居节点,N(v)为v的邻居节点集合,v为表示当前节点,/>为t-1层节点v的特征。
在一些实施方式中,将所述函数序列特征和所述函数图结构特征输入预先构建的多层感知机进行特征融合,确定若干函数特征向量,包括:将函数序列特征和函数图结构特征作为预先构建的多层感知机的输入,通过在多层感知机的输入层和输出层之间设置多个非线性层,然后将前一层的值进行加权线性求和转换,进一步的对大量已标记的二进制代码数据集中进行监督训练,生成能充分代表二进制代码片段的特征向量。
在一些可选的实施方式中,将函数序列特征和函数图结构特征输入多层感知机后,通过如下所示目标函数进行计算确定若干函数特征向量:
Ffinc=f(αFseq+βFgraph)
其中,α和β是待学习的参数,f为映射函数,Fseq为函数序列特征,Fgraph为函数图结构特征。
在一些实施例中,通过如下所示的余弦相似度公式计算相邻的所述函数特征向量的相似度,以根据相似度完成漏洞检测和漏洞定位:
其中,x为Ffunc函数特征向量的目标函数,即深度特征表示,y为漏洞样本库任一条数据。
在一些实施例中,相似性分数范围为0至1。对于相似度分数,数值越接近1,两个函数的特征向量越相似。如果相似性分数大于预定义的阈值,则认为目标二进制函数与漏洞相似。
从上面所述可以看出,本申请提供的漏洞检测方法、装置、电子设备、存储介质及程序产品,包括:获取待检测代码片段,对所述待检测代码片段进行预处理,确定指令序列和控制流图;根据所述指令序列,通过预先构建的自然语言处理模型进行特征提取,确定函数序列特征;根据所述控制流图,通过预先构建的图嵌入神经网络进行特征提取,确定函数图结构特征;将所述函数序列特征和所述函数图结构特征输入预先构建的多层反应机进行特征融合,确定若干函数特征向量;确定相邻的所述函数特征向量的相似度,根据所述相似度进行漏洞检测。利用深度学习模型提取二进制代码的函数序列特征和函数图结构特征能够消除人为选取特征引入的偏见,有效地关注于易被忽略的特征。进一步通过融合函数序列特征和函数图结构特征形成深度特征表示,使得函数特征具有多层次且丰富的信息,有利于提高漏洞检测的准确性和效率。
需要说明的是,本申请实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本申请实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本申请的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种漏洞检测装置。
参考图5,所述漏洞检测装置,包括:
预处理模块,被配置为获取待检测代码片段,对所述待检测代码片段进行预处理,确定指令序列和控制流图;
第一特征确定模块,被配置为根据所述指令序列,通过预先构建的自然语言处理模型进行特征提取,确定函数序列特征;
第二特征确定模块,被配置为根据所述控制流图,通过预先构建的图嵌入神经网络进行特征提取,确定函数图结构特征;
特征融合模块,被配置为将所述函数序列特征和所述函数图结构特征输入预先构建的多层感知机进行特征融合,确定若干函数特征向量;
检测模块,被配置为确定相邻的所述函数特征向量的相似度,根据所述相似度进行漏洞检测。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
上述实施例的装置用于实现前述任一实施例中相应的漏洞检测方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上任意一实施例所述的漏洞检测方法。
图6示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
上述实施例的电子设备用于实现前述任一实施例中相应的漏洞检测方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的漏洞检测方法。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的漏洞检测方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例所述的漏洞检测方法相对应的,本公开还提供了一种计算机程序产品,其包括计算机程序指令。在一些实施例中,所述计算机程序指令可以由计算机的一个或多个处理器执行以使得所述计算机和/或所述处理器执行所述的色彩矫正方法。对应于所述的色彩矫正方法各实施例中各步骤对应的执行主体,执行相应步骤的处理器可以是属于相应执行主体的。
上述实施例的计算机程序产品用于使所述计算机和/或所述处理器执行如上任一实施例所述的漏洞检测方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本申请的范围(包括权利要求)被限于这些例子;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本申请实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本申请实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本申请实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本申请实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本申请的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本申请实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本申请的具体实施例对本申请进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本申请实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本申请实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种漏洞检测方法,其特征在于,包括:
获取待检测代码片段,对所述待检测代码片段进行预处理,确定指令序列和控制流图;
根据所述指令序列,通过预先构建的自然语言处理模型进行特征提取,确定函数序列特征;
根据所述控制流图,通过预先构建的图嵌入神经网络进行特征提取,确定函数图结构特征;
将所述函数序列特征和所述函数图结构特征输入预先构建的多层感知机进行特征融合,确定若干函数特征向量;
确定相邻的所述函数特征向量的相似度,根据所述相似度进行漏洞检测。
2.根据权利要求1所述的方法,其特征在于,所述待检测代码片段中代码为二进制代码;
所述对所述待检测代码片段进行预处理,确定指令序列和控制流图,包括:
通过反汇编工具对所述待检测代码片段进行反编译,确定所述指令序列和所述控制流图。
3.根据权利要求1所述的方法,其特征在于,所述指令序列中任一指令包括一个操作符和若干操作数;
所述根据所述指令序列,通过预先构建的自然语言处理模型进行特征提取,确定函数序列特征,包括:
根据所述指令序列,确定单词序列;其中,任一所述指令中的所述操作符和所述操作数为一个单词;
通过词嵌入模型,对所述单词序列中的任一所述单词进行数值向量嵌入,确定数值向量序列;
根据所述数值向量序列,通过所述自然语言处理模型,确定任一指令的数值特征向量;
对所述数值特征向量进行顺序排序,确定特征矩阵,并将所述特征向量作为所述函数序列特征。
4.根据权利要求3所述的方法,其特征在于,所述方法,还包括:
所述自然语言处理模型为自注意力机制。
5.根据权利要求1所述的方法,其特征在于,所述根据所述控制流图,通过预先构建的图嵌入神经网络进行特征提取,确定函数图结构特征,包括:
对所述控制流图进行归一化,确定邻接矩阵;
根据所述邻接矩阵,通过预先构建的文本分类模型进行语义提取,确定基本块特征;
将所述基本块特征和所述邻接矩阵输入所述图嵌入神经网络,确定所述函数图结构特征。
6.根据权利要求1所述的方法,其特征在于,所述将所述基本块特征和所述邻接矩阵输入所述图嵌入神经网络,确定所述函数图结构特征,包括:
根据所述邻接矩阵,确定任一节点的节点特征;
对任一对相邻节点的所述节点特征进行聚合,确定消息向量,并根据所述消息向量对所述邻接矩阵的节点进行更新;
响应于确定完成更新,根据更新后的所述邻接矩阵,确定所述函数图结构特征。
7.一种漏洞检测装置,其特征在于,包括:
预处理模块,被配置为获取待检测代码片段,对所述待检测代码片段进行预处理,确定指令序列和控制流图;
第一特征确定模块,被配置为根据所述指令序列,通过预先构建的自然语言处理模型进行特征提取,确定函数序列特征;
第二特征确定模块,被配置为根据所述控制流图,通过预先构建的图嵌入神经网络进行特征提取,确定函数图结构特征;
特征融合模块,被配置为将所述函数序列特征和所述函数图结构特征输入预先构建的多层感知机进行特征融合,确定若干函数特征向量;
检测模块,被配置为确定相邻的所述函数特征向量的相似度,根据所述相似度进行漏洞检测。
8.一种电子设备,包括存储器、处理器及存储在所述存储器上并可由所述处理器执行的计算机程序,所述处理器在执行所述计算机程序时实现根据权利要求1至6中任意一项所述的方法。
9.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使计算机执行根据权利要求1至6中任意一项所述的方法。
10.一种计算机程序产品,包括计算机程序指令,当所述计算机程序指令在计算机上运行时,使得计算机执行如权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310450067.4A CN116663008A (zh) | 2023-04-24 | 2023-04-24 | 漏洞检测方法、装置、电子设备、存储介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310450067.4A CN116663008A (zh) | 2023-04-24 | 2023-04-24 | 漏洞检测方法、装置、电子设备、存储介质及程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116663008A true CN116663008A (zh) | 2023-08-29 |
Family
ID=87717977
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310450067.4A Pending CN116663008A (zh) | 2023-04-24 | 2023-04-24 | 漏洞检测方法、装置、电子设备、存储介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116663008A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117608539A (zh) * | 2023-11-02 | 2024-02-27 | 清华大学 | 二进制代码的表示向量生成方法、装置、设备及存储介质 |
-
2023
- 2023-04-24 CN CN202310450067.4A patent/CN116663008A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117608539A (zh) * | 2023-11-02 | 2024-02-27 | 清华大学 | 二进制代码的表示向量生成方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110363231B (zh) | 基于半监督深度学习的异常识别方法、装置及存储介质 | |
CN106778241B (zh) | 恶意文件的识别方法及装置 | |
CN113868497A (zh) | 一种数据分类方法、装置和存储介质 | |
Zhu et al. | Android malware detection based on multi-head squeeze-and-excitation residual network | |
CN112307473A (zh) | 一种基于Bi-LSTM网络和注意力机制的恶意JavaScript代码检测模型 | |
CN109905385A (zh) | 一种webshell检测方法、装置及系统 | |
CN112989363B (zh) | 漏洞定位方法、装置、电子设备和存储介质 | |
CN110730164B (zh) | 安全预警方法及相关设备、计算机可读存储介质 | |
Meijin et al. | A systematic overview of android malware detection | |
CN112214623A (zh) | 一种面向图文样本的高效监督图嵌入跨媒体哈希检索方法 | |
CN116663008A (zh) | 漏洞检测方法、装置、电子设备、存储介质及程序产品 | |
CN116304307A (zh) | 一种图文跨模态检索网络训练方法、应用方法及电子设备 | |
CN116361788A (zh) | 一种基于机器学习的二进制软件漏洞预测方法 | |
CN112949320B (zh) | 基于条件随机场的序列标注方法、装置、设备及介质 | |
CN110019952B (zh) | 视频描述方法、系统及装置 | |
Tang et al. | Deep learning-based solution for smart contract vulnerabilities detection | |
CN113239237B (zh) | 跨媒体大数据搜索方法及装置 | |
Omar et al. | From text to threats: A language model approach to software vulnerability detection | |
CN111339760A (zh) | 词法分析模型的训练方法、装置、电子设备、存储介质 | |
CN114238968A (zh) | 应用程序检测方法及装置、存储介质及电子设备 | |
CN113836297A (zh) | 文本情感分析模型的训练方法及装置 | |
CN111368164A (zh) | 一种爬虫识别模型训练、爬虫识别方法、装置、系统、设备及介质 | |
Song et al. | Multi-model Smart Contract Vulnerability Detection Based on BiGRU | |
CN118036005B (zh) | 基于精简调用图的恶意应用检测方法、系统、设备及介质 | |
CN118036006B (zh) | 基于敏感api的恶意软件检测方法、系统、设备及介质 |
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 |