CN117574383A - 一种基于特征融合和代码可视化技术的软件漏洞检测模型的方法 - Google Patents
一种基于特征融合和代码可视化技术的软件漏洞检测模型的方法 Download PDFInfo
- Publication number
- CN117574383A CN117574383A CN202311578695.7A CN202311578695A CN117574383A CN 117574383 A CN117574383 A CN 117574383A CN 202311578695 A CN202311578695 A CN 202311578695A CN 117574383 A CN117574383 A CN 117574383A
- Authority
- CN
- China
- Prior art keywords
- data
- code
- vulnerability
- model
- image
- 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 53
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000005516 engineering process Methods 0.000 title claims abstract description 27
- 230000004927 fusion Effects 0.000 title claims abstract description 22
- 238000012800 visualization Methods 0.000 title claims abstract description 15
- 238000012549 training Methods 0.000 claims abstract description 34
- 238000013527 convolutional neural network Methods 0.000 claims abstract description 16
- 238000005070 sampling Methods 0.000 claims abstract description 15
- 230000007246 mechanism Effects 0.000 claims abstract description 11
- 238000012360 testing method Methods 0.000 claims abstract description 11
- 238000013145 classification model Methods 0.000 claims abstract description 4
- 238000007781 pre-processing Methods 0.000 claims abstract description 4
- 238000002790 cross-validation Methods 0.000 claims abstract 2
- 239000013598 vector Substances 0.000 claims description 54
- 238000000605 extraction Methods 0.000 claims description 27
- 238000004364 calculation method Methods 0.000 claims description 4
- 238000005457 optimization Methods 0.000 claims description 4
- 230000007774 longterm Effects 0.000 claims description 3
- 238000011176 pooling Methods 0.000 claims description 3
- 238000012545 processing Methods 0.000 claims description 3
- 230000009466 transformation Effects 0.000 claims description 3
- 230000007547 defect Effects 0.000 claims description 2
- 230000011218 segmentation Effects 0.000 claims description 2
- 230000000007 visual effect Effects 0.000 claims description 2
- 238000003475 lamination Methods 0.000 claims 1
- 238000012163 sequencing technique Methods 0.000 claims 1
- 230000002123 temporal effect Effects 0.000 abstract 1
- 238000002474 experimental method Methods 0.000 description 15
- 238000012512 characterization method Methods 0.000 description 7
- 238000007794 visualization technique Methods 0.000 description 7
- 238000007792 addition Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 6
- 238000013528 artificial neural network Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000007423 decrease Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 238000003058 natural language processing Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000005520 cutting process Methods 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000007477 logistic regression Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000007637 random forest analysis Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000012706 support-vector machine Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/213—Feature extraction, e.g. by transforming the feature space; Summarisation; Mappings, e.g. subspace methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/243—Classification techniques relating to the number of classes
- G06F18/24323—Tree-organised classifiers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/25—Fusion techniques
- G06F18/253—Fusion techniques of extracted features
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/20—Ensemble learning
-
- 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/0464—Convolutional networks [CNN, ConvNet]
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/01—Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
- G06V10/44—Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
- G06V10/443—Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
- G06V10/449—Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
- G06V10/451—Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
- G06V10/454—Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Software Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computing Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Biomedical Technology (AREA)
- Computer Security & Cryptography (AREA)
- Computational Linguistics (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Molecular Biology (AREA)
- Biophysics (AREA)
- Medical Informatics (AREA)
- Multimedia (AREA)
- Biodiversity & Conservation Biology (AREA)
- Databases & Information Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种基于特征融合和代码可视化技术的软件漏洞检测模型的方法。包括:步骤1,利用交叉验证合理划分数据集,对测试所用到的样本集进行程序切片和模糊采样等预处理,以得到更加平衡的漏洞数据集;步骤2,构造时序卷积网络(Temporal Convolutional Network,TCN)和自注意力机制模型,使用该模型对漏洞代码的逻辑特征进行提取;步骤3,将数据集代码按照ASCII码值转化为多张彩色图像,并使用卷积神经网络(Convolutional Neural Network,CNN)模型训练彩色图像,使用训练好的模型可提取代码结构、语义信息;步骤4,根据步骤2和步骤3得到的特征,采取特征融合技术得到最终的训练样本集与测试样本集,利用XGBoot分类模型对数据进行漏洞分类,根据预测结果进而评估模型的检测性能。
Description
技术领域
本发明属于软件安全领域,涉及一种基于特征融合与代码可视化技术的软件漏洞检测模型的方法。
背景技术
在互联网不断发展的时代,软件应用已经深入到生活的方方面面,覆盖了各个行业和领域。然而,软件中的潜在漏洞成为软件安全的重要隐患。源代码漏洞检测对于软件开发和维护来说非常重要,它可以帮助发现并修复安全漏洞,提高软件的安全性和质量,保护用户数据和隐私,降低维护成本,并维护企业的声誉和信任度。因此,构建高性能的软件漏洞检测模型在保证软件安全方面极具重要意义。
源代码漏洞检测是通过对软件的源代码进行静态分析或动态分析来发现潜在的安全漏洞,传统的源代码漏洞检测方法主要依赖于人工审查和静态分析工具的结合使用。然而,这些方法可能无法检测一些复杂的漏洞模式,而且对于大型代码库而言,人工审查是一项耗时耗力的任务,其准确率高度依赖于专家知识,这也导致一些0-day漏洞无法被发现。因此,现代的源代码漏洞检测方法越来越多地采用自动化工具、机器学习和深度学习等技术来提高检测的准确性和效率,其依赖神经网络自动识别漏洞特征,保证了准确率的同时减少了人工花费。
当前基于深度学习的软件漏洞检测方法大致分为两类,第一种方法是将源代码表征为文本序列,使用自然语言处理技术对漏洞特征进行学习和分类;第二种方法是将源代码表示为抽象语法树或者代码属性图等图结构,其将代码语句表示为图节点,将代码的数据流、控制流等信息表示为图的边,并使用图神经网络对漏洞特征进行学习和分类。第一种检测方法在表征过程中会遗失大部分结构、语义信息,但是其保留了代码的逻辑信息。第二种方法虽然在表征上充分保留了构、语义信息,但是其也破坏了代码的逻辑信息。基于图结构的检测通常还需要消耗大量检测资源,且对于一些不可执行的代码无法直接表示为图结构。上述这些问题都将影响后续漏洞检测模型的性能,使其检测效率低。为了解决上述问题,我们首先使用代码序列化的方式保留其逻辑结构,接着我们使用了一种代码可视化方法保留其结构、语义信息,代码可视化的方法不要求程序可执行,且可视化后的图像使用卷积神经网络进行特征学习也比使用图神经网络消耗资源更少。
发明内容
基于深度学习的软件漏洞检测方法大致分为两类,第一种方法是将源代码表征为文本序列,使用自然语言处理技术对漏洞特征进行学习和分类;第二种方法是将源代码表示为抽象语法树或者代码属性图等图结构,其将代码语句表示为图节点,将代码的数据流、控制流等信息表示为图的边,并使用图神经网络对漏洞特征进行学习和分类。本发明设计提出了一个基于TCN和自注意力机制的模型,用于提取到代码序列的逻辑特征,但未能提取到脆弱代码的结构信息。为了获得更好的检测性能,本发明将代码转换成图像以保留结构信息,并使用CNN提取结构和语义特征。然后,本发明利用特征融合技术拼接两种特征向量用于检测漏洞。将本方法的实验结果与现有的特征提取方法和分类方法进行比较,验证了本发明方法的有效性。
本发明提出了一种基于特征融合与代码可视化技术的软件漏洞检测模型的方法,包括:
步骤1,使用交叉验证划分数据集,对样本集进行程序切片与模糊采样预处理,以得到更加平衡的数据集;
步骤2,构造时序卷积网络和自注意力机制模型,使用该模型对漏洞代码的逻辑特征进行提取;
步骤3,将数据集代码按照ASCII码值转化为多张彩色图像,并使用卷积神经网络模型训练彩色图像,使用训练好的模型可提取代码结构、语义信息;
步骤4,根据步骤2和步骤3得到的特征,采取特征融合技术得到最终的训练样本集与测试样本集,利用XGBoot分类模型对数据进行漏洞分类,根据预测结果进而评估模型的预测性能。
第一方面,上述步骤1的具体步骤如下:
步骤1.1,利用loadtxt()文件读取方法对数据集进行合理划分(训练集占80%,测试集占20%),将相应的训练样本集和测试样本集中的数据和标签数据读取出来,以”,”为读取分割标识,读取数据的前N列作为训练样本存进x_train列表中,第N+1列的数据即为数据的标签存进y_train列表中;
步骤1.2,利用Joern工具得到程序的数据控制流图,然后根据一些关键变量相关的数据流语句进行提取,根据一些关键语句的控制流进行提取,最后按照程序执行的顺序对这些语句进行排列得到程序切片,程序切片只保留了与漏洞相关的语句,其可帮助检测实现高精度的同时减少时间等资源的消耗。。
步骤1.3,对程序切片中开发者自定义的变量名进行规范化处理,并删除注释语句。
步骤1.4,利用模糊采样方法对训练数据进行过采样,有效缓解缺陷数据的类不平衡问题并提高数据集的训练精度。根据样本不平衡比例设置采样比例以确定采样倍率,少数类样本的数量表示为k,多数类样本的数量表示为v,对于每个少数类样本(x,l),迭代添加训练样本(x-i*m,l)和(x+i*m,l),其中l表示标签,x表示样本,m的值设为0.01。然后,同一新样本被多次添加到训练集中。添加次数是i的递减函数((1/n)/2i,i从0开始递增,n=k/v),添加次数随着i值的增加而减少,最终添加次数减少到0,模糊采样结束。
第二方面,上述特征提取方法的具体流程包括:
步骤2.1,将经预处理后的训练数据样本集以列表的形式存储,并使用word2vec进行词向量嵌入,并将向量的长度设置为150,确保数据具有一致的尺度和范围。
步骤2.2,接着构建TCN模型,TCN由4个卷积层和残差连接组成。在每个卷积层中,使用一维卷积操作来捕捉序列中的局部特征,并利用残差连接来避免信息的丢失。由于卷积操作的局部性,TCN能够捕捉到漏洞代码序列中的短期和长期依赖关系。最后使用全局池化操作对每个特征维度进行汇总,得到固定长度的特征向量X[x1,x2,...,x3]。
步骤2.3,使用TCN模型提取到漏洞代码的全局特征X[x1,x2,...,x3]之后,通过线性变换映射将其到三个不同的向量空间,得到查询向量Q=[q1,q2,...,qn]、键向量K=[k1,k2,...,kn]和值向量V=[v1,v2,...,vn]。对于每个位置i,计算其与其他位置的注意力权重(通过计算查询向量Q的第i个元素与键向量K的所有元素的内积得到)。得到注意力权重列表A=[a1,a2,...,an],其中ai表示位置i对其他位置的注意力权重,ai的计算公式为:
ai=softmax(qi*ki),
softmax函数将注意力权重归一化,使得注意力权重的总和为1。接着将注意力权重与值向量V进行加权求和,得到加权后的表示。将注意力权重与值向量的每个元素相乘,然后将结果求和。得到加权后的表示列表Z=[z1,z2,...,zn]。即为自注意力机制的输出,该输出即为漏洞代码的逻辑、语义特征向量。
步骤3.1,利用ASCII码值表将代码转化为可视化图像。首先,每个源文件被转换成一个8位无符号整数(0-255)向量Y,该向量的每个数值与源代码中字符的ASCII码值相对应,例如,'a'被转换成97。
步骤3.2,对于转化为像素值的序列Y,将序列Y分成多个三元组,每个三元组中的值分别对应彩色图像的R、G和B三个通道,即源代码中的每个字符都是一个彩色通道。这样得到的像素向量大小为原始代码字符长度的三分之一。然后,将该向量的值按行和列排列,并将其解释为矩形图像,图像的长度和宽度的乘积为像素向量长度的三分之一,从而生成图像。
步骤3.3,根据卷积核的大小调整图像的大小。这是为了保证卷积核参数的适应性,避免出现错误的特征提取。卷积核是应用于图像的滤波器,通过卷积操作对输入图像进行特征提取。卷积核的大小决定了它在图像上滑动区域的大小。如果图像大小与卷积核大小不匹配,可能导致卷积操作不完整,从而影响特征提取的准确性和有效性。因此,经过大量的参数调整工作,我们提出了一种优化方案。对程序长度进行开根运算,并将结果四舍五入得到一个整数作为图像的长度。然后,我们将图像的总长度除以该整数得到图像的宽度,以确保图像形状尽可能接近正方形。
步骤3.4,使用卷积神经网络对图像进行特征提取模型训练,训练好的模型用于提取漏洞代码的结构、语义特征。
第四方面,上述步骤4的具体步骤如下:
步骤4.1,对于训练样本集,经过上述语义特征提取和结构特征提取操作处理后,使用特征融合技术(向量拼接)得到代码的最终特征向量。
步骤4.2,创建相应的XGBoot分类器对象,利用分类器对目标数据集进行漏洞数据的检测。
与现有方法相比,本发明有益的效果:
1、提出的一种结合特征融合与代码可视化技术的漏洞检测模型在基于丰富的逻辑特征、语义特征和结构特征的基础上对漏洞代码进行检测,利用基于时序卷积神经网络和自注意力机制的模型提取漏洞代码的逻辑特征和语义特征,利用代码可视化技术和卷积神经网络提取漏洞代码的语义特征和结构特征,做到了同时考虑代码的逻辑特征和结构特征,进而让构建的漏洞检测模型更具高效性。
2、提出用代码可视化技术提取代码结构特征用于漏洞检测,其不要求程序代码可执行,在构建漏洞检测模型时,能够有效保留漏洞代码的结构特征。程序代码不同于自然语言都是顺序结构,因此仅使用自然语言处理技术无法保留程序的循环、选择结构。因此,需要将代码利用可视化技术转化为图片保留其结构特征,使得不同漏洞代码的模式特征更有区分度,从而进一步帮助漏洞检测工作提高性能。
附图说明
图1是一种基于特征融合和代码可视化技术的软件漏洞检测方法的总体流程图。
图2是一种基于特征融合和代码可视化技术的软件漏洞检测方法的详细流程图。
图3是本发明实验环节所用数据样本集信息。
图4是以BE-ALL(缓冲区错误)为数据集,用不同的方案对数据特征进行提取得到的漏洞检测模型进行实验的信息和结果。
图5是以RM-ALL(资源管理错误)为数据集,用不同的方案对数据特征进行提取得到的漏洞检测模型进行实验的信息和结果。
图6是以AU-ALL(算术表达式错误)为数据集,用不同的方案对数据特征进行提取得到的漏洞检测模型进行实验的信息和结果。
图7是以AE-ALL(数组使用错误)为数据集,用不同的方案对数据特征进行提取得到的漏洞检测模型进行实验的信息和结果。
图8是以BE-ALL为数据集,用不同的方案对样本分类进行实验的accuray值,precision以及F1-measure。
图9是以RM-ALL为数据集,用不同的方案对样本分类进行实验的accuray值,precision以及F1-measure。
图10是以AU-ALL为数据集,用不同的方案对样本分类进行实验的accuray值,precision以及F1-measure。
图11是以AE-ALL为数据集,用不同的方案对样本分类进行实验的accuray值,precision以及F1-measure。
具体实施方式
下面结合附图和实施案例对本发明作进一步说明,应指出的是,所描述的实施案例仅旨在便于对本发明的理解,而对其不起任何限定作用。
本发明旨在针对源代码漏洞检测中构建漏洞检测模型时,特征提取时忽略了源代码结构特征和对于不可执行的源代码结构特征保留困难的问题,提出一种使用代码可视化保留结构信息并与逻辑信息进行特征融合的方法,以建立较好检测性能源代码漏洞检测模型,并进行了大量的实验,证明了方法的可行性和高效性。
如图1所示,本发明的一种结合特征融合和代码可视化技术的软件漏洞检测,包括:
步骤201利用loadtxt()文件读取方法对数据集进行合理划分(训练集占80%,测试集占20%),将相应的训练样本集和测试样本集中的数据和标签数据读取出来,以”,”为读取分割标识,读取数据的前N列作为训练样本存进x_train列表中,第N+1列的数据即为数据的标签存进y_train列表中;对数据集进行程序切片和模糊采样等预处理,以得到更加平衡的漏洞数据集;
本发明实施数据预处理的目的在于,得到的源数据集作为训练数据时,每个项目数据集由许多条样本数据构成,而有漏洞的样本数据远小于无漏洞的样本数据,模型在训练时就会更容易学到无漏洞代码的特征,从而检测出漏洞的性能不够好,因此需要平衡数据集,使模型更公平的学习到漏洞特征和无漏洞代码的特征。另外对于一个样本中,程序中产出漏洞代码的语句占程序语句的少数,因此需要进行程序切片,删除一些与触发漏洞不相关的代码语句,减少资源消耗的同时帮助模型提高准确性。
步骤2011利用模糊采样的方法对有漏洞的样本进行扩充,使得有漏洞样本与无漏洞样本数量相同。
模糊采样计算流程包括:(1)根据样本不平衡比例设置采样比例以确定采样倍率,少数类样本的数量表示为k,多数类样本的数量表示为v,对于每个少数类样本(x,l),迭代添加训练样本(x-i*m,l)和(x+i*m,l),其中l表示标签,x表示样本,m的值设为0.01。然后,同一新样本被多次添加到训练集中。添加次数是i的递减函数((1/n)/2i,i从0开始递增,n=k/v),添加次数随着i值的增加而减少,最终添加次数减少到0,模糊采样结束。
步骤2012采用程序切片的方法简化漏洞代码,并对开发者自定义的变量名进行规范化处理、删除注释语句。
程序切片的具体流程包括:利用Joern工具得到程序的数据控制流图,然后根据一些关键变量相关的数据流语句进行提取,根据一些关键语句的控制流进行提取,最后按照程序执行的顺序对这些语句进行排列得到程序切片,程序切片只保留了与漏洞相关的语句,其可帮助检测实现高精度的同时减少时间等资源的消耗。通过上述操作,便可得到预处理后的输入数据。
步骤202,构造时序卷积网络和自注意力机制模型,使用该模型对漏洞代码的逻辑特征进行提取;
上述的步骤202中,构造时序卷积网络和自注意力机制模型的步骤如下:
步骤2021将经预处理后的训练数据样本集以列表的形式存储,并使用word2vec进行词向量嵌入,并将向量的长度设置为150,确保数据具有一致的尺度和范围。接着构建TCN模型,CNN由4个卷积层和残差连接组成。在每个卷积层中,使用一维卷积操作来捕捉序列中的局部特征,并利用残差连接来避免信息的丢失。由于卷积操作的局部性,TCN能够捕捉到漏洞代码序列中的短期和长期依赖关系。最后使用全局池化操作对每个特征维度进行汇总,得到固定长度的特征向量X[x1,x2,...,x3]。
步骤2022,使用TCN模型提取到漏洞代码的全局特征X[x1,x2,...,x3]之后,通过线性变换映射将其到三个不同的向量空间,得到查询向量Q=[q1,q2,...,qn]、键向量K=[k1,k2,...,kn]和值向量V=[v1,v2,...,vn]。对于每个位置i,计算其与其他位置的注意力权重(通过计算查询向量Q的第i个元素与键向量K的所有元素的内积得到)。得到注意力权重列表A=[a1,a2,...,an],其中ai表示位置i对其他位置的注意力权重,ai的计算公式为:
ai=softmax(qi*ki),
softmax函数将注意力权重归一化,使得注意力权重的总和为1。接着将注意力权重与值向量V进行加权求和,得到加权后的表示。将注意力权重与值向量的每个元素相乘,然后将结果求和。得到加权后的表示列表Z=[z1,z2,...,zn]。即为自注意力机制的输出,该输出即为漏洞代码的逻辑、语义特征向量。
步骤203,在获取漏洞代码的逻辑、语义特征向量后,再利用代码可视化技术将数据集代码转化为多张彩色图像,并使用卷积神经网络模型训练彩色图像,使用训练好的模型可提取代码结构、语义信息;
上述的步骤203中,利用代码可视化技术将数据集代码转化为多张彩色图像并提取结构特征的步骤如下:
步骤2031,每个源文件被转换成一个8位无符号整数(0-255)向量Y,该向量的每个数值与源代码中字符的ASCII码值相对应,例如,'a'被转换成97。
步骤2032,对于转化为像素值的序列Y,将序列Y分成多个三元组,每个三元组中的值分别对应彩色图像的R、G和B三个通道,即源代码中的每个字符都是一个彩色通道。这样得到的像素向量大小为原始代码字符长度的三分之一。然后,将该向量的值按行和列排列,并将其解释为矩形图像,图像的长度和宽度的乘积为像素向量长度的三分之一,从而生成图像。
步骤2033,根据卷积核的大小调整图像的大小。经过大量的参数调整工作,我们提出了一种优化方案。对程序长度进行开根运算,并将结果四舍五入得到一个整数作为图像的长度。然后,我们将图像的总长度除以该整数得到图像的宽度,以确保图像形状尽可能接近正方形。
此步骤是为了保证卷积核参数的适应性,避免出现错误的特征提取。卷积核是应用于图像的滤波器,通过卷积操作对输入图像进行特征提取。卷积核的大小决定了它在图像上滑动区域的大小。如果图像大小与卷积核大小不匹配,可能导致卷积操作不完整,从而影响特征提取的准确性和有效性。
步骤2034,使用卷积神经网络对图像进行特征提取模型训练,训练好的模型用于提取漏洞代码的结构、语义特征M(m1,m2,...mn)。
步骤204,根据步骤2和步骤3得到的特征,采取特征融合技术得到最终的训练样本集与测试样本集,利用XGBoot分类模型对数据进行漏洞分类,根据预测结果进而评估模型的预测性能。
步骤2041根据步骤2得到的特征Z(z1,z2,...,zn)和步骤3得到的特征M(m1,m2,...mn),使用特征融合技术:
F(z1,z2,...,zn,m1,m2,...mn)=Z(z1,z2,...,zn)⊕M(m1,m2,...mn),其中⊕表示向量拼接操作,F为最终的特征向量;
步骤2042创建相应的XGBoot分类器对象,利用分类器对目标数据集进行漏洞数据的检测。
本发明主要针对代码特征提取过程提出的一种解决数据特征提取不够全面这一问题的方法,我们结合特征融合和代码可视化技术对数据特征进行处理,我们选用了CWE数据集中的4个子集作为实验数据,分别是BE-ALL,RM-ALL,AU-ALL,AE-ALL,图3展示了实验中用到的数据集的详细信息。
为使源代码漏洞检测模型性能得到提升,本发明提出了一些解决特征提取不全面问题的方法。由于源代码具有复杂的结构特征,所以本发明利用代码可视化技术将源代码转化为图像,使代码的结构特征更好的被提取、语义特征更明显,同时结合代码的序列逻辑、语义特征,对多个特征进行特征融合,在对目标数据进行检测时选取高性能的分类器分类结果作为模型最终的分类结构,很大程度上提高了模型的检测性能。
通过图4-图7的可以看出。对于3种不同的特征提取的方法,针对所选取的四个数据集,根据标记序列提取特征和使用源代码可视化方法来保留程序的结构特征两种方法都有一定的检测效果,即表明代码的序列逻辑特征和结构特征都是对检测效果有影响的因素。所以本研究综合考虑了代码的多方面特征,使用不同的表征方法和神经网络模型提取结构、序列逻辑特征,并在此基础上利用特征融合技术保留多特征,从而提漏洞检测模型的检测效果,以使得模型检测效果达到最佳。
在确定利用不同表征方法提取不同特征的思想后,本发明针对如何设计不同的表征方法设计合适的特征提取模型以提取更丰富的漏洞特征展开了研究,对于序列表征方法用来TCN和自注意力机制进行特征提取,对于可视化方法用CNN进行特征提取。本文对每种方法针对不同的数据集进行了100次实验,最后以实验结果取平均值作为模型的最终性能,图4-图7展示了结合序列逻辑特征和结构特征进行漏洞检测的查全率,AUC值以及查准率。同时作为对比,本文也对使用序列逻辑特征和结构特征进行漏洞检测的方法进行了类似的实验。
经过上述对数据处理方法的选择,对于实验选用的4个数据集进行漏洞的检测,应用本发明提出的方法处理漏洞特征提取单一、结构特征提取效果差的问题,然后得到序列逻辑特征与代码结构特征,最后使用以融合特征数据训练出来的分类器完成对目标数据的检测,此外,为验证本发明所提方法的有效性,设置了多组对比实验,对漏洞代码利用不同的表征方法和特征提取方法进行实验,从AUC等指标进行综合对比,实验结果如图4-图7所示。
通过观察图8-图11可知,本发明提出的算法能使XGBoost分类器得出更加精准的漏洞检测效果,这是由于该算法充分考虑了多特征间的复杂关系,有效地捕捉了数据中潜在的模式和异常情况。算法在特征选择和参数调整上的独特优化,使得XGBoost在漏洞检测任务中表现出更高的准确性和稳定性。实验证明,该算法在各项指标上均明显优于传统方法(随机森林,逻辑回归,支持向量机),能够更准确地识别出潜在的漏洞。由此可见,本研究所提方法能够有效地对基于单一特征进行漏洞检测的方法进行改进,改进后的方法能够使检测模型性能有一定幅度的提升。
Claims (5)
1.一种基于特征融合和代码可视化技术的软件漏洞检测模型的方法,其特征在于,包括如下步骤:
步骤1,利用交叉验证合理划分数据集,对测试所用到的样本集进行预处理,以得到更加平衡的漏洞数据集;
步骤2,构造时序卷积网络和自注意力机制模型,使用该模型对漏洞代码的逻辑特征进行提取;
步骤3,将数据集代码按照ASCII码值转化为多张彩色图像,并使用卷积神经网络模型训练彩色图像,使用训练好的模型可提取代码结构、语义信息;
步骤4,根据步骤2和步骤3得到的特征,采取特征融合技术得到最终的训练样本集与测试样本集,利用XGBoot分类模型对数据进行漏洞分类,根据预测结果进而评估模型的预测性能。
2.根据权利要求1所述的一种方法,其特征在于,所述步骤1的具体实现包括如下步骤:
步骤1.1,利用loadtxt()文件读取方法对数据集进行合理划分,将相应的训练样本集和测试样本集中的数据和标签数据读取出来,以”,”为读取分割标识,读取数据的前N列作为训练样本存进x_train列表中,第N+1列的数据即为数据的标签存进y_train列表中;
步骤1.2,利用Joern工具得到程序的数据控制流图,然后根据一些关键变量相关的数据流语句进行提取,根据一些关键语句的控制流进行提取,最后按照程序执行的顺序对这些语句进行排列得到程序切片,程序切片只保留了与漏洞相关的语句,其可帮助检测实现高精度的同时减少时间资源的消耗;
步骤1.3,对程序切片中开发者自定义的变量名进行规范化处理,并删除注释语句;
步骤1.4,利用模糊采样方法对训练数据进行过采样,有效缓解缺陷数据的类不平衡问题并提高数据集的训练精度;根据样本不平衡比例设置采样比例以确定采样倍率,对于少数类中的每一个样本,以欧式距离为标准计算它到少数类样本集中所有样本的距离,排序后得到该样本的k近邻进而扩充少数类的样本。
3.如权利要求1所述方法,其特征在于,所述步骤2的具体实现包括如下步骤:
步骤2.1,将经预处理后的训练数据样本集以列表的形式存储,并使用word2vec(词向量嵌入技术)进行词向量嵌入,并将向量的长度设置为150,确保数据具有一致的尺度和范围;
步骤2.2,构建TCN(时序卷积神经网络)模型,TCN由4个卷积层和残差连接组成;在每个卷积层中,使用一维卷积操作来捕捉序列中的局部特征,并利用残差连接来避免信息的丢失;由于卷积操作的局部性,TCN能够捕捉到漏洞代码序列中的短期和长期依赖关系;最后使用全局池化操作对每个特征维度进行汇总,得到固定长度的特征向量X[x1,x2,...,x3];
步骤2.3,使用TCN模型提取到漏洞代码的全局特征X[x1,x2,...,x3]之后,通过线性变换映射将其到三个不同的向量空间,得到查询向量Q=[q1,q2,...,qn]、键向量K=[k1,k2,...,kn]和值向量V=[v1,v2,...,vn];对于每个位置i,计算其与其他位置的注意力权重;得到注意力权重列表A=[a1,a2,...,an],其中ai表示位置i对其他位置的注意力权重,ai的计算公式为:
ai=softmax(qi*ki),
softmax函数将注意力权重归一化,使得注意力权重的总和为1;接着将注意力权重与值向量V进行加权求和,得到加权后的表示;将注意力权重与值向量的每个元素相乘,然后将结果求和;得到加权后的表示列表Z=[z1,z2,...,zn];即为自注意力机制的输出,该输出即为漏洞代码的逻辑、语义特征向量。
4.根据权利要求1所述的一种方法,其特征在于,所述步骤3的具体实现包括如下步骤:
步骤3.1,利用ASCII码值表将代码转化为可视化图像;首先,每个源文件被转换成一个8位无符号整数(0-255)向量Y,该向量的每个数值与源代码中字符的ASCII码值相对应,例如,'a'被转换成97;
步骤3.2,对于转化为像素值的序列Y,将序列Y分成多个三元组,每个三元组中的值分别对应彩色图像的R、G和B三个通道,即源代码中的每个字符都是一个彩色通道;这样得到的像素向量大小为原始代码字符长度的三分之一;然后,将该向量的值按行和列排列,并将其解释为矩形图像,图像的长度和宽度的乘积为像素向量长度的三分之一,从而生成图像;
步骤3.3,根据卷积核的大小调整图像的大小,以保证卷积核参数的适应性,避免出现错误的特征提取;卷积核是应用于图像的滤波器,通过卷积操作对输入图像进行特征提取。卷积核的大小决定了它在图像上滑动区域的大小;如果图像大小与卷积核大小不匹配,可能导致卷积操作不完整,从而影响特征提取的准确性和有效性;因此,经过大量的参数调整工作,提出了一种优化方案;对程序长度进行开根运算,并将结果四舍五入得到一个整数作为图像的长度;然后,将图像的总长度除以该整数得到图像的宽度,以确保图像形状尽可能接近正方形;
步骤3.4,使用卷积神经网络对图像进行特征提取模型训练,训练好的模型用于提取漏洞代码的结构、语义特征。
5.根据权利要求1所述的一种方法,其特征在于,所述步骤4的具体实现包括如下步骤:
步骤4.1,对于训练样本集,经过上述语义特征提取和结构特征提取操作处理后,使用特征融合技术得到代码的最终特征向量;
步骤4.2,创建相应的XGBoot分类器,利用分类器对目标数据集进行漏洞数据的检测。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311578695.7A CN117574383A (zh) | 2023-11-23 | 2023-11-23 | 一种基于特征融合和代码可视化技术的软件漏洞检测模型的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311578695.7A CN117574383A (zh) | 2023-11-23 | 2023-11-23 | 一种基于特征融合和代码可视化技术的软件漏洞检测模型的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117574383A true CN117574383A (zh) | 2024-02-20 |
Family
ID=89860391
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311578695.7A Pending CN117574383A (zh) | 2023-11-23 | 2023-11-23 | 一种基于特征融合和代码可视化技术的软件漏洞检测模型的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117574383A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117932607A (zh) * | 2024-03-20 | 2024-04-26 | 山东省计算中心(国家超级计算济南中心) | 一种勒索软件检测方法、系统、介质及设备 |
CN118394661A (zh) * | 2024-06-24 | 2024-07-26 | 广东工业大学 | 一种代码可读性评价方法、系统、设备及介质 |
-
2023
- 2023-11-23 CN CN202311578695.7A patent/CN117574383A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117932607A (zh) * | 2024-03-20 | 2024-04-26 | 山东省计算中心(国家超级计算济南中心) | 一种勒索软件检测方法、系统、介质及设备 |
CN118394661A (zh) * | 2024-06-24 | 2024-07-26 | 广东工业大学 | 一种代码可读性评价方法、系统、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109408389B (zh) | 一种基于深度学习的代码缺陷检测方法及装置 | |
JP6573226B2 (ja) | データ生成装置、データ生成方法及びデータ生成プログラム | |
KR102142205B1 (ko) | 설명 가능한 인공지능 모델링 및 시뮬레이션 시스템 및 방법 | |
CN117574383A (zh) | 一种基于特征融合和代码可视化技术的软件漏洞检测模型的方法 | |
CN109491914B (zh) | 基于不平衡学习策略高影响缺陷报告预测方法 | |
CN112597038B (zh) | 软件缺陷预测方法及系统 | |
CN112733156A (zh) | 基于代码属性图的软件脆弱性智能检测方法、系统及介质 | |
CN111401472B (zh) | 基于深度卷积神经网络的红外目标分类方法和装置 | |
CN114064487B (zh) | 一种代码缺陷检测方法 | |
CN117454387A (zh) | 基于多维度的特征提取的漏洞代码检测方法 | |
FI20205460A1 (en) | Smart code editor for detecting and visualizing deviations | |
Abdelaziem et al. | Application of computer vision in machine learning-based diagnosis of water production mechanisms in oil wells | |
Bernedixen | Automated bottleneck analysis of production systems: increasing the applicability of simulation-based multi-objective optimization for bottleneck analysis within industry | |
CN111898134B (zh) | 基于LSTM和BiLSTM的智能合约漏洞检测方法和装置 | |
Ackermann et al. | Black-box learning of parametric dependencies for performance models | |
KR20210003661A (ko) | 패널의 이미지를 이용하여 패널의 결함을 검출하는 방법 및 시스템 | |
JP7450187B2 (ja) | プログラム、情報処理方法、及び情報処理装置 | |
KR102531742B1 (ko) | 센서 데이터의 누락값 보정 방법 및 누락값 보정 장치 | |
JP7206892B2 (ja) | 画像検査装置、画像検査のための学習方法および画像検査プログラム | |
Teofili et al. | CERTEM: explaining and debugging black-box entity resolution systems with CERTA | |
de Lima et al. | Evisclass: a new evaluation method for image data stream classifiers | |
CN118628499B (zh) | 一种基于网络架构搜索的航空发动机叶片缺陷检测方法 | |
CN118094549B (zh) | 基于源程序与可执行代码双模态融合的恶意行为识别方法 | |
CN115906089B (zh) | 一种基于二进制函数相似性的漏洞检测方法与系统 | |
Carpenter | Machine Learning Brings Vast Core-Analysis Legacy Data to Life |
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 |