CN112989358B - 提高基于深度学习的源代码漏洞检测健壮性的方法及装置 - Google Patents

提高基于深度学习的源代码漏洞检测健壮性的方法及装置 Download PDF

Info

Publication number
CN112989358B
CN112989358B CN202110263311.7A CN202110263311A CN112989358B CN 112989358 B CN112989358 B CN 112989358B CN 202110263311 A CN202110263311 A CN 202110263311A CN 112989358 B CN112989358 B CN 112989358B
Authority
CN
China
Prior art keywords
training
source code
classifiers
neural network
program source
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
Application number
CN202110263311.7A
Other languages
English (en)
Other versions
CN112989358A (zh
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.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
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 Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN202110263311.7A priority Critical patent/CN112989358B/zh
Publication of CN112989358A publication Critical patent/CN112989358A/zh
Priority to US17/444,612 priority patent/US20220292200A1/en
Application granted granted Critical
Publication of CN112989358B publication Critical patent/CN112989358B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • 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
    • 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
    • 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
    • G06N3/094Adversarial learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

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

Abstract

本发明涉及一种提高基于深度学习的源代码漏洞检测健壮性的方法及装置,装置至少包括代码变换模块、映射模块和神经网络模块,映射模块与代码变换模块、映射模块和神经网络模块分别建立数据连接关系,神经网络模块包括至少两个第一分类器,代码变换模块基于接收的第一训练程序源码以代码变换的方式生成具有可攻击性的第二训练程序源码,映射模块将由第二训练程序源码分离形成的若干代码片段映射为第二样本向量,神经网络模块基于与第一训练程序源码对应的第一样本向量和与第二训练程序源码对应的第二样本向量训练至少两个第一分类器直至训练数据达到训练阈值。本发明通过对特征生成器和分类器进行分类训练,提高了源代码漏洞检测健壮性。

Description

提高基于深度学习的源代码漏洞检测健壮性的方法及装置
技术领域
本发明涉及源代码漏洞检测技术领域,尤其涉及一种提高基于深度学习的源代码漏洞检测健壮性的方法及装置。
背景技术
当前国际网络安全形式严峻,软件漏洞问题尚未解决,有效检测未知漏洞,进而及时修复漏洞对于系统安全至关重要,目前主流的基于静态分析的漏洞检测技术主要有基于相似性的漏洞检测,基于规则的漏洞检测和基于机器学习的漏洞检测方法。基于相似性的漏洞检测用于检测由代码复制导致的漏洞,基于规则的漏洞检测使用专家定义的规则检测漏洞,人工干预的主观性强,并且规则可能不完善,而基于深度学习的漏洞检测不需要人工定义漏洞的特征,可以大大降低漏报率和误报率。
然而,基于深度学习的漏洞检测模型的健壮性差,容易受到例如代码变换等导致的攻击。源程序的代码变换包括三类:语义保留的代码变换、语义近似的代码变换和语义改变的代码变换。常见的代码变换工具包括Tigress、Stunnix obfuscator、Sourceformatx、Coccinelle等。这些代码变换可以应用到不同的研究领域,例如代码格式化、代码补全和重构、逆向工程的防御、代码克隆检测的评价以及神经网络程序嵌入的评价等,但尚无代码变换应用于漏洞检测的研究。
例如,专利文献CN103268281B公开了一种源代码漏洞检测方法及其系统,方法包括:S1、获取目标检测源代码的编程语言,根据编程语言编写的源代码所存在的安全漏洞构建安全漏洞规则库;S2、对目标检测源代码进行编译,生成中间表示文件,对中间表示文件进行解析,提取中间表示文件的上下文信息并存储起来;S3、依据存储的上下文信息构建调度上下文的状态自动机;S4、对状态自动机中的状态空间进行遍历,分别判断状态自动机中各状态空间是否与安全漏洞规则库中的规则相匹配,若是则获取产生漏洞的执行路径。
目前尚无关于提高基于深度学习的漏洞检测健壮性的研究,对抗训练是一种提高基于深度学习的模型健壮性的重要方法。对抗训练广泛应用于图像处理、语音识别、恶意软件检测等领域,但由于程序语言的结构化性质,图像和文本领域的对抗训练方法不适用于源代码相关深度学习模型,以图像处理为例,图像像素的变化是连续的,像素的微小变化不容易察觉,且一般不会影响语义。然而,代码的变化是离散的,代码元素的微小变化很可能导致语法错误,容易察觉,且会影响语句的语义。近年来,在源代码应用领域,针对深度学习模型健壮性的研究刚刚起步,例如将对抗训练应用于作者归属识别,函数功能预测等方面,通常这些代码变换对开发人员来说是合理的,但却能使基于深度学习的模型产生错误的分类结果。我们通过分析现有技术对深度学习模型实现的攻击,进行提升模型健壮性的研究。
此外,一方面由于对本领域技术人员的理解存在差异;另一方面由于发明人做出本发明时研究了大量文献和专利,但篇幅所限并未详细罗列所有的细节与内容,然而这绝非本发明不具备这些现有技术的特征,相反本发明已经具备现有技术的所有特征,而且申请人保留在背景技术中增加相关现有技术之权利。
发明内容
针对现有技术之不足,本发明提供一种提高基于深度学习的源代码漏洞检测健壮性的装置,所述装置至少包括代码变换模块、映射模块和神经网络模块,所述映射模块与代码变换模块、映射模块和神经网络模块分别建立数据连接关系,所述神经网络模块包括至少两个第一分类器,所述代码变换模块基于接收的第一训练程序源码以代码变换的方式生成具有可攻击性的第二训练程序源码,所述映射模块将由所述第二训练程序源码分离形成的若干代码片段映射为第二样本向量,所述神经网络模块基于与所述第一训练程序源码对应的第一样本向量和与所述第二训练程序源码对应的第二样本向量分别训练至少两个第一分类器直至训练数据达到训练阈值。
本发明显著改善模型健壮性。通过在原模型的基础上使用两个分类器,解耦神经网络模型的特征学习和分类器,固定特征学习的生成器参数,训练分类器以获取较大差异的决策边界;再固定分类器参数,训练特征学习的生成器以减小两个分类器的预测差异,通过两个步骤的迭代优化,使两个分类器收敛到健壮的特征和分类器,从而极大地提高基于深度学习的漏洞检测系统的健壮性。
优选的,所述神经网络模块基于循环神经网络模型训练特征生成器和/或分类器的方式至少包括:
基于与所述第一训练程序源码对应的第一样本向量训练至少一个第一特征生成器和至少两个所述第一分类器的直至至少两个第一分类器的预测差异最小化;
基于与所述第二训练程序源码对应的第二样本向量训练至少两个第二分类器直至至少两个第二分类器的预测差异最大化;
基于与所述第二训练程序源码对应的第二样本向量和经过预测差异最大化训练的至少两个所述第二分类器训练经过预测差异最小化训练的第一特征生成器为第二特征生成器。
优选的,所述神经网络模块基于循环神经网络模型训练特征生成器和/或分类器的方式还包括:
以迭代训练的方式训练第二分类器和所述第一特征生成器。
优选的,基于与所述第二训练程序源码对应的第二样本向量训练至少两个第二分类器的方式包括:
计算所述第二分类器分类第一样本向量的第一损失值,
计算所述第二分类器分类第二样本向量中的难样本的第二损失值,
基于所述第一损失值和所述第二损失值的差值确定循环神经网络模型的预测差异。
优选的,所述第一损失值的计算公式为:
Figure BDA0002969945740000031
其中,xs表示向量,ys表示样本标签,
Figure BDA0002969945740000032
表示第二分类器对漏洞样本的预测概率值。
优选的,所述第二损失值的计算公式为:
Figure BDA0002969945740000041
其中,
Figure BDA0002969945740000042
表示一个第二分类器对难样本的预测概率值,
Figure BDA0002969945740000043
表示另一个第二分类器对难样本的预测概率值。
优选的,基于所述第一损失值和所述第二损失值的差值确定循环神经网络模型的预测差异的计算方法为:
Figure BDA0002969945740000044
其中,Lc(X)表示第一损失值,Lh(X″)表示难样本的第二损失值。
本发明还提供一种源代码漏洞检测装置,至少包括映射模块和神经网络模块,所述映射模块和神经网络模块建立数据连接关系,所述神经网络模块包括至少两个第二分类器,
所述映射模块将目标程序源码分离形成的若干代码片段映射为第一样本向量,
所述神经网络模块基于与所述第一目标程序源码对应的第一样本向量进行漏洞检测,
在漏洞样本的预测概率小于阈值的情况下,目标程序源码为无漏洞样本;
在漏洞样本的预测概率不小于阈值的情况下,目标程序源码为有漏洞样本,
其中,所述第二分类器的训练方式为:
所述映射模块将由代码变换模块基于第一训练程序源码以代码变换的方式生成的所述第二训练程序源码分离为若干代码片段并映射为第二样本向量,
所述神经网络模块基于与所述第一训练程序源码对应的第一样本向量和与所述第二训练程序源码对应的第二样本向量分别训练至少两个第一分类器直至训练数据达到训练阈值。
本发明还提供一种提高基于深度学习的源代码漏洞检测健壮性的方法,所述方法至少包括:
将第一训练程序源码以代码变换的方式生成具有可攻击性的第二训练程序源码,
将由所述第二训练程序源码分离形成的若干代码片段映射为第二样本向量,
基于与所述第一训练程序源码对应的第一样本向量和与所述第二训练程序源码对应的第二样本向量分别训练至少两个第一分类器直至训练数据达到训练阈值。
本发明的提高基于深度学习的源代码漏洞检测健壮性的方法,所述神经网络模块基于循环神经网络模型训练特征生成器和/或分类器的方式至少包括:
基于与所述第一训练程序源码对应的第一样本向量训练至少一个第一特征生成器和至少两个所述第一分类器直至至少两个第一分类器的预测差异最小化,此时第一分类器形成第二分类器;
基于与所述第二训练程序源码对应的第二样本向量训练至少两个第二分类器直至至少两个第二分类器的预测差异最大化;
基于与所述第二训练程序源码对应的第二样本向量和经过预测差异最大化训练的至少两个所述第二分类器训练经过预测差异最小化训练的第一特征生成器为第二特征生成器。
本发明的有益技术效果:
(1)显著降低代码变换后样本检测的漏报误报。本发明通过分析代码变换的程度和类型,实现如何抵御对抗样本,提出改进漏洞检测方法,显著降低了针对代码变换后样本漏洞检测的漏报率和误报率。
(2)本发明的方法具有通用性,与漏洞检测方法无关。本发明通过分析对各种粒度的代码片段、各种代码表征以及各种神经网络的使用,提出了适用于各种使用神经网络的基于深度学习的源代码漏洞检测方法。
附图说明
图1是本发明的方法流程图;
图2是本发明的代码变换类型II-2变换实例图;
图3是本发明的改进的神经网络结构图。
附图标记列表
1:代码变换模块;2:映射模块;3:神经网络模块;P1:第一输入模块;P2:第二输入模块;B:深度学习模块;C:检测结果;11:第一特征生成器;12:第二特征生成器;21:第一分类器;22:第二分类器;N:差异损失值。
具体实施方式
下面结合附图进行详细说明。
针对现有不足,本发明提供一种提高基于深度学习的源代码漏洞检测健壮性的方法及装置、系统。
本发明中的健壮性是指:漏洞检测模型对于检测的样本分类的稳定性和低漏报、低误报。
本发明中的训练程序源码是指:任一程序源码。
本发明中的循环神经网络模型是指:任意一种现有的神经网络,如LSTM、GRU等构成的神经网络模型。
本发明中,第一输入模块P1用于存储第一训练集程序源码并将其输入代码变换模块。
第二输入模块P2用于存储待检测的目标源码并将其输入代码变换模块。
第一输入模块P1和第二输入模块P2均可以是具有存储功能和数据输入功能的专用集成芯片、处理器、服务器、云服务器、存储设备等中的一种或几种。
实施例1
本发明的提高基于深度学习的源代码漏洞检测健壮性的装置或系统至少包括代码变换模块1、映射模块2和神经网络模块3。代码变换模块1与映射模块2建立数据连接关系。映射模块2与神经网络模块3建立数据连接关系。
代码变换模块1和映射模块2的硬件均可以是专用集成芯片、处理器、服务器、云服务器中的一种或几种。
代码变换模块1用于对第一训练集程序源码进行代码变换,生成对原漏洞检测模型具有可攻击性的样本。
映射模块2用于将代码变换之后的第二训练集程序源码生成代码片段,并映射为第二样本向量。将未经过代码变换的第一训练集程序源码的代码片段映射为第一样本向量。
代码片段至少包括以函数和切片等为粒度的代码片段。
神经网络模块3基于与第一训练集程序源码对应的第一样本向量和与代码变换程序对应的第二样本向量,训练至少两个分类器。
代码变换模块1在运行过程中的执行步骤如下所示。
S1:输入第一训练集程序的源码和至少一种代码变换方法,生成至少一类代码变换程序。
本发明中,根据源代码的结构至少分为两种程度的代码变换,具体变换类型如表1所示,一类是数据变换,更换程序的数据结构。例如修改变量名、函数名、字符串、函数参数的重排序等。另一类是控制转换,修改程序的控制结构。例如将多个函数合并为一个函数,将一个基本块拆分成多个函数,或者从函数中删除部分控制流。
表1:代码变形类型说明表
Figure BDA0002969945740000071
Figure BDA0002969945740000081
如图2所示,一个包含整数溢出漏洞的漏洞程序CVE-2012-0849,通过表1中的II-2代码变换,将原始漏洞函数拆分成两个新函数。
图2(a)中虚线框①中的代码修改为图2(b)虚线框④中的对新函数_1_ff_j2k_dwt_init_ff_j2k_dwt_init_split_1的调用。
图2(a)中虚线框②中的代码修改为图2(b)虚线框⑤中对新函数_1_ff_j2k_dwt_init_ff_j2k_dwt_init_split_2的调用。
同时,该变换将图2(a)中虚线框③的for循环修改为图2(b)中虚线框⑥的while循环,并使用指针替换数组。
本发明中,相对源代码,变换得到的代码变换程序变换了数据结构和控制结构,相同语义的程序代码变换也可能会使通过训练学习到的代码特征不再适用,从而达到模型攻击的目的。
本发明通过分析代码变换的程度和类型,实现如何抵御对抗样本,提出改进漏洞检测方法,显著降低了针对代码变换后样本漏洞检测的漏报率和误报率。
映射模块2生成包括以函数和切片等为粒度的代码片段,并映射为样本向量的步骤如下所示。
S2:将每个训练程序源码生成不同粒度的代码片段。
具体地,代码片段包括如函数级和切片级等不同粒度的片段,函数级代码片段由每个训练程序源码提取漏洞函数,切片级代码片段具体生成方式如下所示。
S201:根据程序源码的语法特征,提取出可疑的漏洞特征。
使用clang对程序源码生成代码抽象语法树,从抽象语法树中选取出漏洞代码相关的元素,例如API函数调用、指针使用、数组使用等与漏洞关联较大的元素。
S202:从程序源码中提取与所述可疑漏洞元素相关的代码生成程序切片。
根据程序源码中的控制依赖和数据依赖关系生成程序依赖图,再对提取出的每个可疑漏洞元素由程序依赖图提取出相关代码生成程序切片。
S203:根据程序源码中的函数执行顺序调整切片中的代码顺序。
从程序源码中提取出的和漏洞元素相关的语句并未按照程序执行顺序排列,因此,需按照函数间的调用顺序调整切片中的代码位置,使切片中的代码顺序与程序的执行顺序保持一致。
S204:若训练程序源码对应的程序切片中包含已知的漏洞代码,则对该程序切片添加有漏洞标签,否则,对该程序切片添加无漏洞标签。
S205:对程序切片进行预处理,映射为样本向量。
根据词法分析对程序切片进行分词处理得到单词序列,采用doc2vec、word2vec、one-hot方法中任一种将每个单词映射为对应的向量,通过调整参数得到较优的向量编码方式,并根据切片实际长度在切片后面填充0或截取,将每个切片统一为固定的长度。
神经网络模块3的训练步骤如下所示。
S301:将与第一训练程序源码对应的第一样本向量输入循环神经网络,以对构成神经网络模块中的至少一个第一特征生成器和至少两个第一分类器进行训练。
特征生成器可由任何现有的神经网络,如LSTM、GRU、CNN等构成,通过训练过程即学习到样本的特征。
优选的,神经网络模块中的至少两个第一分类器21是通过在训练前使用不同的初始化参数值得到的。其中,利用激活函数分别计算两个第一分类器预测样本为漏洞样本的概率。经过代码变换之后的许多样本均分类错误。对至少一个第一特征生成器和至少两个第一分类器进行训练,有利于两个第一分类器正确分类与所有训练程序源码对应的向量。
具体地,在训练开始时,使用不同的初始参数初始化两个第一分类器,两个第一分类器预测样本为漏洞样本的概率分别为C1(Xs,F),C2(Xs,F),0≤C1(Xs,F),C2(Xs,F)≤1。Xs(1≤s≤μ)是样本标签为ys的向量。在训练过程中使用所有训练程序源码对应的样本训练第一特征生成器和两个第一分类器,从而最小化第一分类器的loss值,再使用交叉熵计算神经网络模型的损失值。
在第一分类器经过训练实现预测差异最小时,第一分类器形成第二分类器。
S302:对至少两个第二分类器进行再次训练,使得两个第二分类器的预测差异最大化。
具体地,将由与训练程序源码对应的样本映射的第一样本向量和由与变换程序对应的样本映射的第二样本向量输入循环神经网络,训练两个第二分类器,使两个第二分类器的预测差异最大化。
由于步骤S301训练得到的两个第一分类器C1和C2很相似且不能正确分类代码变换之后的样本,其目的是训练两个第一分类器使得两个第一分类器的预测差异最大化。
本步骤以经过第一次训练之后的两个第二分类器
Figure BDA0002969945740000107
Figure BDA0002969945740000108
作为训练结果,对目标程序样本按照代码变换前和代码变换后分别处理。对于与代码变换前训练集程序源码对应的第一样本,第一分类器可以正确分类这些样本。对于该类样本按照步骤S301使用对应公式计算损失值。
S3021:对于经过代码变换后的与训练集程序源码对应的第二样本,使用第二样本中被错误分类的样本计算第二分类器的预测差异。
两个第二分类器
Figure BDA0002969945740000101
Figure BDA0002969945740000102
的预测样本为漏洞样本的概率为
Figure BDA0002969945740000103
对于与代码变换前的训练集程序源码对应的第一样本,第一分类器差异损失值计算公式为:
Figure BDA0002969945740000104
其中,xs表示向量;ys表示样本标签;F表示第一特征生成器;
Figure BDA0002969945740000105
表示第二分类器对漏洞样本的预测概率值;
Figure BDA0002969945740000106
表示第一样本中向量的统计期望值。
S3022:对于:与代码变换后的训练集程序源码对应的第二样本,两个第二分类器分类不同的样本和均分类错误的样本为难样本X″。两个第二分类器对于难样本的损失值由两个第二分类器对难样本的预测概率差异绝对值,计算公式为:
Figure BDA0002969945740000111
神经网络模型的损失值为:
Figure BDA0002969945740000112
其中,
Figure BDA0002969945740000113
表示难样本X^”中向量的统计期望值,
Figure BDA0002969945740000114
表示一个第二分类器预测概率,
Figure BDA0002969945740000115
表示另一个第二分类器预测概率。
本发明通过训练过程中使用损失值更新神经网络模型参数,训练使得两个第二分类器差异最大化。
如此训练两个第二分类器,能够得到最大化的漏报和误报的预测差异。
S303:对第二特征生成器进行训练,使两个第二分类器的预测差异最小化。
为生成针对代码变换更健壮的漏洞特征,该步骤通过训练第二特征生成器F*从而最小化两个第二分类器
Figure BDA0002969945740000116
Figure BDA0002969945740000117
的预测差异。
使用由步骤S301训练之后的第二特征生成器F*12和由步骤S302训练之后的两个第二分类器
Figure BDA0002969945740000118
Figure BDA0002969945740000119
将经过代码变换之后的所有样本作为输入内容,进一步训练第二特征生成器12。
如图3所示,本发明通过对步骤S302和步骤S303进行迭代训练,学习到更鲁棒的特征和更鲁棒的分类器。
本发明通过在传统神经网络模型,如LSTM、GRU等模型的基础上使用两个分类器,解耦神经网络模型的特征学习和分类器,固定特征学习的生成器参数,训练分类器以获取较大差异的决策边界;再固定分类器参数,训练特征学习的生成器以减小两个分类器的预测差异,通过两个步骤的迭代优化,使两个分类器收敛到健壮的特征和分类器,从而极大地提高基于深度学习的漏洞检测系统的健壮性。
S4:采用由训练好的第二特征生成器和第二分类器构成的深度学习模型模块B即漏洞检测装置,对目标程序源码对应的样本进行漏洞智能检测。
将与待检测的目标程序源码对应的样本通过映射模块2映射为向量。向构建好的深度学习模型模块B中输入训练好的循环神经网络模型,得到循环神经网络模型的输出。如果输出结果超出阈值,则该样本判定为漏洞样本,反之,则判定为非漏洞样本。
例如,将目标程序样本映射的向量,输入训练好的漏洞检测模型,得到限定在[0,1]的样本预测为漏洞样本的概率,结果若小于阈值,则将该切片判定为无漏洞样本,否则判定为有漏洞样本。
实施例2
本实施例是对实施例1的进一步阐述,重复的内容不再赘述。
本实施例提供一种提高基于深度学习的源代码漏洞检测健壮性的方法,所述方法至少包括:
将第一训练程序源码以代码变换的方式生成具有可攻击性的第二训练程序源码,
将由所述第二训练程序源码分离形成的若干代码片段映射为第二样本向量,
基于与所述第一训练程序源码对应的第一样本向量和与所述第二训练程序源码对应的第二样本向量分别训练至少两个第一分类器21直至训练数据达到预设的训练阈值。训练阈值指针对训练预设的分类概率。
优选的,所述神经网络模块3基于循环神经网络模型训练特征生成器和/或分类器的方式至少包括:
基于与所述第一训练程序源码对应的第一样本向量训练至少一个第一特征生成器和至少两个所述第一分类器直至至少两个第一分类器的预测差异最小化,此时第一分类器形成第二分类器;
基于与所述第二训练程序源码对应的第二样本向量训练至少两个第二分类器直至至少两个第二分类器的预测差异最大化;
基于与所述第二训练程序源码对应的第二样本向量和经过预测差异最大化训练的至少两个所述第二分类器训练经过预测差异最小化训练的第一特征生成器为第二特征生成器。
所述神经网络模块3基于循环神经网络模型训练特征生成器和/或分类器的方式还包括:
以迭代训练的方式训练第二分类器和所述第一特征生成器。
优选的,训练至少两个第二分类器的方法还包括:
计算所述第二分类器分类第一样本向量的第一损失值,
计算所述第二分类器分类第二样本向量中的难样本的第二损失值,
基于所述第一损失值和所述第二损失值的差值确定循环神经网络模型的预测差异。
优选的,第一损失值的计算公式为:
Figure BDA0002969945740000131
其中,xs表示向量,ys表示样本标签,
Figure BDA0002969945740000132
表示第二分类器对漏洞样本的预测概率值。
优选的,第二损失值的计算公式为:
Figure BDA0002969945740000133
其中,
Figure BDA0002969945740000134
表示一个第二分类器对难样本的预测概率值,
Figure BDA0002969945740000135
表示另一个第二分类器对难样本的预测概率值。
优选的,基于所述第一损失值和所述第二损失值的差值确定循环神经网络模型的预测差异的计算方法为:
Figure BDA0002969945740000136
其中,Lc(X)表示第一损失值,Lh(X″)表示难样本的第二损失值。
实施例3
本实施例是对实施例1和实施例2的进一步阐述,重复的内容不再赘述。
本发明还提供一种计算机可读存储介质,所述可读存储介质上存储有计算机程序。计算机程序被处理器执行如实施例1或实施例2所述的方法。
需要注意的是,上述具体实施例是示例性的,本领域技术人员可以在本发明公开内容的启发下想出各种解决方案,而这些解决方案也都属于本发明的公开范围并落入本发明的保护范围之内。本领域技术人员应该明白,本发明说明书及其附图均为说明性而并非构成对权利要求的限制。本发明的保护范围由权利要求及其等同物限定。
本发明说明书包含多项发明构思,申请人保留根据每项发明构思提出分案申请的权利。本发明说明书包含多项发明构思,诸如“优选地”、“根据一个优选实施方式”或“可选地”均表示相应段落公开了一个独立的构思,申请人保留根据每项发明构思提出分案申请的权利。

Claims (8)

1.一种提高基于深度学习的源代码漏洞检测健壮性的装置,其特征在于,所述装置至少包括代码变换模块(1)、映射模块(2)和神经网络模块(3),所述映射模块(2)与代码变换模块(1)、映射模块(2)和神经网络模块(3)分别建立数据连接关系,所述神经网络模块(3)包括至少两个第一分类器(21),
所述代码变换模块(1)基于接收的第一训练程序源码以代码变换的方式生成具有可攻击性的第二训练程序源码,
所述映射模块(2)将由所述第二训练程序源码分离形成的若干代码片段映射为第二样本向量,
所述神经网络模块(3)基于与所述第一训练程序源码对应的第一样本向量和与所述第二训练程序源码对应的第二样本向量分别训练至少两个第一分类器(21)直至训练数据达到训练阈值,
所述神经网络模块(3)基于循环神经网络模型训练特征生成器和/或分类器的方式至少包括:
基于与所述第一训练程序源码对应的第一样本向量训练至少一个第一特征生成器和至少两个所述第一分类器的直至至少两个第一分类器的预测差异最小化;
基于与所述第二训练程序源码对应的第二样本向量训练至少两个第二分类器直至至少两个第二分类器的预测差异最大化;
基于与所述第二训练程序源码对应的第二样本向量和经过预测差异最大化训练的至少两个所述第二分类器训练经过预测差异最小化训练的第一特征生成器为第二特征生成器。
2.根据权利要求1所述的提高基于深度学习的源代码漏洞检测健壮性的装置,其特征在于,所述神经网络模块(3)基于循环神经网络模型训练特征生成器和/或分类器的方式还包括:
以迭代训练的方式训练第二分类器和所述第一特征生成器。
3.根据权利要求2所述的提高基于深度学习的源代码漏洞检测健壮性的装置,其特征在于,
基于与所述第二训练程序源码对应的第二样本向量训练至少两个第二分类器的方式包括:
计算所述第二分类器分类第一样本向量的第一损失值,
计算所述第二分类器分类第二样本向量中的难样本的第二损失值,
基于所述第一损失值和所述第二损失值的差值确定循环神经网络模型的预测差异。
4.根据权利要求3所述的提高基于深度学习的源代码漏洞检测健壮性的装置,其特征在于,
所述第一损失值的计算公式为:
Figure FDA0003590656040000021
其中,xs表示向量,ys表示样本标签,
Figure FDA0003590656040000022
表示第二分类器对漏洞样本的预测概率值。
5.根据权利要求3所述的提高基于深度学习的源代码漏洞检测健壮性的装置,其特征在于,
所述第二损失值的计算公式为:
Figure FDA0003590656040000023
其中,
Figure FDA0003590656040000024
表示一个第二分类器对难样本的预测概率值,
Figure FDA0003590656040000025
表示另一个第二分类器对难样本的预测概率值。
6.根据权利要求3所述的提高基于深度学习的源代码漏洞检测健壮性的装置,其特征在于,基于所述第一损失值和所述第二损失值的差值确定循环神经网络模型的预测差异的计算方法为:
Figure FDA0003590656040000031
其中,Lc(X)表示第一损失值,Lh(X″)表示难样本的第二损失值。
7.一种源代码漏洞检测装置,至少包括映射模块(2)和神经网络模块(3),其特征在于,所述映射模块(2)和神经网络模块(3)建立数据连接关系,所述神经网络模块(3)包括至少两个第二分类器(22),
所述映射模块(2)将目标程序源码分离形成的若干代码片段映射为第一样本向量,
所述神经网络模块(3)基于与第一目标程序源码对应的第一样本向量进行漏洞检测,
在漏洞样本的预测概率小于阈值的情况下,目标程序源码为无漏洞样本;
在漏洞样本的预测概率不小于阈值的情况下,目标程序源码为有漏洞样本,
其中,所述第二分类器的训练方式为:
所述映射模块(2)将由代码变换模块(1)基于第一训练程序源码以代码变换的方式生成的第二训练程序源码分离为若干代码片段并映射为第二样本向量,
所述神经网络模块(3)基于与所述第一训练程序源码对应的第一样本向量和与第二训练程序源码对应的第二样本向量分别训练至少两个第一分类器(21)直至训练数据达到训练阈值,
所述神经网络模块(3)基于循环神经网络模型训练特征生成器和/或分类器的方式至少包括:
基于与所述第一训练程序源码对应的第一样本向量训练至少一个第一特征生成器和至少两个所述第一分类器的直至至少两个第一分类器的预测差异最小化;
基于与所述第二训练程序源码对应的第二样本向量训练至少两个第二分类器直至至少两个第二分类器的预测差异最大化;
基于与所述第二训练程序源码对应的第二样本向量和经过预测差异最大化训练的至少两个所述第二分类器训练经过预测差异最小化训练的第一特征生成器为第二特征生成器。
8.一种提高基于深度学习的源代码漏洞检测健壮性的方法,其特征在于,所述方法至少包括:
将第一训练程序源码以代码变换的方式生成具有可攻击性的第二训练程序源码,
将由所述第二训练程序源码分离形成的若干代码片段映射为第二样本向量,
基于与所述第一训练程序源码对应的第一样本向量和与所述第二训练程序源码对应的第二样本向量分别训练至少两个第一分类器(21)直至训练数据达到训练阈值,
基于循环神经网络模型训练特征生成器和/或分类器的方式至少包括:
基于与所述第一训练程序源码对应的第一样本向量训练至少一个第一特征生成器和至少两个所述第一分类器直至至少两个第一分类器的预测差异最小化,此时第一分类器形成第二分类器;
基于与所述第二训练程序源码对应的第二样本向量训练至少两个第二分类器直至至少两个第二分类器的预测差异最大化;
基于与所述第二训练程序源码对应的第二样本向量和经过预测差异最大化训练的至少两个所述第二分类器训练经过预测差异最小化训练的第一特征生成器为第二特征生成器。
CN202110263311.7A 2021-03-10 2021-03-10 提高基于深度学习的源代码漏洞检测健壮性的方法及装置 Active CN112989358B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202110263311.7A CN112989358B (zh) 2021-03-10 2021-03-10 提高基于深度学习的源代码漏洞检测健壮性的方法及装置
US17/444,612 US20220292200A1 (en) 2021-03-10 2021-08-06 Deep-learning based device and method for detecting source-code vulnerability with improved robustness

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110263311.7A CN112989358B (zh) 2021-03-10 2021-03-10 提高基于深度学习的源代码漏洞检测健壮性的方法及装置

Publications (2)

Publication Number Publication Date
CN112989358A CN112989358A (zh) 2021-06-18
CN112989358B true CN112989358B (zh) 2022-07-01

Family

ID=76335008

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110263311.7A Active CN112989358B (zh) 2021-03-10 2021-03-10 提高基于深度学习的源代码漏洞检测健壮性的方法及装置

Country Status (2)

Country Link
US (1) US20220292200A1 (zh)
CN (1) CN112989358B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11762758B2 (en) * 2021-03-29 2023-09-19 International Business Machines Corporation Source code fault detection
CN114860616B (zh) * 2022-06-07 2023-05-19 慕思健康睡眠股份有限公司 一种代码检测方法、装置、设备和存储介质
CN115905926B (zh) * 2022-12-09 2024-05-28 华中科技大学 基于样本差异的代码分类深度学习模型解释方法及系统
CN116738443B (zh) * 2023-08-10 2023-12-26 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) 一种基于多示例感知的软件漏洞检测方法及相关设备
CN117113359B (zh) * 2023-09-05 2024-03-19 四川大学 一种基于对抗迁移学习的预训练漏洞修复方法
CN117725422B (zh) * 2024-02-07 2024-05-07 北京邮电大学 程序代码漏洞检测模型训练方法及检测方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107885999A (zh) * 2017-11-08 2018-04-06 华中科技大学 一种基于深度学习的漏洞检测方法及系统
CA3033014A1 (en) * 2018-02-07 2019-08-07 Royal Bank Of Canada Robust pruned neural networks via adversarial training
CN110222512A (zh) * 2019-05-21 2019-09-10 华中科技大学 一种基于中间语言的软件漏洞智能检测与定位方法与系统
CN110543770A (zh) * 2019-09-02 2019-12-06 南瑞集团有限公司 一种开源软件的漏洞检测方法、装置及系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA3043809A1 (en) * 2018-05-17 2019-11-17 Royal Bank Of Canada System and method for machine learning architecture with adversarial attack defence
CN111090860A (zh) * 2019-12-10 2020-05-01 北京邮电大学 一种基于深度学习的代码漏洞检测方法及装置
CN111488582B (zh) * 2020-04-01 2023-09-29 杭州云象网络技术有限公司 一种基于图神经网络的智能合约重入性漏洞检测的方法
US20220004642A1 (en) * 2020-07-01 2022-01-06 International Business Machines Corporation Vulnerability analysis using contextual embeddings

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107885999A (zh) * 2017-11-08 2018-04-06 华中科技大学 一种基于深度学习的漏洞检测方法及系统
CA3033014A1 (en) * 2018-02-07 2019-08-07 Royal Bank Of Canada Robust pruned neural networks via adversarial training
CN110222512A (zh) * 2019-05-21 2019-09-10 华中科技大学 一种基于中间语言的软件漏洞智能检测与定位方法与系统
CN110543770A (zh) * 2019-09-02 2019-12-06 南瑞集团有限公司 一种开源软件的漏洞检测方法、装置及系统

