CN114020628A - 代码漏洞检测方法及装置 - Google Patents

代码漏洞检测方法及装置 Download PDF

Info

Publication number
CN114020628A
CN114020628A CN202111319219.4A CN202111319219A CN114020628A CN 114020628 A CN114020628 A CN 114020628A CN 202111319219 A CN202111319219 A CN 202111319219A CN 114020628 A CN114020628 A CN 114020628A
Authority
CN
China
Prior art keywords
weight
control flow
analyzed
program
flow graph
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
CN202111319219.4A
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.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
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 Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202111319219.4A priority Critical patent/CN114020628A/zh
Publication of CN114020628A publication Critical patent/CN114020628A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • 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/045Combinations of networks
    • 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)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)

Abstract

一种代码漏洞检测方法及装置,可用于信息安全领域、金融领域或其他领域,方法包括:根据获取的待分析程序片段及已知漏洞程序片段,分别生成对应的控制流图;对控制流图中的基本块分别进行权重评分计算,得到权重评分计算结果;从控制流图的基本块中,选取预设数量的权重词符;将权重词符转换为特征矩阵,输入至预先建立的双生神经网络模型中,得到待分析程序片段与已知漏洞程序片段的特征矩阵之间的相似度,根据相似度对待分析程序片段进行漏洞检测。本发明基于双生神经网络进行代码漏洞挖掘,能够在一种漏洞被发现后,批量发现系统中存在的其他类似代码,从而深度揭示应用系统中的相关风险,有效保证应用代码安全。

Description

