CN118133287A - 基于多特征学习的漏洞检测方法、装置、设备及存储介质 - Google Patents

基于多特征学习的漏洞检测方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN118133287A
CN118133287A CN202311780138.3A CN202311780138A CN118133287A CN 118133287 A CN118133287 A CN 118133287A CN 202311780138 A CN202311780138 A CN 202311780138A CN 118133287 A CN118133287 A CN 118133287A
Authority
CN
China
Prior art keywords
source code
vector
vulnerability
code
vulnerability detection
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
Application number
CN202311780138.3A
Other languages
English (en)
Inventor
吴跃隆
代仕勇
汪绪先
芦荟颖
黄缙华
曾瑞江
李志勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Power Grid Co Ltd
Electric Power Research Institute of Guangdong Power Grid Co Ltd
Original Assignee
Guangdong Power Grid Co Ltd
Electric Power Research Institute of Guangdong Power Grid Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangdong Power Grid Co Ltd, Electric Power Research Institute of Guangdong Power Grid Co Ltd filed Critical Guangdong Power Grid Co Ltd
Priority to CN202311780138.3A priority Critical patent/CN118133287A/zh
Publication of CN118133287A publication Critical patent/CN118133287A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/042Knowledge-based neural networks; Logical representations of neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • G06N3/0442Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种基于多特征学习的漏洞检测方法、装置、设备及存储介质,方法包括:获取待检测函数源代码;根据待检测函数源代码确定待检测函数源代码的第一标记序列向量和第一代码属性图向量;将第一标记序列向量和第一代码属性图向量输入源代码漏洞检测模型,以使源代码漏洞检测模型提取第一标记序列向量的序列特征和第一代码属性图向量的图特征,根据所提取的序列特征和图特征确定待检测函数源代码的漏洞状态;其中,通过以下方式构建所述源代码漏洞检测模型:构建初始源代码漏洞检测模型,以所有函数源代码的第二标记序列向量、第二代码属性图向量和漏洞标签作为训练集,对初始源代码漏洞检测模型进行训练,生成源代码漏洞检测模型。

Description

