CN114579977A - 一种用于嵌入式操作系统的代码漏洞检测方法 - Google Patents
一种用于嵌入式操作系统的代码漏洞检测方法 Download PDFInfo
- Publication number
- CN114579977A CN114579977A CN202210182611.7A CN202210182611A CN114579977A CN 114579977 A CN114579977 A CN 114579977A CN 202210182611 A CN202210182611 A CN 202210182611A CN 114579977 A CN114579977 A CN 114579977A
- Authority
- CN
- China
- Prior art keywords
- code
- vulnerability
- operating system
- embedded operating
- slicing
- 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 63
- 239000013598 vector Substances 0.000 claims abstract description 55
- 238000000034 method Methods 0.000 claims abstract description 45
- 238000012545 processing Methods 0.000 claims abstract description 45
- 238000012549 training Methods 0.000 claims abstract description 21
- 238000003062 neural network model Methods 0.000 claims abstract description 10
- 238000006243 chemical reaction Methods 0.000 claims 1
- 238000004458 analytical method Methods 0.000 abstract description 8
- 230000003068 static effect Effects 0.000 abstract description 5
- 230000006870 function Effects 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000013527 convolutional neural network Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000013135 deep learning Methods 0.000 description 3
- 238000013136 deep learning model Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 229940060321 after-bug Drugs 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 108091029480 NONCODE Proteins 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013213 extrapolation Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 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/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
- 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
- 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/049—Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
-
- 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
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及代码漏洞检测技术领域,具体公开了一种用于嵌入式操作系统的代码漏洞检测方法,其中,包括:获取待检测的嵌入式操作系统的代码;将所述待检测的嵌入式操作系统的代码进行切片处理与向量表示处理,得到处理数据;将所述处理数据输入至代码漏洞检测模型,得到代码漏洞检测结果;其中,所述代码漏洞检测模型为根据代码漏洞数据库中的漏洞源码输入至神经网络模型进行训练后获得。本发明提供的用于嵌入式操作系统的代码漏洞检测方法,由于在代码静态分析阶段采用基于语义的方法,更够准确描绘程序特征,提升精准度,降低误报率。另外,针对嵌入式操作系统的代码特点,在操作系统层面上的检测性能提高。
Description
技术领域
本发明涉及代码漏洞检测技术领域,尤其涉及一种用于嵌入式操作系统的代码漏洞检测方法。
背景技术
目前的代码漏洞检测方法,其中基于代码克隆检测的居多,它们的本质是比较源代码与漏洞代码的相似性。常见的技术方案有以下几种:基于token,基于文本,基于语法,基于语义。
CCFinder的技术方案为,将源代码转化为一系列token,比较代码token序列相似性来进行匹配,token序列的相似性是通过后缀树算法测量的,后缀树算法计算成本高且占用内存较多。CP-Miner的技术方案为,解析程序并使用频繁子序列挖掘算法来比较生成token序列。与 CCFinder 相比,CP-Miner 虽然在内存消耗上进行了优化,但是并没有降低时间复杂度。除此之外,虽然 CP-Miner检测的效果优于 CCFinder,但该设计对于漏洞检测并不具备足够的可靠性。
ReDeBug的技术方案为,将多行(默认4行)作为一个处理单元,通过源代码为每个处理单元设置一个窗口,并为每个窗口应用三个不同的散列函数。通过布隆过滤器中的成员资格检查来检测文件之间的代码克隆,该过滤器存储每个窗口的散列值。这种方式找不到稍作改动的软件克隆(例如,修改变量名),因此会导致对行代码克隆引起的代码漏洞检测准确率下降,同时哈希数据库要占用比较大的内存空间。
SourcererCC的技术方案为,尝试使用标记包技术检测函数级别的克隆,创建一个由每个函数的标记包组成的索引,然后用函数的重叠部分推断函数间的相似性,超过阈值的就认为是克隆对。这种方式相比CCFinder节省了大量的时间,但是这种方式无法区分 if语句,因此并不具备高适用性。与SourcererCC不同,Yamaguchi 等人提出了一种名为漏洞外推法的方法及其广义扩展,利用从函数的抽象语法树(Abstract Syntax Tree, AST)中提取的模式来检测语义克隆。然而这种方法并没有得到较高的检测准确率。S.Kim 等人提出的方法相比 ReDeBug具有更低的假阳性率,是非常有效的代码克隆检测技术。但是该方法在检测包含非代码克隆引起的漏洞时,具备较高的假阴性率,因此该方法适用性不强。同时,需要注意的是,函数的执行非常依赖上下文,因此单纯检测函数的克隆并不是非常有效的。
DECKARD的技术方案为,为每个文件构建 AST,然后从 AST 中提取特征向量。在使用基于欧几里德距离进行的聚类向量之后,欧几里德空间内彼此接近的向量被识别为代码克隆。这种基于树的方式时间复杂度高,而且DECKARD 的误报率为非常高,表明具有相似抽象树的代码片段不一定是克隆。
基于语义的检测方法通过在语义层面上比较代码的相似性,以此来检测相似漏洞代码。这一类方法是以程序依赖图PDG(Program Dependence Graph)技术为代表的。Ferrante 等人首先提出了 PDG 的概念,他们将程序代码中的数据流程图和控制依赖图综合到一起形成 PDG。一方面 PDG的每一个节点都代表了一个代码实体,比如一个声明语句、一个判断条件或者一个操作符。节点中记录了源代码文本、代码在源程序中的位置和节点的类型信息。另一方面 PDG 使用数据依赖边来反映节点间的数据传递,使用控制依赖边来反映节点对程序执行流程的影响。随后 Komondoor 等人提出同构子图的查找算法可用于克隆代码段的检测中。
在目前的基于代码相似度检测的方法中,相比于基于语义的检测方法,基于token、基于文本和基于语法的检测方法复杂度低,检测速度比较快可用于大规模软件。但是这几类方法因为缺少语义的支持,不能准确地描绘程序的特征,从而导致相似漏洞代码检测算法的误报率比较高。而基于语义的相似漏洞代码检测方法使用程序依赖图PDG技术来描述程序特征,并通过子图同构进行相似漏洞代码段的查找,可以获得更好的准确率。但是一方面因为此类方法通常直接使用节点的代码文本值作为节点相似的判断条件,在这种情况下并不能有效的处理相似代码中变量值被修改的问题,这就造成了一定的漏报的发生。另一方面生成PDG的过程和同构子图查找的时间复杂度相当高,尤其是同构子图的查找已经被证明为 NPC 问题。因此基于语义的相似漏洞代码检测方法难以直接应用于大规模软件。
而且,在众多研究中,其中面向嵌入式操作系统代码漏洞的研究十分稀少,它们大多都是用于通用代码的检测。对于嵌入式操作系统的检测性能暂时无法评估。
发明内容
本发明提供了一种用于嵌入式操作系统的代码漏洞检测方法,解决相关技术中存在的嵌入式操作系统缺乏代码漏洞检测的问题。
作为本发明的一个方面,提供一种用于嵌入式操作系统的代码漏洞检测方法,其中,包括:
获取待检测的嵌入式操作系统的代码;
将所述待检测的嵌入式操作系统的代码进行切片处理与向量表示处理,得到处理数据;
将所述处理数据输入至代码漏洞检测模型,得到代码漏洞检测结果;
其中,所述代码漏洞检测模型为根据代码漏洞数据库中的漏洞源码输入至神经网络模型进行训练后获得。
进一步地,将所述待检测的嵌入式操作系统的代码进行切片处理与向量表示处理,得到处理数据,包括:
将所述待检测的嵌入式操作系统的代码进行代码中间表示;
根据所述代码中间表示确定切片准则;
根据所述切片准则对所述待检测的嵌入式操作系统的代码进行切片处理得到代码切片;
将所述代码切片进行向量处理,生成语句的向量形式;
将所述语句的向量形式作为处理数据。
进一步地,将所述待检测的嵌入式操作系统的代码进行代码中间表示,包括:
对所述待检测的嵌入式操作系统的代码进行抽象化处理,得到代码上下文关系;
将所述代码上下文关系形成代码属性图,将所述代码属性图存储至图数据库中。
进一步地,根据所述代码中间表示确定切片准则,包括:
根据所述代码上下文关系以及结合漏洞敏感点准则确定切片准则。
进一步地,将所述代码切片进行向量处理,生成语句的向量形式,包括:
将代码切片中的每条语句均转化为token;
对token进行训练,并转化为向量形式;
将属于每条语句的token转化生成的向量按照顺序进行拼接,生成语句的向量形式。
进一步地,所述代码漏洞检测模型为根据代码漏洞数据库中的漏洞源码输入至神经网络模型进行训练后获得:
对代码漏洞数据库进行解析,获得嵌入式操作系统的漏洞源码;
对所述漏洞源码进行切片处理与向量表示处理,生成代码漏洞数据集;
根据所述代码漏洞数据集与神经网络模型进行训练获得代码漏洞检测模型。
进一步地,获取代码漏洞数据库中的漏洞数据文件,包括:
根据脚本工具同步代码漏洞数据库至本地;
下载所述代码漏洞数据库中的漏洞数据文件,其中所述漏洞数据文件包括XML格式的json文件。
进一步地,对所述漏洞源码进行切片处理与向量处理,生成代码漏洞数据集,包括:
将所述漏洞代码进行代码中间表示;
根据所述代码中间表示确定切片准则;
根据所述切片准则对所述漏洞源码进行切片处理得到代码切片;
将所述代码切片转换进行向量处理,生成语句的向量形式;
根据语句的向量形式生成代码漏洞数据集。
进一步地,根据所述切片准则对所述漏洞源码进行切片处理得到代码切片,包括:
根据所述切片准则对所述漏洞源码进行切片处理,得到初始代码切片;
对每个初始代码切片均进行标签标记处理,得到标记后的代码切片。
本发明提供的用于嵌入式操作系统的代码漏洞检测方法,通过解析代码漏洞数据库,总结出操作系统相关的漏洞,并制作成用于深度学习训练的漏洞数据集;其次对嵌入式操作系统进行静态分析,生成抽象中间表示,并针对操作系统代码的特点制定漏洞准则,结合代码抽象中间表示形成嵌入式对操作系统代码的切片准则用于源码切片。再利用代码表示学习的方法将代码切片转换成可供深度学习模型接受的向量化数据类型;最后基于代码检测本质为序列模型问题的特点,选取时序卷积神经网络TCN作为漏洞检测模型,并利用已生成的数据集对模型进行训练,将模型利用到嵌入式操作系统代码漏洞检测中。本发明提供的用于嵌入式操作系统的代码漏洞检测方法,由于在代码静态分析阶段采用基于语义的方法,更够准确描绘程序特征,提升精准度,降低误报率。另外,针对嵌入式操作系统的代码特点,在操作系统层面上的检测性能提高。
附图说明
附图是用来提供对本发明的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明,但并不构成对本发明的限制。在附图中:
图1为本发明提供的用于嵌入式操作系统的代码漏洞检测方法的流程图。
图2为本发明提供的代码漏洞数据集获取流程示意图。
图3为本发明提供的代码切片生成流程示意图。
图4为本发明提供的代码切片的向量化表示流程示意图。
图5为本发明提供的代码漏洞检测模型的获取流程图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互结合。下面将参考附图并结合实施例来详细说明本发明。
为了使本领域技术人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包括,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本实施例中提供了一种用于嵌入式操作系统的代码漏洞检测方法,图1是根据本发明实施例提供的用于嵌入式操作系统的代码漏洞检测方法的流程图,如图1所示,包括:
S100、获取待检测的嵌入式操作系统的代码;
S200、将所述待检测的嵌入式操作系统的代码进行切片处理与向量表示处理,得到处理数据;
具体地,包括:
将所述待检测的嵌入式操作系统的代码进行代码中间表示;
根据所述代码中间表示确定切片准则;
根据所述切片准则对所述待检测的嵌入式操作系统的代码进行切片处理得到代码切片;
将所述代码切片进行向量处理,生成语句的向量形式;
将所述语句的向量形式作为处理数据。
进一步具体地,将所述待检测的嵌入式操作系统的代码进行代码中间表示,包括:
对所述待检测的嵌入式操作系统的代码进行抽象化处理,得到代码上下文关系;
将所述代码上下文关系形成代码属性图,将所述代码属性图存储至图数据库中。
其中,根据所述代码中间表示确定切片准则,包括:
根据所述代码上下文关系以及结合漏洞敏感点准则确定切片准则。
在本发明实施例中,将所述代码切片进行向量处理,生成语句的向量形式,包括:
将代码切片中的每条语句均转化为token;
对token进行训练,并转化为向量形式;
将属于每条语句的token转化生成的向量按照顺序进行拼接,生成语句的向量形式。
S300、将所述处理数据输入至代码漏洞检测模型,得到代码漏洞检测结果;
其中,所述代码漏洞检测模型为根据代码漏洞数据库中的漏洞源码输入至神经网络模型进行训练后获得。
具体地,如图5所示,所述代码漏洞检测模型为根据代码漏洞数据库中的漏洞源码输入至神经网络模型进行训练后获得:
S10、对代码漏洞数据库进行解析,获得嵌入式操作系统的漏洞源码;
在本发明实施例中,所述代码漏洞数据库具体可以包括NVD(NationalVulnerability Database,国家计算机通用漏洞数据库)、CNNVD (China NationalVulnerability Database of Information Security,国家信息安全漏洞库)、CVE(CommonVulnerabilities & Exposures,通用漏洞披露)、CNVD(China National VulnerabilityDatabase,国家信息安全漏洞共享平台)等等。
对代码漏洞数据库进行解析,获得嵌入式操作系统的漏洞源码;
应当理解的是,对于嵌入式操作系统源码的特点,底层操作要多于普通应用程序,故基于这种特点,确定了操作系统源码漏洞的关键点:1.数组使用类;2.指针使用类;3.API调用类。
在本发明实施例中,具体可以包括:
S11、获取代码漏洞数据库中的漏洞数据文件;
具体地,根据脚本工具同步代码漏洞数据库至本地;
下载所述代码漏洞数据库中的漏洞数据文件,其中所述漏洞数据文件包括XML格式的json文件。
S12、对所述漏洞数据文件进行解析,提取和保存所需信息字段;
在本发明实施例中,如图2所示,利用cvechecker的脚本工具可以同步NVD漏洞库文件到本地,通过NVD提供的接口下载漏洞数据文件(XML格式的json文件),并解析json文件的内容,提取和保存项目需要的信息字段。
S13、根据所述所需信息字段提取嵌入式操作系统的漏洞源码。
具体地,根据信息字段提取出其中操作系统相关的漏洞源码。
S20、对所述漏洞源码进行切片处理与向量表示处理,生成代码漏洞数据集;
在本发明实施例中,具体可以包括:
S21、将所述漏洞代码进行代码中间表示;
具体地,对漏洞源码进行抽象化处理,得到源码上下文关系;
将所述源码上下文关系形成代码属性图,将所述代码属性图存储至图数据库中。
在本发明实施例中,如图3所示,基于语义分析的切片方法需要现将源代码转换成代码中间表示,考虑到操作系统源码特点,选用c/c++分析工具Joern生成代码属性图,使用图数据库Neo4j来进行存储。
S22、根据所述代码中间表示确定切片准则;
具体地,根据所述源码上下文关系以及结合漏洞敏感点准则确定切片准则。
应当理解的是,通过该切片准则对源码进行切片,能够有效减少冗余信息,提高检测工具的效率。
S23、根据所述切片准则对所述漏洞源码进行切片处理得到代码切片;
具体地,根据所述切片准则对所述漏洞源码进行切片处理,得到初始代码切片;
对每个初始代码切片均进行标签标记处理,得到标记后的代码切片。
进一步具体地,遍历每个初始代码切片中的每一条语句,并判断每一条语句在源码中是否为漏洞语句;
若当前语句在源码中为漏洞语句,则停止遍历,并将当前语句所在的初始代码切片的标签标记为1;
若当前语句在源码中不是漏洞语句,则继续遍历该代码切片直至遍历完成,并将当前代码切片的标签标记为0。
在本发明实施例中,判断每一条语句在源码中是否为漏洞语句,包括:
查找每一条语句在源码中的代码行;
判断该代码行上是否有漏洞修复后的相关注释;
若有,则判定当前语句在源码中为漏洞语句;
若无,则判定当前语句在源码中不是漏洞语句。
应当理解的是,在本发明实施例中,根据信息字段提取出其中操作系统相关的漏洞源码,并对其使用前文所述方法进行代码切片操作。得到切片之后,首先要对切片打标签,此时需要遍历切片中的每一条语句,判断是否在源代码中是漏洞语句,所以,找到切片语句在源代码中的代码行,判断该代码行上是否有漏洞修复后的相关注释,如果有,就停止遍历切片中的其余代码并将标签标记为 1,否则,继续遍历切片的代码中的剩余代码,最后切片标签标记为 0。
S24、将所述代码切片转换进行向量处理,生成语句的向量形式;
在本发明实施例中,具体包括:
将代码切片中的每条语句均转化为token;
对token进行训练,并转化为向量形式;
将属于每条语句的token转化生成的向量按照顺序进行拼接,生成语句的向量形式。
如图4所示,采用 word2vec 作为代码切片表示学习的方法。代码切片需要向量化才能输入到深度学习模型当中,首先利用词嵌入方法,将代码切片中的每一个语句都转化为一系列token,然后通过word2vec训练转化为向量形式,再将属于各语句token转化生成的向量按顺序进行拼接,生成语句的向量形式,最后将属于每个语句的向量作为二维矩阵的一行,逐步拼接形成卷积神经网络的输入数据。
S25、根据语句的向量形式生成代码漏洞数据集。
S30、根据所述代码漏洞数据集与神经网络模型进行训练获得代码漏洞检测模型;
本发明实施例中,通过将前文所述的代码漏洞数据集作为卷积神经网络模型的训练数据进行训练,获得代码漏洞检测模型。
代码的分析本质上是一个时间序列模型。对于一个给定的输入序列模型可以预测相应的输出序列。本发明实施例采用PyTorch深度学习框架来设计并实现时序卷积神经网络,使用前文所述的代码漏洞数据集进行神经网络的训练数据,得到嵌入式操作系统的代码漏洞检测模型。
综上,本发明实施例提供的用于嵌入式操作系统的代码漏洞检测方法,通过解析代码漏洞数据库,总结出操作系统相关的漏洞,并制作成用于深度学习训练的漏洞数据集;其次对嵌入式操作系统进行静态分析,生成抽象中间表示,并针对操作系统代码的特点制定漏洞准则,结合代码抽象中间表示形成嵌入式对操作系统代码的切片准则用于源码切片。再利用代码表示学习的方法将代码切片转换成可供深度学习模型接受的向量化数据类型;最后基于代码检测本质为序列模型问题的特点,选取时序卷积神经网络TCN作为漏洞检测模型,并利用已生成的数据集对模型进行训练,将模型利用到嵌入式操作系统代码漏洞检测中。本发明实施例提供的用于嵌入式操作系统的代码漏洞检测方法,由于在代码静态分析阶段采用基于语义的方法,更够准确描绘程序特征,提升精准度,降低误报率。另外,针对嵌入式操作系统的代码特点,在操作系统层面上的检测性能提高。
可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。
Claims (10)
1.一种用于嵌入式操作系统的代码漏洞检测方法,其特征在于,包括:
获取待检测的嵌入式操作系统的代码;
将所述待检测的嵌入式操作系统的代码进行切片处理与向量表示处理,得到处理数据;
将所述处理数据输入至代码漏洞检测模型,得到代码漏洞检测结果;
其中,所述代码漏洞检测模型为根据代码漏洞数据库中的漏洞源码输入至神经网络模型进行训练后获得。
2.根据权利要求1所述的用于嵌入式操作系统的代码漏洞检测方法,其特征在于,将所述待检测的嵌入式操作系统的代码进行切片处理与向量表示处理,得到处理数据,包括:
将所述待检测的嵌入式操作系统的代码进行代码中间表示;
根据所述代码中间表示确定切片准则;
根据所述切片准则对所述待检测的嵌入式操作系统的代码进行切片处理得到代码切片;
将所述代码切片进行向量处理,生成语句的向量形式;
将所述语句的向量形式作为处理数据。
3.根据权利要求2所述的用于嵌入式操作系统的代码漏洞检测方法,其特征在于,将所述待检测的嵌入式操作系统的代码进行代码中间表示,包括:
对所述待检测的嵌入式操作系统的代码进行抽象化处理,得到代码上下文关系;
将所述代码上下文关系形成代码属性图,将所述代码属性图存储至图数据库中。
4.根据权利要求3所述的用于嵌入式操作系统的代码漏洞检测方法,其特征在于,根据所述代码中间表示确定切片准则,包括:
根据所述代码上下文关系以及结合漏洞敏感点准则确定切片准则。
5.根据权利要求2所述的用于嵌入式操作系统的代码漏洞检测方法,其特征在于,将所述代码切片进行向量处理,生成语句的向量形式,包括:
将代码切片中的每条语句均转化为token;
对token进行训练,并转化为向量形式;
将属于每条语句的token转化生成的向量按照顺序进行拼接,生成语句的向量形式。
6.根据权利要求1至5中任意一项所述的用于嵌入式操作系统的代码漏洞检测方法,其特征在于,所述代码漏洞检测模型为根据代码漏洞数据库中的漏洞源码输入至神经网络模型进行训练后获得:
对代码漏洞数据库进行解析,获得嵌入式操作系统的漏洞源码;
对所述漏洞源码进行切片处理与向量表示处理,生成代码漏洞数据集;
根据所述代码漏洞数据集与神经网络模型进行训练获得代码漏洞检测模型。
7.根据权利要求6所述的用于嵌入式操作系统的代码漏洞检测方法,其特征在于,对代码漏洞数据库进行解析,获得嵌入式操作系统的漏洞源码,包括:
获取代码漏洞数据库中的漏洞数据文件;
对所述漏洞数据文件进行解析,提取和保存所需信息字段;
根据所述所需信息字段提取嵌入式操作系统的漏洞源码。
8.根据权利要求7所述的用于嵌入式操作系统的代码漏洞检测方法,其特征在于,获取代码漏洞数据库中的漏洞数据文件,包括:
根据脚本工具同步代码漏洞数据库至本地;
下载所述代码漏洞数据库中的漏洞数据文件,其中所述漏洞数据文件包括XML格式的json文件。
9.根据权利要求6所述的用于嵌入式操作系统的代码漏洞检测方法,其特征在于,对所述漏洞源码进行切片处理与向量处理,生成代码漏洞数据集,包括:
将所述漏洞代码进行代码中间表示;
根据所述代码中间表示确定切片准则;
根据所述切片准则对所述漏洞源码进行切片处理得到代码切片;
将所述代码切片转换进行向量处理,生成语句的向量形式;
根据语句的向量形式生成代码漏洞数据集。
10.根据权利要求9所述的用于嵌入式操作系统的代码漏洞检测方法,其特征在于,根据所述切片准则对所述漏洞源码进行切片处理得到代码切片,包括:
根据所述切片准则对所述漏洞源码进行切片处理,得到初始代码切片;
对每个初始代码切片均进行标签标记处理,得到标记后的代码切片。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210182611.7A CN114579977A (zh) | 2022-02-25 | 2022-02-25 | 一种用于嵌入式操作系统的代码漏洞检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210182611.7A CN114579977A (zh) | 2022-02-25 | 2022-02-25 | 一种用于嵌入式操作系统的代码漏洞检测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114579977A true CN114579977A (zh) | 2022-06-03 |
Family
ID=81773185
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210182611.7A Pending CN114579977A (zh) | 2022-02-25 | 2022-02-25 | 一种用于嵌入式操作系统的代码漏洞检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114579977A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110245496A (zh) * | 2019-05-27 | 2019-09-17 | 华中科技大学 | 一种源代码漏洞检测方法及检测器和其训练方法及系统 |
US20200226259A1 (en) * | 2017-08-07 | 2020-07-16 | Prove & Run | Secure embedded system and method of making secure |
CN111581084A (zh) * | 2020-04-28 | 2020-08-25 | 南方电网数字电网研究院有限公司 | 基于智能电表操作系统的进程测试方法和装置 |
CN112699377A (zh) * | 2020-12-30 | 2021-04-23 | 哈尔滨工业大学 | 基于切片属性图表示学习的函数级代码漏洞检测方法 |
-
2022
- 2022-02-25 CN CN202210182611.7A patent/CN114579977A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200226259A1 (en) * | 2017-08-07 | 2020-07-16 | Prove & Run | Secure embedded system and method of making secure |
CN110245496A (zh) * | 2019-05-27 | 2019-09-17 | 华中科技大学 | 一种源代码漏洞检测方法及检测器和其训练方法及系统 |
CN111581084A (zh) * | 2020-04-28 | 2020-08-25 | 南方电网数字电网研究院有限公司 | 基于智能电表操作系统的进程测试方法和装置 |
CN112699377A (zh) * | 2020-12-30 | 2021-04-23 | 哈尔滨工业大学 | 基于切片属性图表示学习的函数级代码漏洞检测方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110737899B (zh) | 一种基于机器学习的智能合约安全漏洞检测方法 | |
CN110245496B (zh) | 一种源代码漏洞检测方法及检测器和其训练方法及系统 | |
CN112733137B (zh) | 一种面向漏洞检测的二进制代码相似性分析方法 | |
CN111125716B (zh) | 一种以太坊智能合约漏洞检测方法及装置 | |
CN109885479B (zh) | 基于路径记录截断的软件模糊测试方法及装置 | |
CN111459799B (zh) | 一种基于Github的软件缺陷检测模型建立、检测方法及系统 | |
CN102054149B (zh) | 一种恶意代码行为特征提取方法 | |
US9141796B2 (en) | System and method for detecting malware in file based on genetic map of file | |
CN109684838B (zh) | 一种针对以太坊智能合约的静态代码审计系统及方法 | |
CN108491228B (zh) | 一种二进制漏洞代码克隆检测方法及系统 | |
CN111400719A (zh) | 基于开源组件版本识别的固件脆弱性判别方法及系统 | |
CN109635569B (zh) | 一种漏洞检测方法及装置 | |
US11263062B2 (en) | API mashup exploration and recommendation | |
CN109670318B (zh) | 一种基于核控制流图循环验证的漏洞检测方法 | |
CN112733156A (zh) | 基于代码属性图的软件脆弱性智能检测方法、系统及介质 | |
CN113297580B (zh) | 基于代码语义分析的电力信息系统安全防护方法及装置 | |
US20210357193A9 (en) | Code completion with machine learning | |
CN114491529A (zh) | 基于多模态神经网络的安卓恶意应用程序识别方法 | |
CN117940894A (zh) | 用于检测代码克隆的系统和方法 | |
KR101628602B1 (ko) | 프로그램의 유사도를 판단하기 위한 유사도 판단 방법 및 유사도 판단 장치 | |
CN116305131B (zh) | 脚本静态去混淆方法及系统 | |
CN116414445B (zh) | 一种基于源代码水印的同源性检测方法及系统 | |
CN116880847A (zh) | 基于开源项目的溯源方法、装置电子设备及存储介质 | |
CN117056919A (zh) | 一种基于深度学习的软件漏洞检测方法及系统 | |
CN116756382A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220603 |