CN111639344B - 一种基于神经网络的漏洞检测方法及装置 - Google Patents
一种基于神经网络的漏洞检测方法及装置 Download PDFInfo
- Publication number
- CN111639344B CN111639344B CN202010756148.3A CN202010756148A CN111639344B CN 111639344 B CN111639344 B CN 111639344B CN 202010756148 A CN202010756148 A CN 202010756148A CN 111639344 B CN111639344 B CN 111639344B
- Authority
- CN
- China
- Prior art keywords
- binary file
- function
- neural network
- graph
- semantic
- 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
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/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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/35—Clustering; Classification
- G06F16/353—Clustering; Classification into predefined classes
-
- 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
- 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/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Mathematical Physics (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Databases & Information Systems (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于神经网络的漏洞检测方法及装置,所述方法包括:利用已知漏洞的二进制文件作为训练样本,利用提取二进制文件的函数对应的特征向量方法,提取与二进制文件的函数对应的特征向量,训练神经网络模型;得到训练好的神经网络模型;向所述训练好的神经网络模型输入目标二进制文件的函数对应的特征向量,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的函数对应的特征向量;进行函数级别相似性比较,根据相似性比较结果,检测目标二进制文件的漏洞。根据本发明的方案,充分考虑了代码的语义信息,能够准确检测到跨体系的二进制文件的漏洞。
Description
技术领域
本发明涉及计算机信息安全领域,尤其涉及一种基于神经网络的漏洞检测方法及装置。
背景技术
随着计算机信息技术的飞速发展,网络空间安全日益重要,因为软件漏洞导致的网络事件呈高发趋势,对网络空间安全造成了很大的威胁。漏洞分析技术成为网络安全领域的研究热点。
漏洞检测是漏洞分析技术的一个重要分支,多是从已有漏洞出发,查找与其存在同源关系的相似漏洞甚至根据漏洞代码特征发现未公开的漏洞。在源码级别进行漏洞检测的技术已经较为成熟,有许多专业工具可以使用自动化的漏洞检测方法,对程序源码进行检测并提供安全性建议。但这些工具不能检测源码未知的二进制文件。例如当前许多广泛使用的软件的源码是未知的,如商业软件MS Office和免费闭源软件Adobe Reader、Flash,并且由于在开发过程中存在代码重用,并使用第三方组件,因此,即使这些软件的源码是未知的,但第三方组件中的漏洞也会扩散到这些二进制应用软件中。二进制应用软件中的组件漏洞可以跨软件对不同类型的软件造成安全隐患。因此,迫切需要对二进制软件进行漏洞检测。
同时,越来越多的软件针对不同的CPU架构进行交叉编译,由于不同架构的二进制文件在指令集、函数偏移量和函数调用约定方面存在差异,会导致某个在特定体系结构(如intel x86)下受到广泛关注的漏洞得到了修复,但与其源码相同但应用于另一个体系结构(如ARM)的文件中的漏洞并未得到发现及关注,仍存在相当大的安全隐患。如果交叉编译的软件中包含了广泛使用的但是存在漏洞的第三方组件,会导致漏洞不仅在传统PC机上传播到可执行文件,还会传播于硬件攻击厂商使用该代码库在不同CPU架构上运行不同设备编译的固件,所述不同设备可以是家用路由器、摄像头、VoIP电话。在实际应用中,固件厂商经常在发布的固件中包含很多第三方组件,并且部分代码发布年代较为久远,且这些组件代码在出现漏洞后,固件厂商并不会及时更新其固件中的相应代码,例如,在OpenSSL中发现了HeartBleed漏洞之后,在各种体系结构,如x86、MIPS、ARM、PowerPC等体系结构上运行的受影响的闭源代码软件越来越多。
由源码编译为二进制文件过程中,编译器会对代码进行优化,出现函数内联、指令重排序、指令转换、冗余消除等,这样,即使使用相同的编译器编译源代码,也可能会生成改变的二进制文件。而同一源码可以针对不同CPU架构进行交叉编译,导致的指令、函数调用方面存在的差异导致跨架构的二进制文件漏洞检测更为困难。
现有的检测二进制文件漏洞的方法有,Pewny等人提出的使用漏洞签名来搜索二进制代码中不同体系结构的已知漏洞,该方案对于大型代码库效率较低,无法进行有效扩展。Eschweiler等人解决的是在不同编译器、不同编译选项、不同操作系统和不同CPU架构条件下的大规模二进制漏洞搜索问题。
Genius和Gemini是关于跨体系结构漏洞搜索的两个最具代表性的工具。它们分别利用传统的机器学习和深度学习,将函数的CFG转化为向量进行相似性比较。2016年Feng等人引入一种解决方案Genius,给定一个固件二进制函数,Genius首先以属性化控制流图ACFG(attributed control flow graph)的形式提取原始特征,采用一种基于代码本(codebook-based)的方法来嵌入ACFG。但该方案中,代码本生成是一个非常昂贵的过程,因此,生成代码本的质量受到训练数据集的规模的限制。Xu等人在Gemini中使用了嵌入,首先使用原始特征提取的方法提取函数内部的代码特征,定义带属性的控制流图(ACFG,attributed control flow graph)记录除了函数内部节点之间的控制依赖关系外,还记录基本块节点内的数字化统计属性以及节点之间的结构化特征,包括了函数内部字符常量的个数、数字常量的个数、转移指令数、调用指令数、算术指令数、总指令数以及节点的后代数目、介数。得到带有属性的控制流图后,使用图嵌入神经网络进行代码属性的嵌入,得到能够表征代码特征的向量,使用神经网络对已经标记并提取到特征向量的数据进行训练,得到有效的训练模型。再使用同样的特征提取方法对固件和漏洞相关代码的代码特征进行提取,生成特征向量,将向量值作为代码的特征存储于数据库中,使用训练好的神经网络模型对固件中的可疑代码与漏洞代码进行相似性打分,从而筛选出可能存在漏洞代码的固件程序。但该方式依赖于数据统计特征,对代码的语义信息考虑过少,存在漏报率高的问题。
Gao等人基于语义学习对跨平台二进制漏洞进行搜索,将数据流图和控制流图融合为语义流图,使用DNN模型进行向整个二进制函数的向量嵌入,但这种方法的准确度低。Zuo等人借鉴自然语言处理的方法进行二进制代码分析。Baldoni等人使用深度神经网络进行图嵌入,并使用Siamese结构进行参数学习。David等人将二进制代码转换为中间表示,函数被分为若干段独立的代码,生成一个作为散列链集合的签名。但该方案将签名转换成实数向量并不能直接输入到其他机器学习算法中。
发明内容
为解决上述技术问题,本发明提出了一种基于神经网络的漏洞检测方法及装置,所述方法及装置,用以解决现有技术中进行漏洞检测时,对二进制文件的漏洞检测效率低、对代码的语义信息考虑过少,漏报率高,不能准确检测到跨体系的二进制文件的漏洞的技术问题。
根据本发明的第一方面,提供一种基于神经网络的漏洞检测方法,所述方法包括以下步骤:
步骤S201:利用同源但不同架构和不同优化级别得到的二进制文件作为训练样本,利用提取二进制文件的函数对应的特征向量方法,提取与二进制文件的函数对应的特征向量,训练神经网络模型;得到训练好的神经网络模型;
步骤S202:输入目标二进制文件,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件;利用提取二进制文件的函数对应的特征向量方法,获取目标二进制文件的函数对应的特征向量,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的函数对应的特征向量;
步骤S203:向所述训练好的神经网络模型输入目标二进制文件的函数对应的特征向量,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的函数对应的特征向量;进行函数级别相似性比较,根据相似性比较结果,检测目标二进制文件的漏洞;
所述提取二进制文件的函数对应的特征向量方法,包括:
步骤S204:对二进制文件的基本块基于skip-thoughts提取基本块代码语义特征;
步骤S205:提取二进制文件的函数级别代码结构化语义特征,生成与二进制文件的函数对应的特征向量。
进一步地,所述步骤S204:对二进制文件的基本块基于skip-thoughts提取基本块代码语义特征,包括:
步骤S2041:对二进制文件进行指令代码预处理;
步骤S2042:对基本块基于skip-thoughts提取语义特征,利用skip-thoughts中的编码器结构,对提取的所述基本块代码语义特征进行特征嵌入,生成向量,得到基本块代码语义特征。
进一步地,所述步骤S205:提取二进制文件的函数级别代码结构化语义特征,生成与二进制文件的函数对应的特征向量,包括:
步骤S2051:将函数中的基本块作为图结构的节点,获取图结构的节点语义特征及与结构相关的数字化特征,所述数字化特征包括基本块嵌入过程中的语义向量,也包括函数与其内部基本块属性中与结构相关的数字化特征,以二进制文件的控制流图为基础,将从基本块提取的语义特征与该数字化特征进行融合,得到函数图结构的信息,作为结构化语义嵌入的基础;所述基本块属性中与结构相关的数字化特征包括入度、出度、介数、函数参数个数;
步骤S2052:使用structure2vec神经网络将融合语义图转化为可以作为机器学习模型输入的图嵌入向量,即生成最终图嵌入向量;通过图嵌入网络找到的评价函数可以整合函数中距离某一个节点2步甚至3步以外的所有邻居的信息,并将信息压缩成一个有限维的非线性向量;使用基于深度神经网络(DNN)模型的包含语义的方法来处理函数结构化语义表达,得到二进制文件的函数对应的特征向量。
进一步地,所述步骤S203:向所述训练好的神经网络模型分别输入目标二进制文件的函数对应的特征向量,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的函数对应的特征向量;进行函数级别相似性比较,根据相似性比较结果,检测目标二进制文件的漏洞,具体地:
向训练好的Siamese神经网络模型输入目标二进制文件的函数对应的特征向量,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的函数对应的特征向量,分别得到目标二进制文件以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的函数对应的融合语义图,得到分别对应于这两个二进制代码文件函数的图嵌入向量μ1和μ2,对μ1和μ2进行向量的相似性比较,cosine距离计算两个图嵌入向量μ1和μ2的相似性,根据相似性检测二进制文件的漏洞;所述目标二进制文件为待检测漏洞的二进制文件。
根据本发明第二方面,提供一种基于神经网络的漏洞检测装置,所述装置包括:
训练模块:利用同源但不同架构和不同优化级别得到的二进制文件作为训练样本,利用特征向量生成模块,提取与二进制文件的函数对应的特征向量,训练神经网络模型;得到训练好的神经网络模型;
特征获取模块:输入目标二进制文件,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件;利用提取二进制文件的函数对应的特征向量方法,获取目标二进制文件的函数对应的特征向量,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的函数对应的特征向量;
比较模块:向所述训练好的神经网络模型输入目标二进制文件的函数对应的特征向量,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的函数对应的特征向量;进行函数级别相似性比较,根据相似性比较结果,检测目标二进制文件的漏洞;
所述特征向量生成模块,包括:
基本块特征提取子模块:对二进制文件的基本块基于skip-thoughts提取基本块代码语义特征;
函数特征提取子模块:提取二进制文件的函数级别代码结构化语义特征,生成与二进制文件的函数对应的特征向量。进一步地,所述基本块特征提取子模块,包括:
预处理子模块:对二进制文件进行指令代码预处理;
向量生成子模块:对基本块基于skip-thoughts提取语义特征,利用skip-thoughts中的编码器结构,对提取的所述基本块代码语义特征进行特征嵌入,生成向量,得到基本块代码语义特征。
进一步地,所述函数特征提取子模块,包括:
函数图生成子模块:将函数中的基本块作为图结构的节点,获取图结构的节点语义特征及与结构相关的数字化特征,所述数字化特征包括基本块嵌入过程中的语义向量,也包括函数与其内部基本块属性中与结构相关的数字化特征,以二进制文件的控制流图为基础,将从基本块提取的语义特征与该数字化特征进行融合,得到函数图结构的信息,作为结构化语义嵌入的基础;所述基本块属性中与结构相关的数字化特征包括入度、出度、介数、函数参数个数;
最终图嵌入向量生成子模块:使用structure2vec神经网络将融合语义图转化为可以作为机器学习模型输入的图嵌入向量,即生成最终图嵌入向量;通过图嵌入网络找到的评价函数可以整合函数中距离某一个节点2步甚至3步以外的所有邻居的信息,并将信息压缩成一个有限维的非线性向量;使用基于深度神经网络(DNN)模型的包含语义的方法来处理函数结构化语义表达,得到二进制文件的函数对应的特征向量。
进一步地,所述比较模块,包括:
第一比较子模块:向训练好的Siamese神经网络模型输入目标二进制文件的函数对应的特征向量,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的函数对应的特征向量,分别得到目标二进制文件以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的函数对应的融合语义图,得到分别对应于这两个二进制代码文件函数的图嵌入向量μ1和μ2,对μ1和μ2进行向量的相似性比较,cosine距离计算两个图嵌入向量μ1和μ2的相似性,根据相似性检测二进制文件的漏洞;所述目标二进制文件为待检测漏洞的二进制文件。
根据本发明第三方面,提供一种基于神经网络的漏洞检测系统,包括:
处理器,用于执行多条指令;
存储器,用于存储多条指令;
其中,所述多条指令,用于由所述存储器存储,并由所述处理器加载并执行如前所述的基于神经网络的漏洞检测方法。
根据本发明第四方面,提供一种计算机可读存储介质,所述存储介质中存储有多条指令;所述多条指令,用于由处理器加载并执行如前所述的基于神经网络的漏洞检测方法。
根据本发明的上述方案,使用神经网络模型skip-thoughts记录基本块中的代码上下文信息,结合结构化数字特征,得到基本块的语义和结构特征,获取函数级别的语义特征,并使用神经网络进行训练,实现向量相似性的比较以检测漏洞。还可以对已公布的漏洞代码特征进行提取和学习,实现跨架构的二进制相似漏洞代码搜索和特征学习,获得以下效果:1)对第三方组件漏洞搜索,可以找到使用同一组件在不同编译条件下的对应二进制漏洞;2)基于常用架构(Intel X86)下的已有漏洞进行跨架构搜索,可以找到已经修复,而在工控系统以及物联网中的固件中依然存在的漏洞;3)对已有漏洞进行有效特征提取,可以辅助与其机理相同的未知漏洞发现;4)实现的代码搜索技术可以应用于二进制文件代码剽窃检测,恶意代码检测等领域中。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明提供如下附图进行说明。在附图中:
图1为本发明一个实施方式的基于神经网络的漏洞检测方法流程图;
图2为本发明一个实施方式的基本块语义特征提取方法示意图;
图3为本发明一个实施方式的基于skip-thoughts的编码-解码器结构示意图;
图4为本发明一个实施方式的图嵌入过程示意图;
图5为本发明一个实施方式的相似性比较示意图;
图6为比较三个工具的ROC曲线示意图;
图7为检测CVE-2015-1791漏洞流程图;
图8为本发明一个实施方式的基于神经网络的漏洞检测装置结构框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
定义:
漏洞:漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。
神经网络:人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connection Model),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的
Siamese网络:Siamese网络是一种相似性度量方法,当类别数多,但每个类别的样本数量少的情况下可用于类别的识别、分类等。
自然语言处理NLP:自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。
CFG 控制流图:Control Flow Graph,是一个过程或程序的抽象表现,是用在编译器中的一个抽象数据结构,由编译器在内部维护,代表了一个程序执行过程中会遍历到的所有路径。它用图的形式表示一个过程内所有基本块执行的可能流向,也能反映一个过程的实时执行过程。
DFG 数据流图:Data Flow Graph,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程。
Structure2vec: 是一个强大的异构网络深度学习和推理平台,能够同时整合节点特征,边特征,异构网络结构以及网络动态演化特征的深度学习和推理的嵌入技术,它不仅可以对网络中的节点和边进行推理,还可以对节点,边,甚至子图进行向量化。
基本块:是指程序顺序执行的语句序列,其中只有一个入口和一个出口,入口就是其中的第一个语句,出口就是其中的最后一个语句。对一个基本块来说,执行时只从其入口进入,从其出口退出。
首先结合图1说明为本发明一个实施方式的基于神经网络的漏洞检测方法流程图。如图1所示,所述方法包括以下步骤:
步骤S201:利用同源但不同架构和不同优化级别得到的二进制文件作为训练样本,利用提取二进制文件的函数对应的特征向量方法,提取与二进制文件的函数对应的特征向量,训练神经网络模型;得到训练好的神经网络模型;
步骤S202:输入目标二进制文件,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件;利用提取二进制文件的函数对应的特征向量方法,获取目标二进制文件的函数对应的特征向量,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的函数对应的特征向量;
步骤S203:向所述训练好的神经网络模型输入目标二进制文件的函数对应的特征向量,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的函数对应的特征向量;进行函数级别相似性比较,根据相似性比较结果,检测目标二进制文件的漏洞;
所述提取二进制文件的函数对应的特征向量方法,包括:
步骤S204:对二进制文件的基本块基于skip-thoughts提取基本块代码语义特征;
步骤S205:提取二进制文件的函数级别代码结构化语义特征,生成与二进制文件的函数对应的特征向量。
以下说明本发明的总体架构。首先对二进制文件的基本块的代码进行预处理,之后对基本块提取语义特征和嵌入,构建相应的代码特征数据库,利用由神经网络训练好的训练模型对不同体系的同源二进制文件进行函数级别相似性比较,实现对跨平台软件的疑似漏洞的检测。
所述步骤S204:对二进制文件的基本块基于skip-thoughts提取基本块代码语义特征,以下结合图2说明提取语义特征的方法,所述步骤S204包括:
步骤S2041:对二进制文件进行指令代码预处理;
预处理是处理指令中的操作数,基于现有的方法,丰富后续提取的特征内容,并在一定程度上能够缓解自然语言处理的OOV(out of vocabulary)问题。指令代码预处理时,将操作数中的内存基址全部替换为MEM,将数值超过预设阈值的立即数全部替换为IMME。
步骤S2042:对基本块基于skip-thoughts提取语义特征,利用skip-thoughts中的编码器结构,对提取的所述基本块代码语义特征进行特征嵌入,生成向量,得到基本块代码语义特征。
以下结合图3说明本发明一个实施方式的基于skip-thoughts的编码-解码器结构,所述步骤S2042包括:
二进制文件的指令按照其结构可以进行分层,分别为指令级别、基本块级别和函数级别。对基本块基于skip-thoughts提取语义特征时,将二进制文件中的单独指令看成是自然语言处理中的“单词”,将基本块看成“句子”,函数看成“段落”。利用skip-thoughts中的编码-解码器结构,输入基本块所包含的指令序列,编码-解码器结构中的编码结构,可以将输入的指令序列输出为可以作为图嵌入网络输入的向量,并最大程度的表征该基本块的语义特征。即编码-解码器结构中的编码结构,可以将分层的指令生成对应的特征向量。
步骤S205:提取二进制文件的函数级别代码结构化语义特征,生成与二进制文件的函数对应的特征向量。
具体地,通过提取函数级别代码结构化语义特征,将函数内部节点和结构相关的属性信息进行收集,使用神经网络模型对得到的基本块级别的特征向量进行选择,以生成二进制文件的函数级别的向量。
本实施例中,基于Structure2vec构建图嵌入神经网络模型,完成函数级别的特征选择和向量嵌入。这里定义融合语义图ISSFG(integrated semantic structural flowgraph)来表征二进制文件中的函数f的特征。每一个函数可以使用融合语义图表示g=(V,E),其中图中的每一个节点vϵV 表征函数f的基本块,边eϵE表征函数中基本块之间的控制依赖关系。节点v不仅包含了skip-thoughts生成的基本块语义特征向量,还包括了节点在函数控制流图中的结构化数字特征,如介数和后代数。在进行向量嵌入时,嵌入的向量是结构图向量,所述结构图向量是将融合语义图输入神经网络,由神经网络经过计算输出表征函数语义的、用于嵌入的嵌入向量。
进一步地,得到二进制文件的函数对应的特征向量包括:
步骤S2051:将函数中的基本块作为图结构的节点,获取图结构的节点语义特征及与结构相关的数字化特征,所述数字化特征包括基本块嵌入过程中的语义向量,也包括函数与其内部基本块属性中与结构相关的数字化特征,以二进制文件的控制流图为基础,将从基本块提取的语义特征与该数字化特征进行融合,得到函数图结构的信息,作为结构化语义嵌入的基础;所述基本块属性中与结构相关的数字化特征包括入度、出度、介数、函数参数个数。
步骤S2052:使用structure2vec神经网络将融合语义图转化为可以作为机器学习模型输入的图嵌入向量,即生成最终图嵌入向量;通过图嵌入网络找到的评价函数可以整合函数中距离某一个节点2步甚至3步以外的所有邻居的信息,并将信息压缩成一个有限维的非线性向量;使用基于深度神经网络(DNN)模型的包含语义的方法来处理函数结构化语义表达,得到二进制文件的函数对应的特征向量。
图4示出了图嵌入过程示意图,输入为函数中的基本块节点特征和函数内部的结构化特征,使用structure2vec神经网络进行整合,输出为最终图嵌入向量。
所述步骤S201:利用同源但不同架构和不同优化级别得到的二进制文件作为训练样本,利用提取二进制文件的函数对应的特征向量方法,提取与二进制文件的函数对应的特征向量,训练神经网络模型;得到训练好的神经网络模型,具体地:
所述神经网络模型为基于Siamese网络构建的神经网络模型,并使用已知漏洞的二进制文件得到的、已经进行了标签处理的特征向量作为样本,对该神经网络模型进行训练,得到训练好的Siamese神经网络模型;
本实施例中,可以使用随机梯度下降对Siamese网络进行优化,梯度的参数根据样本对应的图的拓扑结构进行迭代计算。
所述步骤S203:向所述训练好的神经网络模型分别输入目标二进制文件的函数对应的特征向量,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的函数对应的特征向量;进行函数级别相似性比较,根据相似性比较结果,检测目标二进制文件的漏洞,具体地:
向训练好的Siamese神经网络模型输入目标二进制文件的函数对应的特征向量,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的函数对应的特征向量,分别得到目标二进制文件以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的函数对应的融合语义图,得到分别对应于这两个二进制代码文件函数的图嵌入向量μ1和μ2,对μ1和μ2进行向量的相似性比较,cosine距离计算两个图嵌入向量μ1和μ2的相似性,根据相似性检测二进制文件的漏洞;所述目标二进制文件为待检测漏洞的二进制文件。
结合图4,图4中上部分虚线框图中为structure2vec网络,为一个DNN模型,中间包含多个隐藏层,将图4下半部分的融合语义图作为输入,输出融合语义图的向量。
比较过程如图5所示,图5为本发明一个实施方式的相似性比较示意图。
以下实施例说明基于本发明实施例的基于神经网络的漏洞检测方法的实施效果。
在训练神经网络模型时,比较了本实施例方案ESFinder与Gemini和Vulseeker的性能。
训练的数据库主要包括Openssl(v1.0.1f and v1.0.1u)和BusyBox(v1.27.2),分别在X86, X64,MIPS32,MIPS64,ARM32 和ARM64平台进行编译,数据库中包含了196,854个函数,对其进行标签化处理并存储。
使用该数据库进行训练,比较三个工具的ROC(receiver operatingcharacteristic)曲线,如图6所示。
本实施例还可以检测CVE-2015-1791漏洞,OpenSSL是一种开放源码的SSL实现,用来实现网络通信的高强度加密,现在被广泛地用于各种网络应用程序中。OpenSSL0.9.8zg、1.0.0s、1.0.1n、1.0.2b之前版本,ssl/s3_clnt.c内的函数ssl3_get_new_session_ticket存在竞争条件,用于多线程客户端时,远程攻击者通过提供新NewSessionTicket令牌,利用此漏洞可造成拒绝服务(双重释放及应用崩溃)。具体检测过程如图7所示。
将存在漏洞的openssl版本中的关键函数ssl3_get_new_session_ticket进行特征提取,并提取目标程序的特征,使用本实施例中训练得到的神经网络模型进行相似性比较。目标程序选择的是AirCam下的libssl库,使用不同架构(arm32,arm64, mips32,mips64, X86,X64)以及不同优化级别(O0-O3),由于AirCam中对应的ssl3_get_new_session_tickets函数名并未进行优化,因此可以直接验证该函数与漏洞函数的打分值在所有函数中的排名,其中在arm和mips架构下的排序值如表1所示。
表1
可以看出,在arm下的排序值要好于mips,且其中有5项打分为1,可以看出在进行相似性排序时本实施例使用的模型的精确性较高。同时通过手工分析发现该二进制库实际为arm架构,也说明该模型对于架构选择的优势。
本发明实施例进一步给出一种基于神经网络的漏洞检测装置,如图8所示,所述装置包括:
训练模块:利用同源但不同架构和不同优化级别得到的二进制文件作为训练样本,利用特征向量生成模块,提取与二进制文件的函数对应的特征向量,训练神经网络模型;得到训练好的神经网络模型;
特征获取模块:输入目标二进制文件,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件;利用提取二进制文件的函数对应的特征向量方法,获取目标二进制文件的函数对应的特征向量,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的函数对应的特征向量;
比较模块:向所述训练好的神经网络模型输入目标二进制文件的函数对应的特征向量,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的函数对应的特征向量;进行函数级别相似性比较,根据相似性比较结果,检测目标二进制文件的漏洞;
所述特征向量生成模块,包括:
基本块特征提取子模块:对二进制文件的基本块基于skip-thoughts提取基本块代码语义特征;
函数特征提取子模块:提取二进制文件的函数级别代码结构化语义特征,生成与二进制文件的函数对应的特征向量。
本发明实施例进一步给出一种基于神经网络的漏洞检测系统,包括:
处理器,用于执行多条指令;
存储器,用于存储多条指令;
其中,所述多条指令,用于由所述存储器存储,并由所述处理器加载并执行如前所述的基于神经网络的漏洞检测方法。
本发明实施例进一步给出一种计算机可读存储介质,所述存储介质中存储有多条指令;所述多条指令,用于由处理器加载并执行如前所述的基于神经网络的漏洞检测方法。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,实体机服务器,或者网络云服务器等,需安装Windows或者Windows Server操作系统)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
Claims (4)
1.一种基于神经网络的漏洞检测方法,其特征在于,包括以下步骤:
步骤S201:利用同源但不同架构和不同优化级别得到的二进制文件作为训练样本,利用提取二进制文件的关键函数对应的特征向量方法,提取与二进制文件的关键函数对应的特征向量,训练神经网络模型;得到训练好的神经网络模型;
步骤S202:输入目标二进制文件,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件;利用提取二进制文件的关键函数对应的特征向量方法,获取目标二进制文件的关键函数对应的特征向量,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的关键函数对应的特征向量;
步骤S203:向所述训练好的神经网络模型输入目标二进制文件的关键函数对应的特征向量,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的关键函数对应的特征向量;
进行关键函数级别相似性比较,根据相似性比较结果,检测目标二进制文件的漏洞;
其中,所述提取二进制文件的关键函数对应的特征向量方法具体包括:
步骤S204:对二进制文件的基本块基于skip-thoughts提取基本块代码语义特征;
步骤S205:提取二进制文件的关键函数级别代码结构化语义特征,生成与二进制文件的关键函数对应的特征向量,通过提取函数级别代码结构化语义特征,将函数内部节点和结构相关的属性信息进行收集,使用神经网络模型对得到的基本块级别的特征向量进行选择,以生成二进制文件的函数级别的向量;
基于Structure2vec构建图嵌入神经网络模型,完成函数级别的特征选择和向量嵌入,通过融合语义图ISSFG来表征二进制文件中的函数f的特征,每一个函数使用融合语义图表示g=(V,E),其中V表示节点集合,E表示边的集合,图中的每一个节点v∈V表征函数f的基本块,边e∈E表征函数中基本块之间的控制依赖关系,节点v不仅包含了skip-thoughts生成的基本块语义特征向量,还包括了节点在函数控制流图中的结构化数字特征,在进行向量嵌入时,嵌入的向量是结构图向量,所述结构图向量是将融合语义图输入神经网络,由神经网络经过计算输出表征函数语义的、用于嵌入的嵌入向量;
所述步骤S201中的所述神经网络模型为基于Siamese网络构建的神经网络模型,通过使用已知漏洞的二进制文件得到的、已经进行了标签处理的特征向量作为样本,对该神经网络模型进行训练,得到训练好的Siamese神经网络模型;
所述步骤S203:向所述训练好的神经网络模型分别输入目标二进制文件的关键函数对应的特征向量,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的关键函数对应的特征向量;进行关键函数级别相似性比较,根据相似性比较结果,检测目标二进制文件的漏洞,具体包括:
向训练好的Siamese神经网络模型输入目标二进制文件的关键函数对应的特征向量,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的关键函数对应的特征向量,分别得到目标二进制文件以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的关键函数对应的融合语义图,得到分别对应于这两个二进制代码文件关键函数的图嵌入向量μ1和μ2,对μ1和μ2进行向量的相似性比较,cosine距离计算两个图嵌入向量μ1和μ2的相似性,根据相似性检测二进制文件的漏洞;所述目标二进制文件为待检测漏洞的二进制文件;
所述步骤S204:对二进制文件的基本块基于skip-thoughts提取基本块代码语义特征,包括:
步骤S2041:对二进制文件进行指令代码预处理;
步骤S2042:对基本块基于skip-thoughts提取语义特征,利用skip-thoughts中的编码-解码器结构,对提取的所述基本块代码语义特征进行特征嵌入,生成向量,得到基本块代码语义特征,具体包括:
二进制文件的指令按照其结构可以进行分层,包括指令级别、基本块级别和关键函数级别,对基本块基于skip-thoughts提取语义特征时,将二进制文件中的单独指令看成是自然语言处理中的“单词”,将基本块看成“句子”,关键函数看成“段落”,利用skip-thoughts中的编码-解码器结构,输入基本块所包含的指令序列;通过所述编码-解码器结构中的编码结构,将输入的指令序列输出为可以作为图嵌入网络输入的向量,并最大程度表征该基本块的语义特征,即编码-解码器结构中的编码结构,可以将分层的指令生成对应的特征向量;
所述步骤S205:提取二进制文件的关键函数级别代码结构化语义特征,生成与二进制文件的关键函数对应的特征向量,包括:
步骤S2051:将关键函数中的基本块作为图结构的节点,获取图结构的节点语义特征及与结构相关的数字化特征,所述数字化特征包括基本块嵌入过程中的语义向量,也包括关键函数与其内部基本块属性中与结构相关的数字化特征,以二进制文件的控制流图为基础,将从基本块提取的语义特征与该数字化特征进行融合,得到关键函数图结构的信息,作为结构化语义嵌入的基础;所述基本块属性中与结构相关的数字化特征包括入度、出度、介数、关键函数参数个数;
步骤S2052:使用structure2vec神经网络将融合语义图转化为可以作为机器学习模型输入的图嵌入向量,即生成最终图嵌入向量;通过图嵌入网络找到的评价关键函数可以整合关键函数中距离某一个节点2步甚至3步以外的所有邻居的信息,并将信息压缩成一个有限维的非线性向量;使用基于深度神经网络模型的包含语义的方法来处理关键函数结构化语义表达,得到二进制文件的关键函数对应的特征向量。
2.一种基于神经网络的漏洞检测装置,其特征在于,所述装置包括:
训练模块:利用同源但不同架构和不同优化级别得到的二进制文件作为训练样本,利用特征向量生成模块,提取与二进制文件的关键函数对应的特征向量,训练神经网络模型;得到训练好的神经网络模型;
特征获取模块:输入目标二进制文件,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件;利用提取二进制文件的关键函数对应的特征向量方法,获取目标二进制文件的关键函数对应的特征向量,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的关键函数对应的特征向量;
比较模块:向所述训练好的神经网络模型输入目标二进制文件的关键函数对应的特征向量,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的关键函数对应的特征向量;进行关键函数级别相似性比较,根据相似性比较结果,检测目标二进制文件的漏洞;
所述特征向量生成模块,包括:
基本块特征提取子模块:对二进制文件的基本块基于skip-thoughts提取基本块代码语义特征;关键函数特征提取子模块:提取二进制文件的关键函数级别代码结构化语义特征,生成与二进制文件的关键函数对应的特征向量,通过提取函数级别代码结构化语义特征,将函数内部节点和结构相关的属性信息进行收集,使用神经网络模型对得到的基本块级别的特征向量进行选择,以生成二进制文件的函数级别的向量;
基于Structure2vec构建图嵌入神经网络模型,完成函数级别的特征选择和向量嵌入,通过融合语义图ISSFG来表征二进制文件中的函数f的特征,每一个函数使用融合语义图表示g=(V,E),其中V表示节点集合,E表示边的集合,图中的每一个节点v∈V表征函数f的基本块,边e∈E表征函数中基本块之间的控制依赖关系,节点v不仅包含了skip-thoughts生成的基本块语义特征向量,还包括了节点在函数控制流图中的结构化数字特征,在进行向量嵌入时,嵌入的向量是结构图向量,所述结构图向量是将融合语义图输入神经网络,由神经网络经过计算输出表征函数语义的、用于嵌入的嵌入向量;
所述比较模块,包括:
第一比较子模块:向训练好的Siamese神经网络模型输入目标二进制文件的关键函数对应的特征向量,以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的关键函数对应的特征向量,分别得到目标二进制文件以及与该目标二进制文件同源的、并且已知漏洞的二进制文件的关键函数对应的融合语义图,得到分别对应于这两个二进制代码文件关键函数的图嵌入向量μ1和μ2,对μ1和μ2进行向量的相似性比较,cosine距离计算两个图嵌入向量μ1和μ2的相似性,根据相似性检测二进制文件的漏洞;所述目标二进制文件为待检测漏洞的二进制文件;
所述基本块特征提取子模块,包括:
预处理子模块:对二进制文件进行指令代码预处理;
向量生成子模块:对基本块基于skip-thoughts提取语义特征,利用skip-thoughts中的编码-解码器结构,对提取的所述基本块代码语义特征进行特征嵌入,生成向量,得到基本块代码语义特征;其中,所述二进制文件的指令按照其结构可以进行分层,包括指令级别、基本块级别和关键函数级别,对基本块基于skip-thoughts提取语义特征时,将二进制文件中的单独指令看成是自然语言处理中的“单词”,将基本块看成“句子”,关键函数看成“段落”,利用skip-thoughts中的编码-解码器结构,输入基本块所包含的指令序列;通过所述编码-解码器结构中的编码结构,将输入的指令序列输出为可以作为图嵌入网络输入的向量,并最大程度表征该基本块的语义特征,即编码-解码器结构中的编码结构,可以将分层的指令生成对应的特征向量;
所述关键函数特征提取子模块,包括:
关键函数图生成子模块:将关键函数中的基本块作为图结构的节点,获取图结构的节点语义特征及与结构相关的数字化特征,所述数字化特征包括基本块嵌入过程中的语义向量,也包括关键函数与其内部基本块属性中与结构相关的数字化特征,以二进制文件的控制流图为基础,将从基本块提取的语义特征与该数字化特征进行融合,得到关键函数图结构的信息,作为结构化语义嵌入的基础;所述基本块属性中与结构相关的数字化特征包括入度、出度、介数、关键函数参数个数;
最终图嵌入向量生成子模块:使用structure2vec神经网络将融合语义图转化为可以作为机器学习模型输入的图嵌入向量,即生成最终图嵌入向量;通过图嵌入网络找到的评价关键函数可以整合关键函数中距离某一个节点2步甚至3步以外的所有邻居的信息,并将信息压缩成一个有限维的非线性向量;使用基于深度神经网络模型的包含语义的方法来处理关键函数结构化语义表达,得到二进制文件的关键函数对应的特征向量;
所述神经网络模型为基于Siamese网络构建的神经网络模型,通过使用已知漏洞的二进制文件得到的、已经进行了标签处理的特征向量作为样本,对该神经网络模型进行训练,得到训练好的Siamese神经网络模型。
3.一种基于神经网络的漏洞检测系统,其特征在于,包括:
处理器,用于执行多条指令;
存储器,用于存储多条指令;
其中,所述多条指令,用于由所述存储器存储,并由所述处理器加载并执行如权利要求1所述的基于神经网络的漏洞检测方法。
4.一种计算机可读存储介质,其特征在于,所述存储介质中存储有多条指令;所述多条指令,用于由处理器加载并执行如权利要求1所述的基于神经网络的漏洞检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010756148.3A CN111639344B (zh) | 2020-07-31 | 2020-07-31 | 一种基于神经网络的漏洞检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010756148.3A CN111639344B (zh) | 2020-07-31 | 2020-07-31 | 一种基于神经网络的漏洞检测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111639344A CN111639344A (zh) | 2020-09-08 |
CN111639344B true CN111639344B (zh) | 2020-11-20 |
Family
ID=72331804
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010756148.3A Active CN111639344B (zh) | 2020-07-31 | 2020-07-31 | 一种基于神经网络的漏洞检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111639344B (zh) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112308210B (zh) * | 2020-10-27 | 2023-04-07 | 中国人民解放军战略支援部队信息工程大学 | 基于神经网络的跨架构二进制函数相似性检测方法及系统 |
CN112215013B (zh) * | 2020-11-02 | 2022-04-19 | 天津大学 | 一种基于深度学习的克隆代码语义检测方法 |
CN112257076B (zh) * | 2020-11-11 | 2023-12-15 | 厦门美域中央信息科技有限公司 | 一种基于随机探测算法和信息聚合的漏洞检测方法 |
CN112163226B (zh) * | 2020-11-30 | 2021-02-26 | 中国人民解放军国防科技大学 | 基于图自动编码器的二进制函数相似性检测方法 |
CN112613040A (zh) * | 2020-12-14 | 2021-04-06 | 中国科学院信息工程研究所 | 一种基于二进制程序的漏洞检测方法及相关设备 |
CN112613035A (zh) * | 2020-12-18 | 2021-04-06 | 深圳市安络科技有限公司 | 一种基于ios系统的app安全检测方法、装置及设备 |
CN112733137B (zh) * | 2020-12-24 | 2021-11-16 | 哈尔滨工业大学 | 一种面向漏洞检测的二进制代码相似性分析方法 |
TWI767582B (zh) | 2021-02-23 | 2022-06-11 | 財團法人資訊工業策進會 | 檔案弱點檢測系統及其檢測方法 |
CN112966763B (zh) * | 2021-03-17 | 2023-12-26 | 北京邮电大学 | 一种分类模型的训练方法、装置、电子设备及存储介质 |
CN113204764B (zh) * | 2021-04-02 | 2022-05-17 | 武汉大学 | 一种基于深度学习的无符号二进制间接控制流识别方法 |
CN113240041B (zh) * | 2021-05-28 | 2022-11-08 | 北京理工大学 | 融合影响因子的二进制函数相似性检测方法 |
CN113449303B (zh) * | 2021-06-28 | 2022-11-11 | 杭州云象网络技术有限公司 | 基于教师-学生网络模型的智能合约漏洞检测方法和系统 |
CN113497809B (zh) * | 2021-09-07 | 2021-11-26 | 中国人民解放军国防科技大学 | 基于控制流和数据流分析的mips架构漏洞挖掘方法 |
CN114077741B (zh) * | 2021-11-01 | 2022-12-09 | 清华大学 | 软件供应链安全检测方法和装置、电子设备及存储介质 |
CN114443476A (zh) * | 2022-01-11 | 2022-05-06 | 阿里云计算有限公司 | 一种代码评审方法及装置 |
CN114329500B (zh) * | 2022-03-09 | 2022-06-17 | 山东卓朗检测股份有限公司 | 基于人工智能的服务器集群安全漏洞检测方法 |
CN114579981B (zh) * | 2022-03-10 | 2022-11-01 | 北京国腾创新科技有限公司 | 一种跨域漏洞检测方法、系统、存储介质和电子设备 |
CN114915446B (zh) * | 2022-04-02 | 2023-08-29 | 中国人民解放军国防科技大学 | 一种融合先验知识的智能网络安全检测方法 |
CN114866358B (zh) * | 2022-07-07 | 2022-09-09 | 中国人民解放军国防科技大学 | 一种基于知识图谱的自动化渗透测试方法及系统 |
CN115282401B (zh) * | 2022-07-22 | 2023-04-21 | 深圳市第二人民医院(深圳市转化医学研究院) | 静脉输液泵控制系统、静脉输液泵控制方法和存储介质 |
CN115168856B (zh) * | 2022-07-29 | 2023-04-21 | 山东省计算中心(国家超级计算济南中心) | 二进制代码相似性检测方法及物联网固件漏洞检测方法 |
CN115033895B (zh) * | 2022-08-12 | 2022-12-09 | 中国电子科技集团公司第三十研究所 | 一种二进制程序供应链安全检测方法及装置 |
CN115640577B (zh) * | 2022-09-20 | 2023-11-14 | 中国人民解放军国防科技大学 | 一种针对二进制物联网固件程序的漏洞检测方法和系统 |
CN115906089B (zh) * | 2022-10-24 | 2024-04-12 | 中国人民解放军国防科技大学 | 一种基于二进制函数相似性的漏洞检测方法与系统 |
CN115576840B (zh) * | 2022-11-01 | 2023-04-18 | 中国科学院软件研究所 | 基于机器学习的静态程序插桩检测方法及装置 |
CN116032654B (zh) * | 2023-02-13 | 2023-06-30 | 山东省计算中心(国家超级计算济南中心) | 一种固件漏洞检测及数据安全治理方法和系统 |
CN117216771B (zh) * | 2023-11-09 | 2024-01-30 | 中机寰宇认证检验股份有限公司 | 一种二进制程序漏洞智能挖掘方法及系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170068816A1 (en) * | 2015-09-04 | 2017-03-09 | University Of Delaware | Malware analysis and detection using graph-based characterization and machine learning |
CN105868108B (zh) * | 2016-03-28 | 2018-09-07 | 中国科学院信息工程研究所 | 基于神经网络的指令集无关的二进制代码相似性检测方法 |
CN108108622B (zh) * | 2017-12-13 | 2021-03-16 | 上海交通大学 | 基于深度卷积网络和控制流图的漏洞检测系统 |
CN108875320B (zh) * | 2018-07-17 | 2021-10-08 | 北京元心科技有限公司 | 软件安全防护方法、装置、电子设备及计算机存储介质 |
CN110287702B (zh) * | 2019-05-29 | 2020-08-11 | 清华大学 | 一种二进制漏洞克隆检测方法及装置 |
CN110414238A (zh) * | 2019-06-18 | 2019-11-05 | 中国科学院信息工程研究所 | 同源二进制代码的检索方法及装置 |
CN110943981B (zh) * | 2019-11-20 | 2022-04-08 | 中国人民解放军战略支援部队信息工程大学 | 基于层次学习的跨架构漏洞挖掘方法 |
-
2020
- 2020-07-31 CN CN202010756148.3A patent/CN111639344B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111639344A (zh) | 2020-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111639344B (zh) | 一种基于神经网络的漏洞检测方法及装置 | |
CN108446540B (zh) | 基于源代码多标签图神经网络的程序代码抄袭类型检测方法与系统 | |
CN111428044B (zh) | 多模态获取监管识别结果的方法、装置、设备及存储介质 | |
Xiaomeng et al. | CPGVA: Code property graph based vulnerability analysis by deep learning | |
CN106537333A (zh) | 用于软件产物的数据库的系统和方法 | |
CN108491228B (zh) | 一种二进制漏洞代码克隆检测方法及系统 | |
Saccente et al. | Project achilles: A prototype tool for static method-level vulnerability detection of Java source code using a recurrent neural network | |
CN109492355B (zh) | 一种基于深度学习的软件抗分析方法和系统 | |
CN114201406B (zh) | 基于开源组件的代码检测方法、系统、设备及存储介质 | |
CN112579469A (zh) | 一种源代码缺陷检测方法与装置 | |
Del Carpio et al. | Trends in software engineering processes using deep learning: a systematic literature review | |
CN112688966A (zh) | webshell检测方法、装置、介质和设备 | |
Wang et al. | Explainable apt attribution for malware using nlp techniques | |
CN112668013A (zh) | 一种面向Java源码的语句级模式探索的漏洞检测方法 | |
Ban et al. | Fam: featuring android malware for deep learning-based familial analysis | |
Kaur et al. | A systematic literature review on the use of machine learning in code clone research | |
Kim | Enhancing code clone detection using control flow graphs. | |
CN112131120A (zh) | 一种源代码缺陷检测方法及装置 | |
CN115795487B (zh) | 漏洞检测方法、装置、设备及存储介质 | |
CN116663018A (zh) | 一种基于代码可执行路径的漏洞检测方法及装置 | |
CN116662991A (zh) | 基于人工智能的智能合约意图检测方法 | |
CN115098857A (zh) | 一种可视化恶意软件的分类方法及装置 | |
CN116628695A (zh) | 基于多任务学习的漏洞挖掘方法及装置 | |
Chernousov et al. | Deep learning based automatic software defects detection framework | |
CN115391780B (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 |