基于多特征学习的漏洞检测方法、装置、设备及存储介质
技术领域
本发明涉及网络安全技术领域,尤其涉及一种基于多特征学习的漏洞检测方法、装置、设备及存储介质。
背景技术
软件已成为信息化、数字化社会重要的信息基础设施。可靠安全的软件对当今社会的正常运转起着至关重要的作用。但由于软件本身及软件开发的复杂性、开发人员的技能水平不一等因素,软件很难避免漏洞的产生。软件漏洞对软件的影响可大可小,小漏洞可能仅仅影响软件的显示并不会对用户造成损失,但一些严重的漏洞可能会导致软件的异常而造成用户信息泄露、财产损失等,因此在软件开发初期即软件源代码阶段发现并修复软件漏洞可以有效避免软件漏洞对用户带来的影响。
现有的用于检测软件源代码的漏洞检测方法主要基于设定的规则对漏洞进行检测,这种基于规则的漏洞检测需要安全专家手动分析漏洞模式并定义相应的检测规则,依赖专家知识且人工成本高,存在漏洞规则定义难、更新难的问题。
发明内容
本发明实施例提供一种基于多特征学习的漏洞检测方法、装置、设备及存储介质,能通过训练源代码漏洞检测模型对待检测函数源代码进行漏洞检测,以机器学习检测的方式替代人工检测,提高漏洞检测效率;进一步地,通过对序列特征和图特征的提取,能使源代码漏洞检测模型早训练时学习多种特征,使所所构建的源代码漏洞检测模型具有更好的泛化性能,提高源代码漏洞检测模型检测准确性。
本发明一实施例提供一种基于多特征学习的漏洞检测方法,包括:
获取待检测函数源代码;
根据所述待检测函数源代码确定待检测函数源代码的第一标记序列向量和第一代码属性图向量;
将所述第一标记序列向量和第一代码属性图向量输入源代码漏洞检测模型,以使源代码漏洞检测模型提取所述第一标记序列向量的序列特征和所述第一代码属性图向量的图特征,根据所提取的序列特征和图特征确定待检测函数源代码的漏洞状态;
其中,通过以下方式构建所述源代码漏洞检测模型:
从源代码漏洞数据库中提取所有函数源代码的第二标记序列向量、第二代码属性图向量和漏洞标签;
构建初始源代码漏洞检测模型,以所有函数源代码的第二标记序列向量、第二代码属性图向量和漏洞标签作为训练集,对所述初始源代码漏洞检测模型进行训练,生成源代码漏洞检测模型。
进一步地,从源代码漏洞数据库中提取所有函数源代码的第二标记序列向量、第二代码属性图向量,包括:
从源代码漏洞数据库中提取所有函数源代码的第二标记序列和第二代码属性图;
根据各所述第二标记序列对初始词嵌入模型进行训练生成词嵌入模型;
将各所述第二标记序列输入词嵌入模型,以使词嵌入模型输出第二标记序列向量;
将各所述第二代码属性图输入词嵌入模型,以使词嵌入模型输出第二代码属性图向量。
进一步地,所述初始词嵌入模型的构建包括:
从大型源代码数据库中提取所有函数源代码的第三标记序列;
根据各所述第三标记序列对预设词嵌入模型进行训练生成初始词嵌入模型。
进一步地,所述将各所述第二标记序列输入词嵌入模型,以使词嵌入模型输出第二标记序列向量,包括:
对于每一输入词嵌入模型的第二标记序列,词嵌入模型提取第二标记序列中的词标记;
将各词标记转换为数值向量;
根据各数值向量生成第二标记序列向量。
进一步地,所述将各所述第二代码属性图输入词嵌入模型,以使词嵌入模型输出第二代码属性图向量,包括:
对于每一输入词嵌入模型的第二代码属性图,词嵌入模型根据第二代码属性图生成第二代码属性图所有节点的向量矩阵以及第二代码属性图的邻接矩阵;
根据所述向量矩阵和邻接矩阵生成第二代码属性图向量。
进一步地,所述初始源代码漏洞检测模型由循环神经网络、图神经网络以及多层感知机构成;
所述循环神经网络由若干双向门控制循环单元层和第一全局池化层组成;
所述图神经网络由若干图注意卷积层和第二全局池化层组成;
所述多层感知机由输入层、输出层以及若干全连接层。
进一步地,以所有函数源代码的第二标记序列向量、第二代码属性图向量和漏洞标签作为训练集,对所述初始源代码漏洞检测模型进行训练,生成源代码漏洞检测模型,包括:
在每一次迭代训练中,将函数源代码的第二标记序列向量和第二代码属性图向量输入到初始源代码漏洞检测模型进行训练时,初始源代码漏洞检测模型会输出预测结果;
基于所述预测结果和漏洞标签确定初始源代码漏洞检测模型的F1值;
根据所述F1值对初始源代码漏洞检测模型的模型参数进行调整,并继续执行下一次迭代训练,直至初始源代码漏洞检测模型达到预设收敛条件时,生成源代码漏洞检测模型。
在上述方法项实施例的基础上,本发明对应提供了装置项实施例;
本发明一实施例对应提供了一种基于多特征学习的漏洞检测装置,包括:数据获取模块、数据处理模块、漏洞检测模块以及模型构建模块;
所述数据获取模块,用于获取待检测函数源代码;
所述数据处理模块,用于根据所述待检测函数源代码确定待检测函数源代码的第一标记序列向量和第一代码属性图向量;
所述漏洞检测模块,用于将所述第一标记序列向量和第一代码属性图向量输入源代码漏洞检测模型,以使源代码漏洞检测模型提取所述第一标记序列向量的序列特征和所述第一代码属性图向量的图特征,根据所提取的序列特征和图特征确定待检测函数源代码的漏洞状态;
所述模型构建模块,用于从源代码漏洞数据库中提取所有函数源代码的第二标记序列向量、第二代码属性图向量和漏洞标签;构建初始源代码漏洞检测模型,以所有函数源代码的第二标记序列向量、第二代码属性图向量和漏洞标签作为训练集,对所述初始源代码漏洞检测模型进行训练,生成源代码漏洞检测模型。
本发明另一实施例提供了一种终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现上述发明实施例所述的一种基于多特征学习的漏洞检测方法。
本发明另一实施例提供了一种存储介质,所述存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述存储介质所在设备执行上述发明实施例所述的一种基于多特征学习的漏洞检测方法。
通过实施本发明具有如下有益效果:
本发明提供了一种基于多特征学习的漏洞检测方法、装置、设备及存储介质,该漏洞检测方法,通过获取待检测函数源代码,将待检测函数源代码转换为第一标记序列向量和第一代码属性图向量后,通过源代码漏洞检测模型对第一标记序列向量的序列特征进行提取,对第一代码属性图向量的图特征进行提取后,基于所提取的序列特征和图特征确定待检测函数源代码中是否存在漏洞;通过训练源代码漏洞检测模型对待检测函数源代码进行漏洞检测,以机器学习检测的方式替代人工检测,提高漏洞检测效率;进一步地,通过对序列特征和图特征的提取,能使源代码漏洞检测模型早训练时学习多种特征,使所所构建的源代码漏洞检测模型具有更好的泛化性能,提高源代码漏洞检测模型检测准确性。
附图说明
图1是本发明一实施例提供的一种基于多特征学习的漏洞检测方法的流程示意图。
图2是本发明一实施例提供的一示例函数源代码。
图3是本发明一实施例提供的一种基于多特征学习的漏洞检测方法的总体框架图。
图4是本发明一实施例提供的示例函数标记序列提取过程示意图。
图5是本发明一实施例提供的词嵌入模型训练过程示意图。
图6是本发明一实施例提供的标记序列向量化表示过程示意图。
图7是本发明一实施例提供一示例函数源代码的代码属性图。
图8是本发明一实施例提供代码属性图向量化表示过程示意图。
图9是本发明一实施例提供的一种基于多特征学习的漏洞检测装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,是本发明一实施例提供的一种基于多特征学习的漏洞检测方法,包括:
步骤S1:获取待检测函数源代码;
步骤S2:根据所述待检测函数源代码确定待检测函数源代码的第一标记序列向量和第一代码属性图向量;
步骤S3:将所述第一标记序列向量和第一代码属性图向量输入源代码漏洞检测模型,以使源代码漏洞检测模型提取所述第一标记序列向量的序列特征和所述第一代码属性图向量的图特征,根据所提取的序列特征和图特征确定待检测函数源代码的漏洞状态;
其中,通过以下方式构建所述源代码漏洞检测模型:从源代码漏洞数据库中提取所有函数源代码的第二标记序列向量、第二代码属性图向量和漏洞标签;构建初始源代码漏洞检测模型,以所有函数源代码的第二标记序列向量、第二代码属性图向量和漏洞标签作为训练集,对所述初始源代码漏洞检测模型进行训练,生成源代码漏洞检测模型。
对于步骤S1、获取待检测函数源代码,如图2所示,是本发明实施例提供的一示例函数源代码。
对于步骤S2、将待检测函数源代码转化为第一标记序列向量和第一代码属性图向量;其中,代码属性图(Code Property Graph,CPG)和标记序列为中间表示。
对于步骤S3、将转化后的第一标记序列向量和第一代码属性图向量输入到已训练的源代码漏洞检测模型中,以使源代码漏洞检测模型对第一标记序列向量的序列特征进行提取,对第一代码属性图向量的图特征进行提取,基于所提取的序列特征和图特征输出待检测函数源代码的漏洞状态;其中,漏洞状态用于指示待检测函数源代码中是否含有漏洞。
对于步骤S3中的源代码漏洞检测模型通过以下方式训练得到:
首先获取一个可用的特定编程语言的大型源代码数据库和软件的源代码漏洞数据库。从软件的源代码漏洞数据库中可以明确得知漏洞类型和漏洞在源代码中所在的位置,从源代码漏洞数据库中可以收集包含某种类型的漏洞的源代码作为数据集。如图3所示,是本发明构建源代码漏洞检测模型的主体实现逻辑。主要分为数据预处理和模型训练两部分。
在一个优选的实施例中,从源代码漏洞数据库中提取所有函数源代码的第二标记序列向量、第二代码属性图向量,包括:从源代码漏洞数据库中提取所有函数源代码的第二标记序列和第二代码属性图;根据各所述第二标记序列对初始词嵌入模型进行训练生成词嵌入模型;将各所述第二标记序列输入词嵌入模型,以使词嵌入模型输出第二标记序列向量;将各所述第二代码属性图输入词嵌入模型,以使词嵌入模型输出第二代码属性图向量。
在一个优选的实施例中,所述初始词嵌入模型的构建包括:从大型源代码数据库中提取所有函数源代码的第三标记序列;根据各所述第三标记序列对预设词嵌入模型进行训练生成初始词嵌入模型。
具体的,从源代码漏洞数据库中提取所有函数源代码的第二标记序列和第二代码属性图。以图2所示函数源代码为示例,将图2所示函数源代码转换为标记序列的过程如图4所示。首先,对函数源代码进行清洗,删除函数源代码中的注释、空行、每行的空格;将清洗后的函数源代码进行规范化,将用户自定义的变量名、函数名规范化表示为“VAR#”和“FUN#”,其中“#”为一整数,其具体值为用户自定义变量名或函数名在函数源代码中出现的顺序;将规范化后的函数源代码进行分词得到函数源代码的标记序列(即上述第二标记序列),根据源代码漏洞数据库所得到的所有函数源代码的标记序列作为词库C2
从大型源代码数据库中提取所有函数源代码的标记序列(即上述第三标记序列),提取标记序列的过程与从源代码漏洞数据库中提取标记序列(即上述第二标记序列)的过程一直,均为通过对函数源代码的清洗、规范化和分词处理后得到,此处不再赘述。将从大型源代码数据库中提取所有函数源代码的标记序列(即上述第三标记序列)作为词库C1
如图5所示,使用word2vec在词库C1上训练生成一个初始词嵌入模型,然后使用词库C2对所生成的初始词嵌入模型进行二次训练,生成词嵌入模型Mc
在一个优选的实施例中,所述将各所述第二标记序列输入词嵌入模型,以使词嵌入模型输出第二标记序列向量,包括:对于每一输入词嵌入模型的第二标记序列,词嵌入模型提取第二标记序列中的词标记;将各词标记转换为数值向量;根据各数值向量生成第二标记序列向量。
具体的,将各第二标记序列输入词嵌入模型,以使词嵌入模型输出第二标记序列向量。以图4生成的标记序列为例,如图6所示,将图3生成的标记序列输入到图5中所生成的词嵌入模型Mc中,使用词嵌入模型Mc将函数标记序列中的词标记ci转换成数值向量xi;在词嵌入模型将标记序列中的所有词标记转换成数值向量后,可得到标记序列向量X(即上述第二标记序列向量);其中,标记序列向量X为一个m×d的二维向量,m为函数最大允许标记数,d为词嵌入向量的维度。m的具体值由所有函数的标记序列长度的统计分布得出,可设置为所有标记序列长度的90%分位点。当函数的标记序列长度l小于m时,二维向量X的第l+1行到第m行的行向量均赋值为零向量;当函数的标记序列长度l大于m时,二维向量X仅由函数的标记序列的前m个词标记的数值向量构成。
从源代码漏洞数据库中提取所有函数源代码的第二代码属性图,该提取步骤可以使用程序分析软件Joern提取代码属性图。如图7所示是本发明实施例提供的一函数源代码的代码属性图的示例。
在一个优选的实施例中,所述将各所述第二代码属性图输入词嵌入模型,以使词嵌入模型输出第二代码属性图向量,包括:对于每一输入词嵌入模型的第二代码属性图,词嵌入模型根据第二代码属性图生成第二代码属性图所有节点的向量矩阵以及第二代码属性图的邻接矩阵;根据所述向量矩阵和邻接矩阵生成第二代码属性图向量。
具体的,在提取到函数源代码的代码属性图后,使用词嵌入模型将其向量化表示为G(V,A);其中,V为代码属性图中所有节点的向量矩阵,A为代码属性图的邻接矩阵。需要说明的是,代码属性图的节点包含代码和类型两个属性,其中代码属性的标记序列可根据上述从数据库中提取标记序列的步骤获取,将代码属性的标记序列使用词嵌入模型Mc向量化表示为Vcode1;类型属性使用独热编码向量化表示为Vcode2;最后一个节点的向量化表示即为Vcode1和Vcode2的拼接向量。代码属性图中边类型包括抽象语法树的边EAST、控制流图的边ECFG,在邻接矩阵A中用0表示节点间不存在可达的边,1、2分别表示节点间存在一条可达的边EAST、ECFG。示例性的,如图8所示,是本发明实施例提供的对代码属性图向量化的流程图。分别对应上述对代码属性图节点和图结构向量化的过程,最终得到向量矩阵和邻接矩阵,根据向量矩阵和邻接矩阵得到第二代码属性图向量化表示为G(V,A)。优选的,对G(V,A)进行标准化处理,根据所有函数源代码的代码属性图节点数的分布,可设置所有函数源代码中代码属性图节点数的80%分位点作为标准节点数,对过大的代码属性图进行裁剪,对过小的代码属性图添加孤立的无属性节点,继而得到标准化表示G′(V′,A′)。
根据源代码漏洞数据库的信息判定函数源代码是否存在漏洞,若函数存在漏洞,则将函数的漏洞标签赋值为0;若不存在漏洞,则赋值为1。在完成漏洞标签的制作后,根据所有函数源代码的第二标记序列向量、第二代码属性图向量和漏洞标签构建训练集。
构建一个初始源代码漏洞检测模型,以上述所构建的训练集对初始源代码漏洞检测模型进行训练。
在一个优选的实施例中,所述初始源代码漏洞检测模型由循环神经网络、图神经网络以及多层感知机构成;所述循环神经网络由若干双向门控制循环单元层和第一全局池化层组成;所述图神经网络由若干图注意卷积层和第二全局池化层组成;所述多层感知机由输入层、输出层以及若干全连接层。
在一个优选的实施例中,以所有函数源代码的第二标记序列向量、第二代码属性图向量和漏洞标签作为训练集,对所述初始源代码漏洞检测模型进行训练,生成源代码漏洞检测模型,包括:在每一次迭代训练中,将函数源代码的第二标记序列向量和第二代码属性图向量输入到初始源代码漏洞检测模型进行训练时,初始源代码漏洞检测模型会输出预测结果;基于所述预测结果和漏洞标签确定初始源代码漏洞检测模型的F1值;根据所述F1值对初始源代码漏洞检测模型的模型参数进行调整,并继续执行下一次迭代训练,直至初始源代码漏洞检测模型达到预设收敛条件时,生成源代码漏洞检测模型。
具体的,如图3所示,构建一个包含循环神经网络、图神经网络和多层感知机的初始源代码漏洞检测模型;循环神经网络由多个双向门控循环单元层(BGRU)和一个全局池化层(即上述第一全局池化层)组成;图神经网络由多个图注意卷积层和一个全局池化层(即上述第二全局池化层)组成;多层感知机由一个输入层、多个全连接层和一个输出层组成;在训练过程中,将第二标记序列向量输入到循环神经网络中,循环神经网络学习并提取第二标记序列向量的序列特征;将第二代码属性图输入到图神经网络中,图神经网络学习并提取第二代码属性图的图特征;在多层感知机中,根据第一全局池化层输出的序列特征和第二全局池化层输出的图特征预测漏洞结果,将漏洞检测结果与输入的含有正确漏洞检测结果的漏洞标签进行对比,以确定初始源代码漏洞检测模型的F1值。
需要补充的是,在对初始源代码漏洞检测模型进行训练的过程中,使用n次k折交叉验证方法及F1值对模型参数进行选择,模型参数由实际训练数据确定,具体包括图卷积层的层数、BGRU层数、全连接层数、各层神经元的个数、学习率、激活函数、批大小、训练轮次等。通过每次迭代训练中对模型参数的调整,使初始源代码漏洞检测模型逐渐收敛,在达到预设收敛条件时,即生成源代码漏洞检测模型。
需要说明的是,在本发明实施例中,初始源代码漏洞检测模型的预测结果有四种可能,分别为:真正例(True Positive)、假正例(False Positive)、真反例(TrueNegative)和假反例(False Negative),分别记为TP、FP、TN、FN。真正例表示测试样本实际为含漏洞函数,预测结果为含漏洞函数;假正例表示测试样本实际为不含漏洞函数,预测结果为含漏洞函数;真反例表示测试样本实际为不含漏洞函数,预测结果亦为不含漏洞函数;假反例表示测试样本实际为含漏洞函数,预测结果为不含漏洞函数。通过上述对预测结果可以得到F1的计算公式如下:
其中,precision为精确率;recall为召回率。
在生成源代码漏洞检测模型后,将步骤S1所获取的待检测函数源代码进行预处理,得到第一标记序列向量和第二代码属性向量;此处的得到第一标记序列向量和第二代码属性向量与上述第二标记序列向量和第二代码属性向量的方式一致,此处不再赘述。将所得到的第一标记序列向量和第二代码属性向量输入到所生成的源代码漏洞检测模型中,若输出结果为1,表示函数存在漏洞;输出结果为0表示函数不存在漏洞。
在上述方法项实施例的基础上,本发明对应提供了装置项实施例。
如图9所示,本发明一实施例提供了一种基于多特征学习的漏洞检测装置,包括:数据获取模块、数据处理模块、漏洞检测模块以及模型构建模块;
所述数据获取模块,用于获取待检测函数源代码;
所述数据处理模块,用于根据所述待检测函数源代码确定待检测函数源代码的第一标记序列向量和第一代码属性图向量;
所述漏洞检测模块,用于将所述第一标记序列向量和第一代码属性图向量输入源代码漏洞检测模型,以使源代码漏洞检测模型提取所述第一标记序列向量的序列特征和所述第一代码属性图向量的图特征,根据所提取的序列特征和图特征确定待检测函数源代码的漏洞状态;
所述模型构建模块,用于从源代码漏洞数据库中提取所有函数源代码的第二标记序列向量、第二代码属性图向量和漏洞标签;构建初始源代码漏洞检测模型,以所有函数源代码的第二标记序列向量、第二代码属性图向量和漏洞标签作为训练集,对所述初始源代码漏洞检测模型进行训练,生成源代码漏洞检测模型。
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
所述领域的技术人员可以清楚地了解到,为了方便和简洁,上述描述的装置的具体工作过程,可参考前述方法实施例中对应的过程,在此不再赘述。
在上述方法项实施例的基础上,本发明对应提供了终端设备项实施例。
本发明一实施例提供了一种终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现本发明中任意一项所述的一种基于多特征学习的漏洞检测方法。
终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备可包括,但不仅限于,处理器、存储器。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述终端设备的控制中心,利用各种接口和线路连接整个终端设备的各个部分。
所述存储器可用于存储所述计算机程序,所述处理器通过运行或执行存储在所述存储器内的计算机程序,以及调用存储在存储器内的数据,实现所述终端设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据手机的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
在上述方法项实施例的基础上,本发明对应提供了存储介质项实施例。
本发明一实施例提供了一种存储介质,所述存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述存储介质所在设备执行本发明中任意一项所述的一种基于多特征学习的漏洞检测方法。
所述存储介质为计算机可读存储介质,所述计算机程序存储在所述计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