代码漏洞检测方法及装置
技术领域
本发明涉及代码漏洞挖掘技术领域,尤指一种代码漏洞检测方法及装置。
背景技术
随着信息技术的发展,软件已成为我们生活中息息相关的重要元素,而与之相关的网络攻击活动数量也在逐年增长。在层出不穷的漏洞中,如何快速、准确地发现应用代码中类似的漏洞,防止不安全的代码持续暴露在高风险环境中,是每个软件开发商必须关注的问题。
在实际开发中,一种存在漏洞的开发模式很容易在系统的其他模块被找到。然而目前现存的静态分析方法,主要基于污点跟踪、符号执行等技术,并不适用于相似漏洞代码的搜寻。
发明内容
针对现有技术中存在的问题,本发明实施例的主要目的在于提供一种代码漏洞检测方法及装置,实现快速匹配应用系统中的类似代码,批量挖掘相似的风险问题。
为了实现上述目的,本发明实施例提供一种代码漏洞检测方法,所述方法包括:
获取待分析程序片段及已知漏洞程序片段,并根据所述待分析程序片段及已知漏洞程序片段,分别生成待分析程序片段控制流图及已知漏洞程序片段控制流图;
对所述待分析程序片段控制流图中的基本块及所述已知漏洞程序片段控制流图中的基本块分别进行权重评分计算,得到各基本块的权重评分计算结果;
根据所述权重评分计算结果,从所述待分析程序片段控制流图的基本块及所述已知漏洞程序片段控制流图的基本块中,分别选取预设数量的权重词符;
将所述权重词符转换为特征矩阵,并将所述特征矩阵输入至预先建立的双生神经网络模型中,得到待分析程序片段的特征矩阵与已知漏洞程序片段的特征矩阵之间的相似度,并根据所述相似度对所述待分析程序片段进行漏洞检测。
可选的,在本发明一实施例中,所述对所述待分析程序片段控制流图中的基本块及所述已知漏洞程序片段控制流图中的基本块分别进行权重评分计算,得到各基本块的权重评分计算结果包括:
根据所述待分析程序片段控制流图及所述已知漏洞程序片段控制流图,确定所述待分析程序片段控制流图中的基本块及其对应的多个词符,以及确定所述已知漏洞程序片段控制流图中的基本块及其对应的多个词符;
利用重要性排序算法,对所述待分析程序片段控制流图中的基本块及所述已知漏洞程序片段控制流图中的基本块分别进行权重评分计算,得到各基本块的权重评分计算结果。
可选的,在本发明一实施例中,所述根据所述权重评分计算结果,从所述待分析程序片段控制流图中的基本块及所述已知漏洞程序片段控制流图中的基本块中,分别选取预设数量的权重词符包括:
根据各基本块的权重评分计算结果,分别得到所述待分析程序片段控制流图中各词符的总权重评分以及所述已知漏洞程序片段控制流图中各词符的总权重评分;
根据总权重评分,从所述待分析程序片段控制流图中的基本块及所述已知漏洞程序片段控制流图中的基本块中,分别选取预设数量的权重词符。
可选的,在本发明一实施例中,所述将所述权重词符转换为特征矩阵包括:
利用词嵌入算法,生成各权重词符的语义向量;
根据各权重词符的语义向量及各权重词符对应的总权重评分,得到各权重词符的特征向量;
根据所述特征向量,分别生成所述待分析程序片段对应的权重词符的特征矩阵及所述已知漏洞程序片段对应的权重词符的特征矩阵。
可选的,在本发明一实施例中,所述将所述特征矩阵输入至预先建立的双生神经网络模型中,得到待分析程序片段的特征矩阵与已知漏洞程序片段的特征矩阵之间的相似度包括:
将所述特征矩阵输入至预先建立的双生神经网络模型中,经由所述双生神经网络模型中的卷积层、池化层及全连接层的处理后,得到所述待分析程序片段的特征矩阵与已知漏洞程序片段的特征矩阵之间对应的欧式距离,并将所述欧式距离作为相似度。
可选的,在本发明一实施例中,所述根据所述相似度对所述待分析程序片段进行漏洞检测包括:
若获知所述相似度大于预设阈值,则判定所述待分析程序片段中存在与所述已知漏洞程序片段中类型一致的漏洞。
本发明实施例还提供一种代码漏洞检测装置,所述装置包括:
控制流图模块,用于获取待分析程序片段及已知漏洞程序片段,并根据所述待分析程序片段及已知漏洞程序片段,分别生成待分析程序片段控制流图及已知漏洞程序片段控制流图;
权重评分模块,用于对所述待分析程序片段控制流图中的基本块及所述已知漏洞程序片段控制流图中的基本块分别进行权重评分计算,得到各基本块的权重评分计算结果;
权重词符模块,用于根据所述权重评分计算结果,从所述待分析程序片段控制流图的基本块及所述已知漏洞程序片段控制流图的基本块中,分别选取预设数量的权重词符;
漏洞检测模块,用于将所述权重词符转换为特征矩阵,并将所述特征矩阵输入至预先建立的双生神经网络模型中,得到待分析程序片段的特征矩阵与已知漏洞程序片段的特征矩阵之间的相似度,并根据所述相似度对所述待分析程序片段进行漏洞检测。
可选的,在本发明一实施例中,所述权重评分模块包括:
基本块单元,用于根据所述待分析程序片段控制流图及所述已知漏洞程序片段控制流图,确定所述待分析程序片段控制流图中的基本块及其对应的多个词符,以及确定所述已知漏洞程序片段控制流图中的基本块及其对应的多个词符;
评分计算单元,用于利用重要性排序算法,对所述待分析程序片段控制流图中的基本块及所述已知漏洞程序片段控制流图中的基本块分别进行权重评分计算,得到各基本块的权重评分计算结果。
可选的,在本发明一实施例中,所述权重词符模块包括:
总评分单元,用于根据各基本块的权重评分计算结果,分别得到所述待分析程序片段控制流图中各词符的总权重评分以及所述已知漏洞程序片段控制流图中各词符的总权重评分;
权重词符单元,用于根据总权重评分,从所述待分析程序片段控制流图中的基本块及所述已知漏洞程序片段控制流图中的基本块中,分别选取预设数量的权重词符。
可选的,在本发明一实施例中,所述漏洞检测模块包括:
语义向量单元,用于利用词嵌入算法,生成各权重词符的语义向量;
特征向量单元,用于根据各权重词符的语义向量及各权重词符对应的总权重评分,得到各权重词符的特征向量;
特征矩阵单元,用于根据所述特征向量,分别生成所述待分析程序片段对应的权重词符的特征矩阵及所述已知漏洞程序片段对应的权重词符的特征矩阵。
可选的,在本发明一实施例中,所述漏洞检测模块还用于将所述特征矩阵输入至预先建立的双生神经网络模型中,经由所述双生神经网络模型中的卷积层、池化层及全连接层的处理后,得到所述待分析程序片段的特征矩阵与已知漏洞程序片段的特征矩阵之间对应的欧式距离,并将所述欧式距离作为相似度。
可选的,在本发明一实施例中,所述漏洞检测模块还用于若获知所述相似度大于预设阈值,则判定所述待分析程序片段中存在与所述已知漏洞程序片段中类型一致的漏洞。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述方法的计算机程序。
本发明基于双生神经网络进行代码漏洞挖掘,能够在一种漏洞被发现后,批量发现系统中存在的其他类似代码,从而深度揭示应用系统中的相关风险,有效保证应用代码安全。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一种代码漏洞检测方法的流程图;
图2为本发明实施例中计算权重评分的流程图;
图3为本发明实施例中选取权重词符的流程图;
图4为本发明实施例中得到特征矩阵的流程图;
图5为本发明实施例一种应用代码漏洞检测方法的系统的结构示意图;
图6为本发明实施例中代码解析模块的结构示意图;
图7为本发明实施例中代码控制流图的示意图;
图8为本发明实施例中漏洞发现模块的结构示意图;
图9为本发明实施例中应用代码漏洞检测方法的系统的工作流程图;
图10为本发明实施例一种代码漏洞检测装置的结构示意图;
图11为本发明实施例中权重评分模块的结构示意图;
图12为本发明实施例中权重词符模块的结构示意图;
图13为本发明实施例中漏洞检测模块的结构示意图;
图14为本发明一实施例所提供的电子设备的结构示意图。
具体实施方式
本发明实施例提供一种代码漏洞检测方法及装置,可用于金融领域及其他领域,需要说明的是,本发明的代码漏洞检测方法及装置可用于金融领域,也可用于除金融领域之外的任意领域,本发明的代码漏洞检测方法及装置应用领域不做限定。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示为本发明实施例一种代码漏洞检测方法的流程图,本发明实施例提供的代码漏洞检测方法的执行主体包括但不限于计算机。图中所示方法包括:
步骤S1,获取待分析程序片段及已知漏洞程序片段,并根据所述待分析程序片段及已知漏洞程序片段,分别生成待分析程序片段控制流图及已知漏洞程序片段控制流图。
其中,从数据库或其他存储设备中获取已知漏洞程序片段,并接收用户输入的待分析程序片段。针对不同编程语言,使用目前已有的对应的静态代码分析工具,将待分析程序片段及已知漏洞程序片段生成对应的控制流图,生成的控制流示例如图7所示。由图7可见,一个程序片段的控制流被表示为含有节点集合与边集合表示的有向图,图中每个节点代表一个基本块(基本块指一段只能从他的开始处进入,并从他的结束处离开的线性代码序列),基本块集合与有向边集合整体代表了程序片段的控制流逻辑。
步骤S2,对所述待分析程序片段控制流图中的基本块及所述已知漏洞程序片段控制流图中的基本块分别进行权重评分计算,得到各基本块的权重评分计算结果。
其中,基于词法分析,获取权重词符(词符简称token),词符表明以词语为最小分析单元。具体的,如图7中的基本块‘if r0!=“sum”goto label3’可以拆成if、r0、!=、sum、goto、label3六个token块。由于一段代码中包含大量代码块,而每个代码块中又存在多个token,为提升分析效率,需筛选具有重要语义的权重词符,即权重token。
进一步的,基于重要性排序算法,如Pagerank算法,计算每个基本块的重要性评分,第一步给每个代码块赋予相同的权重评分PR(i),随后按照公式(1)对评分进行更新,直到评分值趋于稳定不再发生变化。
Figure BDA0003344620610000061
其中,Gi表示所有能跳转到i的基本块集合,L(j)表示基本块j对外跳转的基本块的总数,N是基本块的总数,α一般取值为0.85。
步骤S3,根据所述权重评分计算结果,从所述待分析程序片段控制流图的基本块及所述已知漏洞程序片段控制流图的基本块中,分别选取预设数量的权重词符。
其中,计算得到每个基本块的权重评分后,对基本块中的所有token都赋予相应评分,随后将同一token在不同基本块中的权重评分进行求和得到token总权重评分,再按照预设数量选取权重token。
步骤S4,将所述权重词符转换为特征矩阵,并将所述特征矩阵输入至预先建立的双生神经网络模型中,得到待分析程序片段的特征矩阵与已知漏洞程序片段的特征矩阵之间的相似度,并根据所述相似度对所述待分析程序片段进行漏洞检测。
其中,具体可以使用词嵌入算法,如Word2Vec算法生成权重token的语义向量,将每一个权重token转换为固定维度k的语义向量
Figure BDA0003344620610000062
再将
Figure BDA0003344620610000063
乘以该token相应的总权重评分得到权重token的特征向量
Figure BDA0003344620610000064
随后将50个(预设数量为50)权重token特征向量顺序拼接。生成50行、k列的特征矩阵,特征矩阵中的每行代表对应权重token的特征向量。
进一步的,将特征矩阵输入到预先建立的双生神经网络模型中,计算已知漏洞程序片段与待分析程序片段的权重token特征矩阵的相似度,根据相似度判断待分析程序片段中是否存在漏洞。具体的,双生神经网络是一种基于深度学习神经网络的耦合架构,由两个相同结构的神经网络构成,两个网络共享相同的参数。
作为本发明的一个实施例,如图2所示,对所述待分析程序片段控制流图中的基本块及所述已知漏洞程序片段控制流图中的基本块分别进行权重评分计算,得到各基本块的权重评分计算结果包括:
步骤S21,根据所述待分析程序片段控制流图及所述已知漏洞程序片段控制流图,确定所述待分析程序片段控制流图中的基本块及其对应的多个词符,以及确定所述已知漏洞程序片段控制流图中的基本块及其对应的多个词符;
步骤S22,利用重要性排序算法,对所述待分析程序片段控制流图中的基本块及所述已知漏洞程序片段控制流图中的基本块分别进行权重评分计算,得到各基本块的权重评分计算结果。
其中,如图7中的基本块‘if r0!=“sum”goto label3’可以拆成if、r0、!=、sum、goto、label3六个token块。由于一段代码中包含大量代码块,而每个代码块中又存在多个token。
进一步的,利用重要性排序算法,如Pagerank算法,计算每个基本块的重要性评分,第一步给每个代码块赋予相同的权重评分PR(i),随后按照公式(1)对评分进行更新,直到评分值趋于稳定不再发生变化。
在本实施例中,如图3所示,根据所述权重评分计算结果,从所述待分析程序片段控制流图中的基本块及所述已知漏洞程序片段控制流图中的基本块中,分别选取预设数量的权重词符包括:
步骤S31,根据各基本块的权重评分计算结果,分别得到所述待分析程序片段控制流图中各词符的总权重评分以及所述已知漏洞程序片段控制流图中各词符的总权重评分;
步骤S32,根据总权重评分,从所述待分析程序片段控制流图中的基本块及所述已知漏洞程序片段控制流图中的基本块中,分别选取预设数量的权重词符。
其中,计算得到每个基本块的权重评分后,对基本块中的所有token都赋予相应评分,随后将同一token在不同基本块中的权重评分进行求和得到token总权重评分。按照预设数量选取权重token,例如,取总权重评分前50的token作为这段代码的权重token。
在本实施例中,如图4所示,将所述权重词符转换为特征矩阵包括:
步骤S41,利用词嵌入算法,生成各权重词符的语义向量;
步骤S42,根据各权重词符的语义向量及各权重词符对应的总权重评分,得到各权重词符的特征向量;
步骤S43,根据所述特征向量,分别生成所述待分析程序片段对应的权重词符的特征矩阵及所述已知漏洞程序片段对应的权重词符的特征矩阵。
其中,使用词嵌入算法,如Word2Vec算法生成权重token的语义向量,将每一个权重token转换为固定维度k的语义向量
Figure BDA0003344620610000081
再将
Figure BDA0003344620610000082
乘以该token相应的总权重评分得到权重token的特征向量
Figure BDA0003344620610000083
随后将50个权重token特征向量顺序拼接。生成50行、k列的特征矩阵,特征矩阵中的每行代表对应权重token的特征向量。
作为本发明的一个实施例,将所述特征矩阵输入至预先建立的双生神经网络模型中,得到待分析程序片段的特征矩阵与已知漏洞程序片段的特征矩阵之间的相似度包括:将所述特征矩阵输入至预先建立的双生神经网络模型中,经由所述双生神经网络模型中的卷积层、池化层及全连接层的计算后,得到所述待分析程序片段的特征矩阵与已知漏洞程序片段的特征矩阵之间对应的欧式距离,并将所述欧式距离作为相似度。
其中,预先建立的双生神经网络输入已知漏洞程序片段的权重token特征矩阵和待分析程序片段权重token特征矩阵,通过卷积层、池化层和全连接层得到高维特征向量,输出两高维特征向量的相似度。
作为本发明的一个实施例,根据所述相似度对所述待分析程序片段进行漏洞检测包括:若获知所述相似度大于预设阈值,则判定所述待分析程序片段中存在与所述已知漏洞程序片段中类型一致的漏洞。
其中,相似度通过两个高维特征向量的欧式距离表示,当欧式距离大于阈值k时,判断该代码中存在相同类型漏洞。
在本发明一具体实施例中,如图5所示为本发明实施例一种应用代码漏洞检测方法的系统的结构示意图,图中所示系统包括:代码解析模块101、漏洞发现模块102、结果展示模块103。
其中,代码解析模块101负责对源码进行分析,生成控制流程图,然后基于控制流图提取权重token,漏洞发现模块102将权重token转换为特征向量送入双生神经网络模型进行识别,传递给结果展示模块103进行展示。
在本实施例中,如图6所示的代码解析模块包括代码控制流生成单元201及token提取单元202两个部分。
其中,代码控制流生成单元201针对不同编程语言,使用对应的静态代码分析工具,将待分析程序片段生成对应的控制流图,生成的控制流示例图7所示。
权重token提取单元202根据代码控制流生成单元201生成的控制流图,基于词法分析,获取权重token。如上图中的基本块‘if r0!=“sum”goto label3’可以拆成if、r0、!=、sum、goto、label3六个token块。由于一段代码中包含大量代码块,而每个代码块中又存在多个token,为提升分析效率,需筛选具有重要语义的权重token。首先,基于Pagerank算法计算每个基本块的重要性评分,第一步给每个代码块赋予相同的权重评分PR(i),随后按照公式(1)对评分进行更新,直到评分值趋于稳定不再发生变化。
进一步的,计算得到每个基本块的权重评分后,对基本块中的所有token都赋予相应评分。随后将同一token在不同基本块中的权重评分进行求和得到token总权重评分w,取总权重评分前50的token作为这段代码的重要token,传递给漏洞发现模块进行比对。
在本实施例中,如图8所示的漏洞发现模块包括特征提取单元401及漏洞识别单元402两个部分。
其中,特征提取单元401负责将权重token转换为特征矩阵,用于漏洞识别单元402的模型训练和识别。具体地,使用Word2Vec算法生成权重token的语义向量,将每一个权重token转换为固定维度k的语义向量
Figure BDA0003344620610000091
再将
Figure BDA0003344620610000092
乘以该token相应的总权重评分得到权重token的特征向量
Figure BDA0003344620610000093
随后将50个权重token特征向量顺序拼接,生成50行、k列的特征矩阵,矩阵中的每行代表对应token的特征向量,传递到漏洞识别单元302。
漏洞识别单元402负责将特征矩阵输入到双生神经网络中,计算已知漏洞程序片段与待分析程序片段的权重token特征矩阵的相似度,根据相似度判断待分析程序片段中是否存在漏洞。
具体地,双生神经网络是一种基于深度学习神经网络的耦合架构,由两个相同结构的神经网络构成,两个网络共享相同的参数。双生神经网络输入已知漏洞程序片段权重token特征矩阵和待分析程序片段权重token特征矩阵,通过卷积层、池化层和全连接层得到高维特征向量,最后输出两特征矩阵的相似度。相似度通过两个高维特征向量的欧式距离表示,当欧式距离大于阈值k时,判断该代码中存在相同类型漏洞,将漏洞信息传递给结果展示模块。
在本实施例中,结果展示模块负责发现的漏洞在页面进行展示,展示内容包括存在漏洞的代码段、权重token,用于对比的已知漏洞程序片段、权重token以及两段代码的代码相似度。
在本实施例中,如图9所示的系统工作流程图,具体流程说明如下:
步骤1:使用静态代码分析工具,将已知漏洞程序片段和待分析程序片段生成对应的控制流图;
步骤2:基于Pagerank算法计算每个基本块的权重评分,选取排名前50的权重token;
步骤3:使用Word2Vec算法生成权重token的特征矩阵;
步骤4:利用双生神经网络计算已知漏洞代码与待检测代码的权重token特征矩阵的相似度;
步骤5:根据相似度判断待检测代码中是否存在漏洞,并将结果进行展示。
本发明利用重要性排序算法、双生神经网络模型等人工智能技术,在某个漏洞被发现后,快速定位应用系统中是否存在类似代码的语义结构,从而批量发现高风险问题,从源代码级充分揭露潜在风险。
如图10所示为本发明实施例一种代码漏洞检测装置的结构示意图,图中所示装置包括:
控制流图模块10,用于获取待分析程序片段及已知漏洞程序片段,并根据所述待分析程序片段及已知漏洞程序片段,分别生成待分析程序片段控制流图及已知漏洞程序片段控制流图;
权重评分模块20,用于对所述待分析程序片段控制流图中的基本块及所述已知漏洞程序片段控制流图中的基本块分别进行权重评分计算,得到各基本块的权重评分计算结果;
权重词符模块30,用于根据所述权重评分计算结果,从所述待分析程序片段控制流图的基本块及所述已知漏洞程序片段控制流图的基本块中,分别选取预设数量的权重词符;
漏洞检测模块40,用于将所述权重词符转换为特征矩阵,并将所述特征矩阵输入至预先建立的双生神经网络模型中,得到待分析程序片段的特征矩阵与已知漏洞程序片段的特征矩阵之间的相似度,并根据所述相似度对所述待分析程序片段进行漏洞检测。
作为本发明的一个实施例,如图11所示,权重评分模块20包括:
基本块单元21,用于根据所述待分析程序片段控制流图及所述已知漏洞程序片段控制流图,确定所述待分析程序片段控制流图中的基本块及其对应的多个词符,以及确定所述已知漏洞程序片段控制流图中的基本块及其对应的多个词符;
评分计算单元22,用于利用重要性排序算法,对所述待分析程序片段控制流图中的基本块及所述已知漏洞程序片段控制流图中的基本块分别进行权重评分计算,得到各基本块的权重评分计算结果。
在本实施例中,如图12所示,权重词符模块30包括:
总评分单元31,用于根据各基本块的权重评分计算结果,分别得到所述待分析程序片段控制流图中各词符的总权重评分以及所述已知漏洞程序片段控制流图中各词符的总权重评分;
权重词符单元32,用于根据总权重评分,从所述待分析程序片段控制流图中的基本块及所述已知漏洞程序片段控制流图中的基本块中,分别选取预设数量的权重词符。
在本实施例中,如图13所示,漏洞检测模块40包括:
语义向量单元41,用于利用词嵌入算法,生成各权重词符的语义向量;
特征向量单元42,用于根据各权重词符的语义向量及各权重词符对应的总权重评分,得到各权重词符的特征向量;
特征矩阵单元43,用于根据所述特征向量,分别生成所述待分析程序片段对应的权重词符的特征矩阵及所述已知漏洞程序片段对应的权重词符的特征矩阵。
作为本发明的一个实施例,漏洞检测模块还用于将所述特征矩阵输入至预先建立的双生神经网络模型中,经由所述双生神经网络模型中的卷积层、池化层及全连接层的处理后,得到所述待分析程序片段的特征矩阵与已知漏洞程序片段的特征矩阵之间对应的欧式距离,并将所述欧式距离作为相似度。
作为本发明的一个实施例,漏洞检测模块还用于若获知所述相似度大于预设阈值,则判定所述待分析程序片段中存在与所述已知漏洞程序片段中类型一致的漏洞。
基于与上述一种代码漏洞检测方法相同的申请构思,本发明还提供了上述一种代码漏洞检测装置。由于该一种代码漏洞检测装置解决问题的原理与一种代码漏洞检测方法相似,因此该一种代码漏洞检测装置的实施可以参见一种代码漏洞检测方法的实施,重复之处不再赘述。
本发明基于双生神经网络进行代码漏洞挖掘,能够在一种漏洞被发现后,从代码语义结构匹配的角度,批量发现系统中存在的其他类似代码,从而深度揭示应用系统中的相关风险,有效保证应用代码安全。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述方法的计算机程序。
如图14所示,该电子设备600还可以包括:通信模块110、输入单元120、音频处理单元130、显示器160、电源170。值得注意的是,电子设备600也并不是必须要包括图14中所示的所有部件;此外,电子设备600还可以包括图14中没有示出的部件,可以参考现有技术。
如图14所示,中央处理器100有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器100接收输入并控制电子设备600的各个部件的操作。
其中,存储器140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且中央处理器100可执行该存储器140存储的该程序,以实现信息存储或处理等。
输入单元120向中央处理器100提供输入。该输入单元120例如为按键或触摸输入装置。电源170用于向电子设备600提供电力。显示器160用于进行图像和文字等显示对象的显示。该显示器例如可为LCD显示器,但并不限于此。
该存储器140可以是固态存储器,例如,只读存储器(ROM)、随机存取存储器(RAM)、SIM卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为EPROM等。存储器140还可以是某种其它类型的装置。存储器140包括缓冲存储器141(有时被称为缓冲器)。存储器140可以包括应用/功能存储部142,该应用/功能存储部142用于存储应用程序和功能程序或用于通过中央处理器100执行电子设备600的操作的流程。
存储器140还可以包括数据存储部143,该数据存储部143用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器140的驱动程序存储部144可以包括电子设备的用于通信功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。
通信模块110即为经由天线111发送和接收信号的发送机/接收机110。通信模块(发送机/接收机)110耦合到中央处理器100,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。
基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块110,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)110还经由音频处理器130耦合到扬声器131和麦克风132,以经由扬声器131提供音频输出,并接收来自麦克风132的音频输入,从而实现通常的电信功能。音频处理器130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器130还耦合到中央处理器100,从而使得可以通过麦克风132能够在本机上录音,且使得可以通过扬声器131来播放本机上存储的声音。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (12)