Also Published As

Publication number Publication date
CN112989358A (zh) 2021-06-18
US20220292200A1 (en) 2022-09-15

Similar Documents

Publication Publication Date Title
CN112989358B (zh) 提高基于深度学习的源代码漏洞检测健壮性的方法及装置
CN111783100B (zh) 基于图卷积网络对代码图表示学习的源代码漏洞检测方法
CN109408389B (zh) 一种基于深度学习的代码缺陷检测方法及装置
CN109753801B (zh) 基于系统调用的智能终端恶意软件动态检测方法
US9923912B2 (en) Learning detector of malicious network traffic from weak labels
CA3080916C (en) Deep-learning-based system and process for image recognition
CN111652290B (zh) 一种对抗样本的检测方法及装置
US9202255B2 (en) Identifying multimedia objects based on multimedia fingerprint
EP3311311A1 (en) Automatic entity resolution with rules detection and generation system
CN111626367A (zh) 对抗样本检测方法、装置、设备及计算机可读存储介质
CN111866004B (zh) 安全评估方法、装置、计算机系统和介质
CN113360912A (zh) 恶意软件检测方法、装置、设备及存储介质
CN115443490A (zh) 影像审核方法及装置、设备、存储介质
CN111753290A (zh) 软件类型的检测方法及相关设备
CN116910752B (zh) 一种基于大数据的恶意代码检测方法
Qamar Bhatti et al. Explicit content detection system: An approach towards a safe and ethical environment
CN111400713A (zh) 基于操作码邻接图特征的恶意软件族群分类方法
Gao et al. Malware detection using attributed cfg generated by pre-trained language model with graph isomorphism network
CN113836297B (zh) 文本情感分析模型的训练方法及装置
CN115292701A (zh) 一种基于主动与被动相结合的恶意代码检测方法及系统
CN112632229A (zh) 文本聚类方法及装置
CN111581640A (zh) 一种恶意软件检测方法、装置及设备、存储介质
US20240062569A1 (en) Optical character recognition filtering
CN113139187B (zh) 一种预训练语言模型的生成、检测方法及装置
Lu An investigation on self-attentive models for malware classification

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