Claims (10)

1.一种基于多特征学习的漏洞检测方法,其特征在于,包括:
获取待检测函数源代码;
根据所述待检测函数源代码确定待检测函数源代码的第一标记序列向量和第一代码属性图向量;
将所述第一标记序列向量和第一代码属性图向量输入源代码漏洞检测模型,以使源代码漏洞检测模型提取所述第一标记序列向量的序列特征和所述第一代码属性图向量的图特征,根据所提取的序列特征和图特征确定待检测函数源代码的漏洞状态;
其中,通过以下方式构建所述源代码漏洞检测模型:
从源代码漏洞数据库中提取所有函数源代码的第二标记序列向量、第二代码属性图向量和漏洞标签;
构建初始源代码漏洞检测模型,以所有函数源代码的第二标记序列向量、第二代码属性图向量和漏洞标签作为训练集,对所述初始源代码漏洞检测模型进行训练,生成源代码漏洞检测模型。
2.如权利要求1所述的一种基于多特征学习的漏洞检测方法,其特征在于,从源代码漏洞数据库中提取所有函数源代码的第二标记序列向量、第二代码属性图向量,包括:
从源代码漏洞数据库中提取所有函数源代码的第二标记序列和第二代码属性图;
根据各所述第二标记序列对初始词嵌入模型进行训练生成词嵌入模型;
将各所述第二标记序列输入词嵌入模型,以使词嵌入模型输出第二标记序列向量;
将各所述第二代码属性图输入词嵌入模型,以使词嵌入模型输出第二代码属性图向量。
3.如权利要求2所述的一种基于多特征学习的漏洞检测方法,其特征在于,所述初始词嵌入模型的构建包括:
从大型源代码数据库中提取所有函数源代码的第三标记序列;
根据各所述第三标记序列对预设词嵌入模型进行训练生成初始词嵌入模型。
4.如权利要求2所述的一种基于多特征学习的漏洞检测方法,其特征在于,所述将各所述第二标记序列输入词嵌入模型,以使词嵌入模型输出第二标记序列向量,包括:
对于每一输入词嵌入模型的第二标记序列,词嵌入模型提取第二标记序列中的词标记;
将各词标记转换为数值向量;
根据各数值向量生成第二标记序列向量。
5.如权利要求2所述的一种基于多特征学习的漏洞检测方法,其特征在于,所述将各所述第二代码属性图输入词嵌入模型,以使词嵌入模型输出第二代码属性图向量,包括:
对于每一输入词嵌入模型的第二代码属性图,词嵌入模型根据第二代码属性图生成第二代码属性图所有节点的向量矩阵以及第二代码属性图的邻接矩阵;
根据所述向量矩阵和邻接矩阵生成第二代码属性图向量。
6.如权利要求1所述的一种基于多特征学习的漏洞检测方法,其特征在于,所述初始源代码漏洞检测模型由循环神经网络、图神经网络以及多层感知机构成;
所述循环神经网络由若干双向门控制循环单元层和第一全局池化层组成;
所述图神经网络由若干图注意卷积层和第二全局池化层组成;
所述多层感知机由输入层、输出层以及若干全连接层。
7.如权利要求1所述的一种基于多特征学习的漏洞检测方法,其特征在于,以所有函数源代码的第二标记序列向量、第二代码属性图向量和漏洞标签作为训练集,对所述初始源代码漏洞检测模型进行训练,生成源代码漏洞检测模型,包括:
在每一次迭代训练中,将函数源代码的第二标记序列向量和第二代码属性图向量输入到初始源代码漏洞检测模型进行训练时,初始源代码漏洞检测模型会输出预测结果;
基于所述预测结果和漏洞标签确定初始源代码漏洞检测模型的F1值;
根据所述F1值对初始源代码漏洞检测模型的模型参数进行调整,并继续执行下一次迭代训练,直至初始源代码漏洞检测模型达到预设收敛条件时,生成源代码漏洞检测模型。
8.一种基于多特征学习的漏洞检测装置,其特征在于,包括:数据获取模块、数据处理模块、漏洞检测模块以及模型构建模块;
所述数据获取模块,用于获取待检测函数源代码;
所述数据处理模块,用于根据所述待检测函数源代码确定待检测函数源代码的第一标记序列向量和第一代码属性图向量;
所述漏洞检测模块,用于将所述第一标记序列向量和第一代码属性图向量输入源代码漏洞检测模型,以使源代码漏洞检测模型提取所述第一标记序列向量的序列特征和所述第一代码属性图向量的图特征,根据所提取的序列特征和图特征确定待检测函数源代码的漏洞状态;
所述模型构建模块,用于从源代码漏洞数据库中提取所有函数源代码的第二标记序列向量、第二代码属性图向量和漏洞标签;构建初始源代码漏洞检测模型,以所有函数源代码的第二标记序列向量、第二代码属性图向量和漏洞标签作为训练集,对所述初始源代码漏洞检测模型进行训练,生成源代码漏洞检测模型。
9.一种终端设备,其特征在于,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至7中任意一项所述的一种基于多特征学习的漏洞检测方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述存储介质所在设备执行如权利要求1至7中任意一项所述的一种基于多特征学习的漏洞检测方法。
CN202311780138.3A 2023-12-21 2023-12-21 基于多特征学习的漏洞检测方法、装置、设备及存储介质 Pending CN118133287A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311780138.3A CN118133287A (zh) 2023-12-21 2023-12-21 基于多特征学习的漏洞检测方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311780138.3A CN118133287A (zh) 2023-12-21 2023-12-21 基于多特征学习的漏洞检测方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN118133287A true CN118133287A (zh) 2024-06-04