1.一种代码漏洞检测方法,其特征在于,所述方法包括:
获取待分析程序片段及已知漏洞程序片段,并根据所述待分析程序片段及已知漏洞程序片段,分别生成待分析程序片段控制流图及已知漏洞程序片段控制流图;
对所述待分析程序片段控制流图中的基本块及所述已知漏洞程序片段控制流图中的基本块分别进行权重评分计算,得到各基本块的权重评分计算结果;
根据所述权重评分计算结果,从所述待分析程序片段控制流图的基本块及所述已知漏洞程序片段控制流图的基本块中,分别选取预设数量的权重词符;
将所述权重词符转换为特征矩阵,并将所述特征矩阵输入至预先建立的双生神经网络模型中,得到待分析程序片段的特征矩阵与已知漏洞程序片段的特征矩阵之间的相似度,并根据所述相似度对所述待分析程序片段进行漏洞检测。
2.根据权利要求1所述的方法,其特征在于,所述对所述待分析程序片段控制流图中的基本块及所述已知漏洞程序片段控制流图中的基本块分别进行权重评分计算,得到各基本块的权重评分计算结果包括:
根据所述待分析程序片段控制流图及所述已知漏洞程序片段控制流图,确定所述待分析程序片段控制流图中的基本块及其对应的多个词符,以及确定所述已知漏洞程序片段控制流图中的基本块及其对应的多个词符;
利用重要性排序算法,对所述待分析程序片段控制流图中的基本块及所述已知漏洞程序片段控制流图中的基本块分别进行权重评分计算,得到各基本块的权重评分计算结果。
3.根据权利要求2所述的方法,其特征在于,所述根据所述权重评分计算结果,从所述待分析程序片段控制流图中的基本块及所述已知漏洞程序片段控制流图中的基本块中,分别选取预设数量的权重词符包括:
根据各基本块的权重评分计算结果,分别得到所述待分析程序片段控制流图中各词符的总权重评分以及所述已知漏洞程序片段控制流图中各词符的总权重评分;
根据总权重评分,从所述待分析程序片段控制流图中的基本块及所述已知漏洞程序片段控制流图中的基本块中,分别选取预设数量的权重词符。
4.根据权利要求3所述的方法,其特征在于,所述将所述权重词符转换为特征矩阵包括:
利用词嵌入算法,生成各权重词符的语义向量;
根据各权重词符的语义向量及各权重词符对应的总权重评分,得到各权重词符的特征向量;
根据所述特征向量,分别生成所述待分析程序片段对应的权重词符的特征矩阵及所述已知漏洞程序片段对应的权重词符的特征矩阵。
5.根据权利要求1所述的方法,其特征在于,所述将所述特征矩阵输入至预先建立的双生神经网络模型中,得到待分析程序片段的特征矩阵与已知漏洞程序片段的特征矩阵之间的相似度包括:
将所述特征矩阵输入至预先建立的双生神经网络模型中,经由所述双生神经网络模型中的卷积层、池化层及全连接层的处理后,得到所述待分析程序片段的特征矩阵与已知漏洞程序片段的特征矩阵之间对应的欧式距离,并将所述欧式距离作为相似度。
6.根据权利要求1所述的方法,其特征在于,所述根据所述相似度对所述待分析程序片段进行漏洞检测包括:
若获知所述相似度大于预设阈值,则判定所述待分析程序片段中存在与所述已知漏洞程序片段中类型一致的漏洞。
7.一种代码漏洞检测装置,其特征在于,所述装置包括:
控制流图模块,用于获取待分析程序片段及已知漏洞程序片段,并根据所述待分析程序片段及已知漏洞程序片段,分别生成待分析程序片段控制流图及已知漏洞程序片段控制流图;
权重评分模块,用于对所述待分析程序片段控制流图中的基本块及所述已知漏洞程序片段控制流图中的基本块分别进行权重评分计算,得到各基本块的权重评分计算结果;
权重词符模块,用于根据所述权重评分计算结果,从所述待分析程序片段控制流图的基本块及所述已知漏洞程序片段控制流图的基本块中,分别选取预设数量的权重词符;
漏洞检测模块,用于将所述权重词符转换为特征矩阵,并将所述特征矩阵输入至预先建立的双生神经网络模型中,得到待分析程序片段的特征矩阵与已知漏洞程序片段的特征矩阵之间的相似度,并根据所述相似度对所述待分析程序片段进行漏洞检测。
8.根据权利要求7所述的装置,其特征在于,所述权重评分模块包括:
基本块单元,用于根据所述待分析程序片段控制流图及所述已知漏洞程序片段控制流图,确定所述待分析程序片段控制流图中的基本块及其对应的多个词符,以及确定所述已知漏洞程序片段控制流图中的基本块及其对应的多个词符;
评分计算单元,用于利用重要性排序算法,对所述待分析程序片段控制流图中的基本块及所述已知漏洞程序片段控制流图中的基本块分别进行权重评分计算,得到各基本块的权重评分计算结果。
9.根据权利要求8所述的装置,其特征在于,所述权重词符模块包括:
总评分单元,用于根据各基本块的权重评分计算结果,分别得到所述待分析程序片段控制流图中各词符的总权重评分以及所述已知漏洞程序片段控制流图中各词符的总权重评分;
权重词符单元,用于根据总权重评分,从所述待分析程序片段控制流图中的基本块及所述已知漏洞程序片段控制流图中的基本块中,分别选取预设数量的权重词符。
10.根据权利要求9所述的装置,其特征在于,所述漏洞检测模块包括:
语义向量单元,用于利用词嵌入算法,生成各权重词符的语义向量;
特征向量单元,用于根据各权重词符的语义向量及各权重词符对应的总权重评分,得到各权重词符的特征向量;
特征矩阵单元,用于根据所述特征向量,分别生成所述待分析程序片段对应的权重词符的特征矩阵及所述已知漏洞程序片段对应的权重词符的特征矩阵。
11.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6任一项所述方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至6任一项所述方法的计算机程序。
CN202111319219.4A 2021-11-09 2021-11-09 代码漏洞检测方法及装置 Pending CN114020628A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111319219.4A CN114020628A (zh) 2021-11-09 2021-11-09 代码漏洞检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111319219.4A CN114020628A (zh) 2021-11-09 2021-11-09 代码漏洞检测方法及装置

