CN112560036B - 一种基于神经网络与深度学习的c/c++漏洞静态检测方法 - Google Patents
一种基于神经网络与深度学习的c/c++漏洞静态检测方法 Download PDFInfo
- Publication number
- CN112560036B CN112560036B CN202011519232.XA CN202011519232A CN112560036B CN 112560036 B CN112560036 B CN 112560036B CN 202011519232 A CN202011519232 A CN 202011519232A CN 112560036 B CN112560036 B CN 112560036B
- Authority
- CN
- China
- Prior art keywords
- vector
- neural network
- vulnerability
- dimensional
- output
- 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/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code 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
- 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/047—Probabilistic or stochastic 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/048—Activation functions
-
- 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
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Probability & Statistics with Applications (AREA)
- Virology (AREA)
- Devices For Executing Special Programs (AREA)
- Complex Calculations (AREA)
Abstract
本发明涉及一种基于神经网络与深度学习的C/C++漏洞静态检测方法,属于信息安全领域。本发明对待检测的源码进行数据清洁和代码切片;将代码切片转换为CVDF‑LZW编码的输入向量;将输入向量转化为等长的输入,并进行归一化处理;将归一化后的向量的关键字信息输入到14个神经元中,输出是一个14维向量;将归一化后的向量输入不同的神经网络,输出是漏洞特征向量中相应操作维度向量;将14维向量和操作维度向量整合成35维漏洞特征向量;在漏洞特征向量中以非全连接的形式提取有关联的神经元,通过线性函数转换得到一个6维的输出向量,通过softmax多分类层将对应的漏洞类型特征值转换为相应的概率值。本发明可以面向多种类漏洞实现高精度检测,提高效率和适应性。
Description
技术领域
本发明属于信息安全领域,具体涉及一种基于神经网络与深度学习的C/C++ 漏洞静态检测方法。
背景技术
目前,软件安全已经成为人们日益关注的热点话题之一。根据CSEC2017模 型,知识领域被分为数据安全,软件安全,系统安全,人员安全,组织安全及 社会安全六个方面,软件安全位列其中。而随着软件数量的爆炸式增长,软件 安全漏洞的研究面临着严峻的挑战。在面向源代码的漏洞静态检测领域,传统 的人工检测方式效率低下,已经无法有效应对形式多变,日益增多的软件漏洞, 且识别精度取决于软件安全从业人员的技术水准;传统的自动化漏洞检测只能 针对种类单一的漏洞进行挖掘。机器学习作为近些年兴起的学科,是一门多领 域交叉学科,它涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科,并在图像识别,自然语言处理,模式识别等领域取得了突出成绩。神 经网络与深度学习作为机器学习的最新发展成果,在解决非线性分类等相关问 题相比较传统机器学习算法有着更高的效率与精准度,许多科研工作者开始将 机器学习与神经网络应用于漏洞研究。例如Fabian等人使用模式识别研究污点 漏洞;Pang等人使用深度神经网络预测漏洞软件组件;Fabian等人使用代码属 性图像建模发现漏洞本文;Wu等人同样运用深度学习进行漏洞检测;Lin等人使 用跨项目迁移表示学习进行漏洞功能挖掘。
目前国内外传统的源代码漏洞挖掘主要分为人工挖掘与自动挖掘。人工挖 掘主要依据漏洞产生机理,归纳漏洞特征,将漏洞进行种类划分,在人工检测 时提高效率,例如WANG等人运用安全视觉的方式对C/C++程序漏洞进行分类研究; LV等人将C/C++常见漏洞分为5大类,并对每一类的具体特征做了细分;传统的 自动漏洞挖掘方式是进行自动化漏洞分类,并运用控制流与数据流分析对源码 进行数据与逻辑跟踪,当追踪到异常操作时,则判定该源代码含有相应种类漏 洞,例如SHAO等人针对缓冲区溢出的单一种类漏洞进行了详细的原理阐述,并 给出了漏洞检测,漏洞修复与漏洞防护的详细方案。传统的自动漏洞挖掘针对 某一具体类型具体操作的漏洞具有较高的检测效率,但该方法具有如下缺陷:1、 每次检测仅能针对一种特定类型的漏洞,检测效率较低;2、无法检测出进行其 它相关操作的同一类型漏洞,适应性较差;3、当需要检测的漏洞数据量较大时 检测速度较慢。随着人工智能领域的兴起,研究人员开始运用机器学习进行自 动化漏洞挖掘,ZHANG等人对目前机器学习的研究成果做了综述;ZOU等人阐述 了在软件漏洞挖掘中从传统的自动化向智能化的漏洞挖掘发展,该文章也指出 传统的机器学习技术在漏洞挖掘领域的应用仍具有局限性;而在人工智能领域 的最新研究方向——神经网络与漏洞挖掘的相关领域的研究中,LI等人提出了 将漏洞源码提取出代码小部件并提出了基于bi-lstm神经网络的vuldeepecker 漏洞检测模型;XIA等人基于代码相似性原理,运用图像识别领域中应用广泛的 卷积神经网络将漏洞源码与模板源码进行相似性比对,这种方式对于大批量形 态相似的漏洞具有较高的检测速度,同时能够运用现有的神经网络进行训练而 不必提出全新的神经网络架构,但随着漏洞的发展,形式与特征趋于多样化, 代码相似性难以针对不同类别不同特征的漏洞进行检测;SUN等人则在人工智能 技术在安全漏洞领域的运用一文中以综述的形式汇总了到目前为止国内外有关 人工智能在安全漏洞方向的研究成果,并得出了深度学习会对漏洞领域的研究 与发展产生巨大影响的结论;LI等人运用深度聚类神经网络(KNN)针对开源软 件的API序列嵌入向量空间并进行聚类,根据聚类结果进行漏洞检测;ZHANG等 人借助神经网络在自然语言处理领域的成熟应用,提出了自然语言数据驱动的 智能化软件评估方法,并取得了显著的成效。但WANG、LV等人提出的分类方式 仅能提高传统人工漏洞检测的识别效率,难以从根本上解决人工漏洞检测的弊 端;SHAO LI提出的检测方案仅能针对单一或种类有限的漏洞进行检测;XIA等 人仅针对代码相似性这一特征进行检测,无法检测形态特征差异较大的漏洞; ZHANG SUN等人在汇总国内外研究成果的同时并未提出新的漏洞挖掘方案。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是如何提供一种基于神经网络与深度学习的 C/C++漏洞静态检测方法,以解决现有的漏洞检测方法效率低、适应性差、检测 速度慢、无法检测形态特征差异较大的漏洞等问题。
(二)技术方案
为了解决上述技术问题,本发明提出一种基于神经网络与深度学习的C/C++ 漏洞静态检测方法,该方法包括如下步骤:
S1、对待检测的源码进行数据清洁,即去除与漏洞挖掘的无关部分,简化 源代码的内容与格式;利用控制流与数据流进行代码切片;将代码切片中的自 定义的变量名和函数名进行替换,然后转换为CVDF-LZW编码的输入向量;
S2、将输入向量转化为等长的C/C++源代码漏洞静态检测框架(CVDF)神经 网络的输入,并进行归一化处理;通过一个全连接矩阵将归一化后的向量的关 键字信息输入到14个神经元中,输出是一个14维向量;将归一化后的向量输 入缓冲区溢出处理神经网络、格式化字符串处理神经网络、数组越界处理神经 网络、类型转换处理神经网络、数字错误处理神经网络和指针错误及内存分配 处理神经网络,输出是漏洞特征向量中相应操作维度向量;将神经网络的输出 和神经元的输出整合成35维漏洞特征向量;
S3、在漏洞特征向量中以非全连接的形式提取有关联的神经元,通过线性 函数转换得到一个6维的输出向量,向量中的每一维数值是漏洞特征向量对应 种类关键字和关键操作数值与权重向量乘积之和,即漏洞类型特征值;通过 softmax多分类层将对应的漏洞类型特征值转换为相应的概率值,输出结果是一 个6维向量,向量的每一维度均为一个在0-1之间的数值,对应该种类型漏洞 的发生概率预测值。
进一步地,所述与漏洞挖掘的无关部分包括头文件和注释。
进一步地,所述利用控制流与数据流进行代码切片具体包括:通过控制流 与数据流从源码中提取出关键语句,再对提取出的关键语句按照控制流与数据 流逻辑先后进行重新排序。
进一步地,所述将代码切片中的自定义的变量名和函数名进行替换具体包 括:将所有用户自定义的变量名以”VAR1”,”VAR2”……的格式进行替换,将 所有非C/C++语言库函数的函数名以”FUN1”,”FUN2”……格式进行替换。
进一步地,所述转换为CVDF-LZW编码的输入向量包括:将C/C++标准库函 数名按照字典序的顺序进行排列,分别从0001-1000进行编码;将用户自定义 的变量名按照替换后的顺序从1001-3000进行编码;将用户自定义的函数名按 照替换后的顺序从3001-5000进行编码;将运算符按照单目运算符,双目运算 符和三目运算符的次序从5001-5100进行编码;将标准数据类型从5101-5115 进行编码,将“;”编码为5116,完成了代码切片的编码。
进一步地,所述将输入向量转化为等长的C/C++源代码漏洞静态检测框架 (CVDF)神经网络的输入具体包括:若编码长度小于1000,依据控制流和数据 流判断在切片编码前部或后部以0填充,若长度大于1000,依据控制流和数据 流对切片编码进行截断,将长度控制在1000。
进一步地,所述通过一个全连接矩阵将归一化后的向量的关键字信息输入 到14个神经元中,输出是一个14维向量具体包括:通过一个全连接矩阵将归 一化后的向量的关键字信息输入到14个神经元中,每个神经元transfer function均不相同,用f1至f14表示,每个转换函数定义为:无对应关键字时为0, 当存在关键字归一化后的编码时为1,最终输出一个14维向量,向量的每一维 只有0和1两种取值,分别表示相应关键字的存在与否。
进一步地,所述缓冲区溢出处理神经网络包括:若关键字匹配提取层的输 出向量中有关缓冲区溢出的维度均为0,则不调用缓冲区溢出处理神经网络,并 自动在相应关键操作维度处标记为0,否则需要调用归一化后的向量,使用 bi-lstm双向长短期记忆的神经网络结构,输出一个三维向量;所述格式化字符 串处理神经网络包括:若关键字匹配提取层的输出向量中有关格式化字符串的 维度均为0,则不调用格式化字符串处理神经网络,并自动在相应关键操作维度 处标记为0,否则需要调用归一化后的向量,使用bi-lstm双向长短期记忆的神 经网络结构,输出一个二维向量;所述数字错误处理神经网络包括:无条件调 用bi-lstm双向长短期记忆的神经网络,输出一个二维向量;所述数组越界处 理神经网络包括:无条件调用bi-lstm双向长短期记忆的神经网络,输出一个 二维向量;所述指针错误和内存分配处理神经网络包括:无条件调用bi-lstm 双向长短期记忆的神经网络,输出一个十维向量;所述类型转换处理神经网络 包括:使用正向传播的神经网络,输出一个二维向量。
进一步地,所述在漏洞特征向量中以非全连接的形式提取有关联的神经元 包括:在35维的漏洞特征向量中,将关键字和对应的操作形成有关缓冲区溢出、 格式化字符串、数字错误、数组越界、指针错误和内存分配和类型转换的神经 元,每一个神经元的权重向量中,各关键字的权重值相同,各关键操作的权重 值不同。
(三)有益效果
本发明提出一种基于神经网络与深度学习的C/C++漏洞静态检测方法,本发 明包含多个不同用途的神经网络,并相应提出了CVDF中的漏洞特征向量, CVDF-LZW编码方式,CVDF的评估方式,实验结果证明该神经网络框架相较于传 统的漏洞检测形式在识别速度与精确度上均有明显的提升,同时也能对漏洞特 征向量中的指定种类漏洞实现检测。
本发明具有以下优点:
CVDF神经网络框架可以面向多种类漏洞实现高精度检测;
CVDF神经网络框架是本文提出的一种针对源码漏洞检测领域的全新框架, 相比于现有神经网络,如CNN卷积神经网络,RNN循环神经网络等在静态漏洞检 测具有更高的识别精度与检测效率;
CVDF神经网络框架采用模块化的设计理念,各个模块都可以随着漏洞种类 的变化与更新不断发展完善,使CVDF具备更强的漏洞适应性。
附图说明
图1为数据清洁图;
图2为代码切片与重新排序图;
图3为用户自定义变量名及非库函数名替换图;
图4为CVDF-LZW编码图;
图5为CVDF神经网络架构设计总图;
图6为漏洞特征向量;
图7为CVDF-FP图;
图8为多神经网络处理图;
图9为lstm结构图;
图10为缓冲区溢出处理神经网络;
图11为CVDF-LP图。
具体实施方式
为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本 发明的具体实施方式作进一步详细描述。
本文提出基于神经网络与深度学习的面向C/C++源代码漏洞静态检测框架 CVDF(C/C++Vulnerability Detection Frame),该框架着重解决漏洞分类中 的CWE-17代码问题漏洞中C/C++常见的缓冲区溢出,格式化字符串及数字错误 等几种最常见类型的漏洞,从静态检测层面对源代码进行漏洞挖掘与漏洞检测, 其不再针对某一具体漏洞的关键字分析,而通过CVDF-FP神经网络与多种专用 漏洞类型处理神经网络将不同漏洞关键字与关键操作特征进行提取并形成本文 定义的漏洞特征向量,再通过非全连接神经网络层与改进的softmax多分类处 理层判断出源代码所包含的漏洞种类并给出相应漏洞出现概率的预测值。
1.1数据清洁
我们从安全漏洞库中下载上述类型的漏洞源码,首先对待检测的源码进行 数据清洁,即去除头文件,注释等与漏洞挖掘的无关部分,简化源代码的内容 与格式;
1.2利用控制流与数据流进行代码切片
控制流与数据流的分析是传统漏洞挖掘领域中公认的在准确度与效率度量 层面均比较理想的分析方式,代码切片是自动化漏洞挖掘研究领域对漏洞源码 简化处理的重要手段,有关代码切片的方式多种多样,本文思路是借助于控制 流与数据流分析这一传统漏洞挖掘方式的优势,利用控制流与数据流进行代码 切片(此处仅用控制流与数据流进行代码切片而非漏洞分析),基本方法为通过 控制流与数据流从源码中提取出关键语句,再对提取出的关键语句按照控制流 与数据流逻辑先后进行重新排序,完成代码切片的工作。
1.3将代码切片转换为CVDF-LZW编码
得到代码切片后,需对程序语句进行进一步处理,将其转换为适用于神经 网络的输入向量,具体工作如下:将所有用户自定义的变量名以”VAR1”,”VAR2” 的格式进行替换,将所有非C/C++语言库函数的函数名以”FUN1”,”FUN2”格 式进行替换;
本发明针对代码切片,提出一种面向代码切片的编码方式,命名为CVDF-LZW 编码方式。该编码方式适用于所有将代码切片转化为数字编码以进行后续研究 的工作者使用,由于经过代码切片处理后的程序主要包含如下几部分:C/C++标 准库函数名;用户自定义的变量名;用户自定义的函数名;运算符及标号;因 此本文分类对其进行编码,定义具体规则如下:
·将C/C++标准库函数名按照字典序的顺序进行排列(以首字母a-z的顺序进 行排列,如首字母相同,则从第二位字母依次向后进行比较,以此类推), 分别从0001-1000进行编码;
·将用户自定义的变量名按照替换后的顺序从1001-3000进行编码(VAR1对应1001,VAR2对应1002,以此类推,此处设定用户自定义的变量个数不超过 2000个);
·将用户自定义的函数名按照替换后的顺序从3001-5000进行编码(FUN1对应3001,FUN2对应3002,以此类推,此处设定用户自定义的函数个数不超过 2000个);
·将运算符按照单目运算符,双目运算符和三目运算符的次序从5001-5100进 行编码(注:截止到C11标准时,C/C++运算符不足100个,但为适应今后 可能推出的更新标准,本文为运算符预留了100个运算符的编码位置);
·将标准数据类型从5101-5115进行编码,共15个,最后将“;”编码为5116, 完成了代码切片的编码。
1.4构建CVDF神经网络架构
现有神经网络结构与功能(例如CNN卷积神经网络,RNN循环神经网络)并 不能很好地完成漏洞检测挖掘任务;我们发现,仅使用单一的神经网络无法很 好地解决多种漏洞分类识别及概率预测的问题,因此本文提出了CVDF神经网络 架构,包括CVDF-FP(frontpart)与CVDF-LP(later part)两大部分,其中CVDF-FP 部分负责从代码切片的编码输出本文定义的漏洞特征向量;而CVDF-LP负责从 漏洞特征向量输出最终的源码漏洞种类及概率预测值。CVDF-FP包括归一化层, 关键字匹配提取层和多种类漏洞处理神经网络组;CVDF-LP包括非全连接漏洞特 征向量处理层,改进的softmax多分类处理层等操作层(CVDF总体架构见图5 CVDF神经网络架构设计总图)
本文提出的漏洞特征向量是一个面向于神经网络漏洞挖掘领域的操作向量。 它是一个要在CVDF神经网络中得到的重要中间结果,通过得到漏洞特征向量, 能为后续漏洞分类及概率预测提供帮助,其性能好坏直接决定了CVDF神经网络 框架的识别精确率等指标。漏洞特征向量分为关键字提取和关键操作提取两部 分。因为C/C++语言有许多不安全的库函数,关键字提取能够快速判断源码中是 否有存在对应种类漏洞,关键操提取能够细化到具体操作,提高漏洞检测速率 与准确率,并降低漏洞的误报率。漏洞特征向量相较于常见漏洞库给出的漏洞 分类标准(例如CNNVD国家漏洞库给出的较为粗略的漏洞分类)优点如下:能 够具体化漏洞类型及相应操作,提高漏洞检测效率;漏洞特征向量可以随漏洞类型与相应操作的更新不断扩充与完善,使其拥有更强的适应性与更高的检测 精度。本文提取的漏洞特征向量是一个35维向量,包含14个关键字维度与21 个关键操作维度,如图6所示。具体的特征提取如下:
1.4.1.1关键字提取
主要包含如下关键字:strcpy、strcmp等字符串比较、复制、gets,将一 个字符串连接在另一个字符串尾部的函数等有关关键字,它们主要导致缓冲区 溢出的漏洞。printf及其相关的vprintf、sprintf等有关关键字,它们主要导 致格式化字符串的漏洞。关键字signed int主要导致数字错误的漏洞。关键字 malloc主要导致内存分配的漏洞。
1.4.1.2关键操作提取
·将长度较长的字符串数组复制到长度较短的字符串数组,产生缓冲区溢出漏洞;
·Printf输出流中格式化字符串与参数列表中参数数量不一致问题或在参数 列表中出现了%s,%c等带有%的相关操作,产生格式化字符串漏洞;
·为signed int赋予临界值,在临界值附近进行运算,出现整数截断后导致 程序陷入死循环等错误,产生整数溢出漏洞;
·对数组元素使用的个数超过定义数组元素的个数,具体可以分为读越界(在 程序中使用数组元素的数量超过定义数组元素的个数)以及写越界(向数组 元素写入信息时超过定义数组元素的个数),产生数组越界漏洞;
·在使用堆内存分配函数malloc后释放掉内存没有置该处的指针为空,导致 后续操作中该处内存指针依然有效,产生野指针/UAF漏洞
·在对堆内存进行free时,会发生堆内存的合并操作,改变堆头信息及前后 向指针,如果重复对一个指针所指向的内存进行free操作,free引用先前 的地址导致错误,进而导致程序崩溃,产生double free漏洞;
·使用指针,引用等方式访问数组元素时没有注意指针指向产生数组元素越界漏洞;
·在使用memcpy,strcpy等函数时,如果函数的不同参数所指地址有重叠,函 数则将发生互相修改地址所在内容或找不到所在地址的错误,产生越界漏洞。
·动态释放一个未动态分配的内存,或者内存分配没有和释放函数正确配对, 又或者动态申请的内存空间过大导致堆溢出,又或者单独释放动态申请内存 空间中的某个独立空间,产生动态分配漏洞;
·在动态分配内存中如果动态申请的内存地址释放顺序错误,正常情况下我们应该遵循先分配大内存空间,后分配小内存空间,在释放时先释放小内存空 间,后释放大内存空间,如果顺序错误,则会产生内存泄漏漏洞;
·不使用高精度方法对浮点数进行大小比较,或不使用强制类型转换对不同数值类型进行大小比较,或直接引用空指针void*而没有将其转换为某个具体 类型的指针,产生类型转换漏洞。
·在申请指针变量时没有为其分配空间,或者未进行初始化,或者指针已经被 释放,但仍然使用,产生指针漏洞。值得注意的是,由指针引发的漏洞遍布 于前文所说的各种漏洞中,远不止上述这三种单纯的指针漏洞。
·对于控制流漏洞,求值顺序等引发的漏洞,由于其漏洞产生的原因与编程者 书写代码的不严谨有关,且漏洞变化较大,特征不明显,故不将其作为漏洞 特征的研究对象。
·进行被0除的操作,产生数字错误的漏洞。
(注:类型1漏洞指缓冲区溢出漏洞;类型2漏洞指格式化字符串漏洞;类型3 漏洞指数字错误漏洞;类型4漏洞指数组越界漏洞;类型5漏洞指指针错误和 内存分配漏洞;类型6漏洞指类型转换漏洞)
1.4.2CVDF-FP神经网络架构具体设计
CVDF-FP是一个包含多个神经网络的神经网络组,目标是将输入向量转化为 漏洞特征向量。CVDF-FP神经网络组包含归一化层,关键字匹配提取网络层,缓 冲区溢出处理神经网络及缓冲区溢出处理神经网络阈值门,格式化字符串处理 神经网络及格式化字符串处理神经网络阈值门,数字错误处理神经网络,数组 越界处理神经网络,指针错误和内存分配处理神经网络,类型转换处理神经网 络以及漏洞特征向量输出神经网络,各神经网络既有各自的理论体系与运行模 式,相互之间又紧密相连,共同组建了功能强大,结构井然的CVDF-LP神经网 络组。各模块具体设计思想如下:
1.4.2.1预处理
将编码转化为等长的CVDF神经网络的输入,其转换规则为将编码后的代码 切片按照逻辑顺序进行线性排列,规定输入向量的长度(维数)为1000,作为 神经网络的等长输入,具体方式如下:若编码长度小于1000,依据控制流和数 据流判断在切片编码前部或后部以0填充,若长度大于1000,依据控制流和数 据流对切片编码进行截断,将长度控制在1000;(CVDF-LZW编码方式对“;”编 码为5116,输入向量中可以通过5116判断每一条切片语句的起始和结束位置)
1.4.2.2归一化层
将长度为1000的编码作为神经网络的输入向量,CVDF-FP第一层是对输入向 量进行归一化操作,即将1-5116的编码压缩到0-1空间内,并保留原始切片信 息便于后续操作。该层网络权重矩阵为单位矩阵I,即输入向量每一维度权重都 为1,该维度只与自身神经元存在权重连接,与其它神经元无权重连接,设置偏 置b为0,transfer function定义为
(K为常数,本文设定K=10000,不选择log-sigmoid函数作为归一 化函数的原因是sigmoid函数图像在x→∞时数值变化不明显,不适用于 CVDF-LZW编码方式)。Transfer function定义域为全体实数,值域为(0,1), 归一化层只对原始数据进行了归一化的操作,完整地保留了原始数据所具备的 信息。
1.4.2.3关键字匹配提取层
我们要将归一化层的输出逐步转化为漏洞特征向量,该过程通过单神经网络 实现难度较大,宜采用分步处理。漏洞特征向量包含关键字与关键操作两种特 征,且关键字与关键操作存在内在联系,部分关键操作特征甚至必须依赖于相 应的关键字存在才有意义,关键字匹配提取层与后续的softmax多分类层的设 计理论依据均源于此。基于这个特点,我们首先设计出关键字匹配提取层,该 层通过一个全连接矩阵将归一化后的向量的关键字信息输入到14个神经元中, 每个神经元transfer function均不相同,用f1至f14表示,以strcpy字符串复 制关键字transfer function为例:
关键字匹配提取层输出是一个14维向量,向量的每一维只有0和1两种取 值,分别表示相应关键字的存在与否(有关归一化层与关键字匹配提取层的具 体结构见图7CVDF-FP图)
1.4.2.4多神经网络处理部分
依据1.4.2.3分步处理方式思想,针对不同种类的漏洞,设计出缓冲区溢出 处理神经网络、格式化字符串处理神经网络、数组越界处理神经网络、类型转 换处理神经网络、数字错误处理神经网络、指针错误及内存分配处理神经网络, 各神经网络输入均来自步骤1.4.2.2归一化层的输出,因为该层保留了完整的 原始代码切片信息;各神经网络的输出是漏洞特征向量中相应操作维度向量。 (多神经网络的总体结构图见图8-多神经网络处理图)各神经网络具体设计如 下:
缓冲区溢出处理神经网络及阈值门:通过一个阈值控制门来判断是否需要调 用缓冲区溢出处理神经网络进行关键操作匹配处理,阈值控制门的运算逻辑如 下:若关键字匹配提取层的输出向量中有关缓冲区溢出的维度均为0,则不调用 缓冲区溢出处理神经网络,并自动在相应关键操作维度处标记为0,以进一步提 高CVDF处理效率;否则需要调用步骤2处的输出(归一化后的向量),本文使 用bi-lstm双向长短期记忆的神经网络结构,原因在于此处我们需要从输入向 量中有选择地保留与缓冲区溢出的相关信息,而非全部信息,且双向网络能够 确保我们从关键语句的前部与后部均能获取相关信息,并根据CVDF作出相应调 整。由于lstm网络是在RNN循环神经网络的基础上将神经元替换为有长短期记 忆功能的lstm神经元,而bi-lstm是在lstm的基础上增加逆向的lstm,我们 分步进行设计。
以如下表格对RNN公式符号进行解释说明:
表1RNN循环神经网络符号说明 t=1时对于一个RNN神经网络层我们可以递归调用公式(1)
对于RNN神经网络,我们应采用对时间的反向传播BPTT而非传统的BP算法, 因为它包含了对链规则的重复应用。具体而言,对于RNN网络,目标函数依赖 于隐含层激活函数(即目标函数既影响输出层又影响下一个时步的隐含层),如 公式(2)所示
对于全部的序列δ项能够从时刻t=T使用公式(2)计算,我们设定每一个时 步对隐含层单元的输入和输出权值相同,该序列求和得到每个网络的权值的导 数如下:
对于单向lstm神经网络,只需在RNN的基础上对神经元内部结构进行重新 设计,lstm单个神经元的具体设计如下:输入门设置为归一化后的向量,遗忘 门的遗忘规则选择遗忘那些无关向量维度,具体的遗忘规则设定如下:与关键 操作语句直接关联的变量所联系的语句向量保留,例如strcpy(var5,var2)这个 语句中,保留记忆与var5,var2的相关语句,遗忘其它无关语句,上述规则的 公式化表述见图9-bilstm具体结构图。
输出门的输出结果作为若干bi-lstm隐层的输入(具体数目由实验确定), 而lstm神经元只允许信息流单向传递,因此需要在lstm的基础上增加逆向信 息流,形成bi-lstm神经元,以如下表格对bi-lstm公式符号进行解释说明:
表2 bi-lstm向前推算符号说明
内部结构如下:
向前推算(Forward Pass)
输入门:
从式(4)中可得输入门与t时刻外部输入向量,t-1时刻隐含单元输出,t-1 时刻细胞输出存在权重连接;
遗忘门:
从式(5)中可得遗忘门与t时刻外部输入向量,t-1时刻隐含单元输出及t-1时刻细胞输出存在权重连接;
神经元细胞:
由式(6),式(7)可得神经元细胞的输入是t时刻遗忘门的输出乘以t-1 时刻神经元细胞的输出+t时刻输入门的输出乘以经计算后的激活函数值;
输出门:
由式(8)可得输出门与t时刻外部输入向量,t-1时刻隐含单元输出及t时 刻细胞输出存在权重连接;
神经元输出:
由式(9)得神经元输出门的t时刻的输出值乘以t时刻神经元细胞输出的 激活函数计算值得到当前bi-lstm神经元的向前推算最终输出值;
向后推算(Backward Pass)与向前推算略有区别,符号说明如下:
表3 bi-lstm向后推算符号说明
输入门:
遗忘门:
神经元细胞:
输出门:
神经元输出:
输出层的神经元个数与对应输出的关键操作个数相同,对于缓冲区溢出处理 神经网络输出一个三维向量。(有关缓冲区溢出处理神经网络整体结构见图10- 缓冲区溢出处理神经网络)
·格式化字符串处理神经网络及阈值门:与缓冲区溢出处理神经网络类似,采 用阈值控制门判断是否需要调用格式化字符串处理神经网络,在格式化字符 串处理神经网络中,网络结构仍然采用bi-lstm网络结构,因为关键操作仍 需上下文信息(bi-lstm网络结构与缓冲区溢出处理神经网络基本相同,参 见图10)输入层的transfer function如下:
bi-lstm隐层数量由实验确定。输出层由1.4.1.2可知为一个二维向量对应 操作4与操作5,输出层的tranfer function如下:
·数字错误处理神经网络:数字错误处理漏洞特征向量包含1个关键字维度与 2个关键操作维度。由于关键字与关键操作并不具备逻辑上的因果关系,因 此该神经网络不设置阈值门,属无条件调用网络。网络结构方面依然采用bi-lstm网络结构,输入层的transfer function如下:
bi-lstm隐层数量同样由实验确定,输出层transfer function如下:
·数组越界处理神经网络:数组越界处理神经网络无关键字,只有关键操作, 属无条件调用网络,输入层transfer function如下:
网络结构为bi-lstm神经网络,与前文所述类似,遗忘门设置为记忆数组元 素个数变量与数组下标相应操作变量(包括使用指针指向数组元素地址的变量), 遗忘其它无关信息,输出层transfer function如下:
·指针错误和内存分配处理神经网络:指针错误与内存分配处理神经网络的关键字为malloc,操作9,10,12,13,14,15,16,19,20,21均属于该关键操作, 为无条件调用网络。由于部分关键操作所涉及向量维度并非连续,网络结构 依然为bi-lstm神经网络,我们从相应操作提取有用信息如下表:
操作编号 | 有用信息 |
9 | 释放内存后对相应指针的操作 |
10 | 多次free操作的变量名 |
12 | memcpy函数的内部相关参数 |
13 | free操作的变量名 |
14,16 | 内存分配与释放的相关语句 |
15 | free操作的变量名 |
19 | 指针变量的类型 |
20 | 指针变量的指向 |
21 | 在指针被释放后的控制流与数据流中是否再出现该指针变量名 |
遗忘门设置为选择遗忘无关向量维度,保留并筛选出与上述有用信息相关的 向量维度,输出层共有10个神经元,对应上述10种关键操作,输出结果为一 个10维向量,每一个向量只有0,1两种不同取值,对应是否存在相应操作。
类型转换处理神经网络:类型转换处理神经网络对应操作17,18,无关键字 维度。由于这两种操作涉及范围在一条语句之内,因此使用正向传播的神经网 络。神经网络的输入为步骤2所得的归一化后的输入向量;偏置为0,transfer function设置如下:
输出层结果为一个2位向量,对应是否存在操作17与操作18。
1.4.2.5输出漏洞特征向量
将上述不同类型漏洞的专用处理神经网络的输出,与4.2.3关键字匹配提取 层整合成前文所述的35维漏洞特征向量(具体图示可参见图7多神经网络处理 图)
通过CVDF-FP神经网络,我们得到了35维的漏洞特征向量,该向量的每一 维度均只有0和1两种取值情况,我们将该漏洞特征向量作为CVDF-LP神经网 络的输入,CVDF-LP的目的是从35维的漏洞特征向量得到整个CVDF神经网络群 框架的最终输出,给出对应源码存在的漏洞种类,并给出相应漏洞发生概率的 预测值。CVDF-LP神经网络的具体设计如下:
1.4.3CVDF-LP神经网络架构具体设计
CVDF-LP分为两层,第一层是非全连接漏洞特征向量处理层,该层是在漏洞 特征向量中以非全连接的形式提取有关联的神经元,第二层是改进的softmax 多分类层,该层给出源代码存在的漏洞种类以及漏洞种类的检测可信度的概率 值,CVDF-LP的具体设计如下所示:(CVDF-LP的具体结构可参见图11CVDF-LP 图)
1.4.3.1非全连接漏洞特征向量处理层设计
在35维的漏洞特征向量中,关键字strcat,strcpy,memcpy,memset,gets 和操作1,操作2,操作3通过权重连接形成有关缓冲区溢出的神经元;关键字 vprintf,vsprintf,vsnprintf,vfprintf,snprintf,sprintf,printf与操 作4,操作5通过权重连接形成有关格式化字符串的神经元;关键字signed int 和操作6,操作11通过权重连接形成数字错误的神经元;操作7和操作8通过 权重连接形成有关数组越界的神经元;关键字malloc和操作9,10,12,13,14, 15,16,19,20,21通过权重连接形成有关指针错误和内存分配处理的神经元; 操作17,18通过权重连接形成有关强制转换的神经元;设定输入对每一个神经 元的权重向量中,各关键字的权重值相同(假如该神经元存在与关键字相关的 权重连接);各关键操作的权重值不同,这是由于在大量的训练数据集中,各关 键操作出现的频度不同,本文最终输出结果给出对应漏洞发生的概率预测值与 训练数据集中相应关键操作的频度有关,只有采用不同的权重值才能提高神经 网络的预测精度,在后续训练的权重调整中我们也会依据这一原则进行调整。 对于每一个神经元,transfer function为线性函数(linearfunction),最终 输出向量是一个6维的输出向量,向量中的每一维数值是漏洞特征向量对应种 类关键字和关键操作数值与权重向量乘积之和,我们称其为漏洞类型特征值, 该值表明:若相应种类的漏洞的漏洞类型特征值越大,如缓冲区溢出漏洞类型 特征值越大,说明当前源码中,缓冲区溢出类型漏洞出现的概率值越大。
1.4.3.2改进的softmax多分类输出层设计
最后通过softmax多分类层将对应的漏洞类型特征值转换为相应的概率值, 因此该层神经网络的输入为包含6种不同的漏洞类型特征值的一个6维向量, 之所以采用改进的softmax函数,是为防止出现数值溢出的问题,改进的softmax 函数具体形式参见图11。此层偏置为0,最终的输出结果是一个6维向量,向 量的每一维度均为一个在0-1之间的数值,对应该种类型漏洞的发生概率预测 值,同时各维度的数值之和为1。
本文提出了一种基于神经网络与深度学习的面向C/C++源码的静态漏洞检 测框架(CVDF),该框架包含多个不同用途的神经网络,并相应提出了CVDF中 的漏洞特征向量,CVDF-LZW编码方式,CVDF的评估方式,实验结果证明该神经 网络框架相较于传统的漏洞检测形式在识别速度与精确度上均有明显的提升, 同时也能对漏洞特征向量中的指定种类漏洞实现检测。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通 技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变 形,这些改进和变形也应视为本发明的保护范围。
Claims (9)
1.一种基于神经网络与深度学习的C/C++漏洞静态检测方法,其特征在于,该方法包括如下步骤:
S1、对待检测的源码进行数据清洁,即去除与漏洞挖掘的无关部分,简化源代码的内容与格式;利用控制流与数据流进行代码切片;将代码切片中的自定义的变量名和函数名进行替换,然后转换为CVDF-LZW编码的输入向量;
S2、将输入向量转化为等长的C/C++源代码漏洞静态检测框架(CVDF)神经网络的输入,并进行归一化处理;通过一个全连接矩阵将归一化后的向量的关键字信息输入到14个神经元中,输出是一个14维向量;将归一化后的向量输入缓冲区溢出处理神经网络、格式化字符串处理神经网络、数组越界处理神经网络、类型转换处理神经网络、数字错误处理神经网络和指针错误及内存分配处理神经网络,输出是漏洞特征向量中相应操作维度向量;将神经网络的输出和神经元的输出整合成35维漏洞特征向量;
S3、在漏洞特征向量中以非全连接的形式提取有关联的神经元,通过线性函数转换得到一个6维的输出向量,向量中的每一维数值是漏洞特征向量对应种类关键字和关键操作数值与权重向量乘积之和,即漏洞类型特征值;通过softmax多分类层将对应的漏洞类型特征值转换为相应的概率值,输出结果是一个6维向量,向量的每一维度均为一个在0-1之间的数值,对应该种类型漏洞的发生概率预测值;
其中,所述缓冲区溢出处理神经网络包括:若关键字匹配提取层的输出向量中有关缓冲区溢出的维度均为0,则不调用缓冲区溢出处理神经网络,并自动在相应关键操作维度处标记为0,否则需要调用归一化后的向量,使用bi-lstm双向长短期记忆的神经网络结构,输出一个三维向量;所述格式化字符串处理神经网络包括:若关键字匹配提取层的输出向量中有关格式化字符串的维度均为0,则不调用格式化字符串处理神经网络,并自动在相应关键操作维度处标记为0,否则需要调用归一化后的向量,使用bi-lstm双向长短期记忆的神经网络结构,输出一个二维向量;所述数字错误处理神经网络包括:无条件调用bi-lstm双向长短期记忆的神经网络,输出一个二维向量;所述数组越界处理神经网络包括:无条件调用bi-lstm双向长短期记忆的神经网络,输出一个二维向量;所述指针错误和内存分配处理神经网络包括:无条件调用bi-lstm双向长短期记忆的神经网络,输出一个十维向量;所述类型转换处理神经网络包括:使用正向传播的神经网络,输出一个二维向量。
2.权利要求1所述的基于神经网络与深度学习的C/C++漏洞静态检测方法,其特征在于,所述与漏洞挖掘的无关部分包括头文件和注释。
3.权利要求1所述的基于神经网络与深度学习的C/C++漏洞静态检测方法,其特征在于,所述利用控制流与数据流进行代码切片具体包括:通过控制流与数据流从源码中提取出关键语句,再对提取出的关键语句按照控制流与数据流逻辑先后进行重新排序。
4.权利要求1所述的基于神经网络与深度学习的C/C++漏洞静态检测方法,其特征在于,所述将代码切片中的自定义的变量名和函数名进行替换具体包括:将所有用户自定义的变量名以”VAR1”,”VAR2”……的格式进行替换,将所有非C/C++语言库函数的函数名以”FUN1”,”FUN2”……格式进行替换。
5.权利要求4所述的基于神经网络与深度学习的C/C++漏洞静态检测方法,其特征在于,所述转换为CVDF-LZW编码的输入向量包括:将C/C++标准库函数名按照字典序的顺序进行排列,分别从0001-1000进行编码;将用户自定义的变量名按照替换后的顺序从1001-3000进行编码;将用户自定义的函数名按照替换后的顺序从3001-5000进行编码;将运算符按照单目运算符,双目运算符和三目运算符的次序从5001-5100进行编码;将标准数据类型从5101-5115进行编码,将“;”编码为5116,完成了代码切片的编码。
6.权利要求5所述的基于神经网络与深度学习的C/C++漏洞静态检测方法,其特征在于,所述将输入向量转化为等长的C/C++源代码漏洞静态检测框架(CVDF)神经网络的输入具体包括:若编码长度小于1000,依据控制流和数据流判断在切片编码前部或后部以0填充,若长度大于1000,依据控制流和数据流对切片编码进行截断,将长度控制在1000。
8.权利要求7所述的基于神经网络与深度学习的C/C++漏洞静态检测方法,其特征在于,所述通过一个全连接矩阵将归一化后的向量的关键字信息输入到14个神经元中,输出是一个14维向量具体包括:通过一个全连接矩阵将归一化后的向量的关键字信息输入到14个神经元中,每个神经元transfer function均不相同,用f1至f14表示,每个转换函数定义为:无对应关键字时为0,当存在关键字归一化后的编码时为1,最终输出一个14维向量,向量的每一维只有0和1两种取值,分别表示相应关键字的存在与否。
9.权利要求1所述的基于神经网络与深度学习的C/C++漏洞静态检测方法,其特征在于,所述在漏洞特征向量中以非全连接的形式提取有关联的神经元包括:在35维的漏洞特征向量中,将关键字和对应的操作形成有关缓冲区溢出、格式化字符串、数字错误、数组越界、指针错误和内存分配和类型转换的神经元,每一个神经元的权重向量中,各关键字的权重值相同,各关键操作的权重值不同。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011519232.XA CN112560036B (zh) | 2020-12-21 | 2020-12-21 | 一种基于神经网络与深度学习的c/c++漏洞静态检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011519232.XA CN112560036B (zh) | 2020-12-21 | 2020-12-21 | 一种基于神经网络与深度学习的c/c++漏洞静态检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112560036A CN112560036A (zh) | 2021-03-26 |
CN112560036B true CN112560036B (zh) | 2022-11-29 |
Family
ID=75031165
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011519232.XA Active CN112560036B (zh) | 2020-12-21 | 2020-12-21 | 一种基于神经网络与深度学习的c/c++漏洞静态检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112560036B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112995238B (zh) * | 2021-05-21 | 2021-09-14 | 华中科技大学 | 一种减轻DDoS攻击的方法、可编程交换机及SDN控制器 |
CN113326187B (zh) * | 2021-05-25 | 2023-11-24 | 扬州大学 | 数据驱动的内存泄漏智能化检测方法及系统 |
CN113591093B (zh) * | 2021-07-22 | 2023-05-16 | 燕山大学 | 基于自注意力机制的工业软件漏洞检测方法 |
CN113761942B (zh) * | 2021-09-14 | 2023-12-05 | 合众新能源汽车股份有限公司 | 基于深度学习模型的语义分析方法、装置及存储介质 |
CN113961475B (zh) * | 2021-12-22 | 2022-04-15 | 清华大学 | 基于规约导向的错误处理缺陷的检测方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110162972A (zh) * | 2019-05-06 | 2019-08-23 | 武汉大学 | 一种基于语句联合编码深度神经网络的uaf漏洞检测方法 |
CN111090860A (zh) * | 2019-12-10 | 2020-05-01 | 北京邮电大学 | 一种基于深度学习的代码漏洞检测方法及装置 |
US10692004B1 (en) * | 2015-11-15 | 2020-06-23 | ThetaRay Ltd. | System and method for anomaly detection in dynamically evolving data using random neural network decomposition |
-
2020
- 2020-12-21 CN CN202011519232.XA patent/CN112560036B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10692004B1 (en) * | 2015-11-15 | 2020-06-23 | ThetaRay Ltd. | System and method for anomaly detection in dynamically evolving data using random neural network decomposition |
CN110162972A (zh) * | 2019-05-06 | 2019-08-23 | 武汉大学 | 一种基于语句联合编码深度神经网络的uaf漏洞检测方法 |
CN111090860A (zh) * | 2019-12-10 | 2020-05-01 | 北京邮电大学 | 一种基于深度学习的代码漏洞检测方法及装置 |
Non-Patent Citations (3)
Title |
---|
An optimized static propositional function model to detect software vulnerability;Han Lansheng etc.;《IEEE》;20201210;全文 * |
一种基于深度森林的恶意代码分类方法;钱叶魁等;《万方数据》;20200630;全文 * |
电网主型设备全生命周期风险管理模型及信息系统研究;庆格夫;《博士电子期刊》;20151215;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112560036A (zh) | 2021-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112560036B (zh) | 一种基于神经网络与深度学习的c/c++漏洞静态检测方法 | |
CN109697162B (zh) | 一种基于开源代码库的软件缺陷自动检测方法 | |
CN111143842B (zh) | 一种恶意代码检测方法及系统 | |
CN111797241B (zh) | 基于强化学习的事件论元抽取方法及装置 | |
CN109918505B (zh) | 一种基于文本处理的网络安全事件可视化方法 | |
CN107506414A (zh) | 一种基于长短期记忆网络的代码推荐方法 | |
CN108875809A (zh) | 联合attention机制与神经网络的生物医学实体关系分类方法 | |
CN114238100B (zh) | 基于GGNN和分层注意力网络的Java漏洞检测定位方法 | |
Zhang et al. | Log sequence anomaly detection based on local information extraction and globally sparse transformer model | |
CN105955951A (zh) | 一种消息过滤的方法及装置 | |
CN116245107B (zh) | 电力审计文本实体识别方法、装置、设备及存储介质 | |
CN115048316B (zh) | 一种半监督的软件代码缺陷检测方法及装置 | |
CN112738014A (zh) | 一种基于卷积时序网络的工控流量异常检测方法及系统 | |
CN116484024A (zh) | 一种基于知识图谱的多层次知识库构建方法 | |
CN110580213A (zh) | 一种基于循环标记时间点过程的数据库异常检测方法 | |
CN116383399A (zh) | 一种事件舆情风险预测方法及系统 | |
Huang et al. | Improving log-based anomaly detection by pre-training hierarchical transformers | |
CN116340952A (zh) | 一种基于操作码程序依赖图的智能合约漏洞检测方法 | |
CN114218580A (zh) | 一种基于多任务学习的智能合约漏洞检测方法 | |
Li et al. | Improving performance of log anomaly detection with semantic and time features based on bilstm-attention | |
Mete et al. | Predicting semantic building information (BIM) with Recurrent Neural Networks | |
CN116643759A (zh) | 一种基于程序依赖图预测的代码预训练模型训练方法 | |
CN115129896B (zh) | 基于对比学习的网络安全应急响应知识图谱关系提取方法 | |
Xu et al. | Incorporating forward and backward instances in a bi-lstm-cnn model for relation classification | |
Ouyang et al. | Binary vulnerability mining based on long short-term memory network |
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 |