Family

ID=91230714

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311780138.3A Pending CN118133287A (zh) 2023-12-21 2023-12-21 基于多特征学习的漏洞检测方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN118133287A (zh)

Similar Documents

Publication Publication Date Title
CN110363049B (zh) 图形元素检测识别和类别确定的方法及装置
CN109086654B (zh) 手写模型训练方法、文本识别方法、装置、设备及介质
CN112052684A (zh) 电力计量的命名实体识别方法、装置、设备和存储介质
CN111338692B (zh) 基于漏洞代码的漏洞分类方法、装置及电子设备
CN112989363B (zh) 漏洞定位方法、装置、电子设备和存储介质
CN110110213A (zh) 挖掘用户职业的方法、装置、计算机可读存储介质和终端设备
CN112100374A (zh) 文本聚类方法、装置、电子设备及存储介质
CN116340952A (zh) 一种基于操作码程序依赖图的智能合约漏洞检测方法
CN115146062A (zh) 融合专家推荐与文本聚类的智能事件分析方法和系统
CN117851605B (zh) 一种行业知识图谱构建方法、计算机设备及存储介质
CN113987188A (zh) 一种短文本分类方法、装置及电子设备
CN116702157B (zh) 一种基于神经网络的智能合约漏洞检测方法
CN111738290A (zh) 图像检测方法、模型构建和训练方法、装置、设备和介质
CN111290953A (zh) 分析测试日志的方法与装置
CN116595534A (zh) 一种solidity智能合约的缺陷检测方法
CN110705258A (zh) 文本实体识别方法及装置
CN113407719B (zh) 文本数据的检测方法、装置、电子设备及存储介质
Sinpang et al. Detecting ambiguity in requirements analysis using Mamdani fuzzy inference
CN115565115A (zh) 一种舾装件智能识别方法、计算机设备
CN118133287A (zh) 基于多特征学习的漏洞检测方法、装置、设备及存储介质
CN115373982A (zh) 基于人工智能的测试报告分析方法、装置、设备及介质
CN114398482A (zh) 一种词典构造方法、装置、电子设备及存储介质
CN114358011A (zh) 命名实体提取方法与装置以及电子设备
CN115062126A (zh) 一种语句分析方法、装置、电子设备及可读存储介质
CN116361816B (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