Publications (1)

Publication Number Publication Date
CN114020628A true CN114020628A (zh) 2022-02-08

Family

ID=80062838

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111319219.4A Pending CN114020628A (zh) 2021-11-09 2021-11-09 代码漏洞检测方法及装置

Country Status (1)

Country Link
CN (1) CN114020628A (zh)

Similar Documents

Publication Publication Date Title
CN111859960B (zh) 基于知识蒸馏的语义匹配方法、装置、计算机设备和介质
US10489576B2 (en) Method and system for generating verification codes
CN110164435A (zh) 语音识别方法、装置、设备及计算机可读存储介质
CN110933104B (zh) 恶意命令检测方法、装置、设备及介质
US10579837B2 (en) Method, device and electronic apparatus for testing capability of analyzing a two-dimensional code
US11282502B2 (en) Method for utterance generation, smart device, and computer readable storage medium
US11036622B2 (en) Automated software testing
CN102916815A (zh) 用户身份验证的方法和装置
CN109194689B (zh) 异常行为识别方法、装置、服务器及存储介质
CN115328756A (zh) 一种测试用例生成方法、装置及设备
CN114186019A (zh) 结合rpa和ai的企业项目的审核方法及装置
CN111046176A (zh) 对抗样本生成方法、装置、电子设备及存储介质
CN112397057A (zh) 基于生成对抗网络的语音处理方法、装置、设备及介质
CN112784112A (zh) 报文校验方法及装置
CN115964496A (zh) 交流平台的敏感文本智能检测方法和装置
US20230034414A1 (en) Dialogue processing apparatus, learning apparatus, dialogue processing method, learning method and program
US20180150747A1 (en) Enhancing Time-to-Answer for Community Questions in Online Discussion Sites
US20180150748A1 (en) Enhanced Ingestion of Question-Answer Pairs into Question Answering Systems by Preprocessing Online Discussion Sites
CN110738056B (zh) 用于生成信息的方法和装置
JP2004038179A (ja) 音声命令語処理装置及び方法
CN115858776B (zh) 一种变体文本分类识别方法、系统、存储介质和电子设备
CN106599637A (zh) 一种在验证界面输入验证码的方法和装置
CN114020628A (zh) 代码漏洞检测方法及装置
CN114781368A (zh) 业务需求安全处理方法及装置
CN111222066A (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