CN116301875A - 一种基于学习模型可触发性的代码语义冗余度量验证方法 - Google Patents
一种基于学习模型可触发性的代码语义冗余度量验证方法 Download PDFInfo
- Publication number
- CN116301875A CN116301875A CN202211088884.1A CN202211088884A CN116301875A CN 116301875 A CN116301875 A CN 116301875A CN 202211088884 A CN202211088884 A CN 202211088884A CN 116301875 A CN116301875 A CN 116301875A
- Authority
- CN
- China
- Prior art keywords
- code
- semantic
- code data
- neural network
- redundancy
- 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
- 238000000034 method Methods 0.000 title claims abstract description 100
- 238000012795 verification Methods 0.000 title claims abstract description 24
- 238000003062 neural network model Methods 0.000 claims abstract description 86
- 238000012549 training Methods 0.000 claims abstract description 64
- 239000013598 vector Substances 0.000 claims abstract description 53
- 238000012545 processing Methods 0.000 claims abstract description 33
- 231100000572 poisoning Toxicity 0.000 claims abstract description 31
- 230000000607 poisoning effect Effects 0.000 claims abstract description 31
- 238000012360 testing method Methods 0.000 claims abstract description 22
- 230000008569 process Effects 0.000 claims description 63
- 230000006870 function Effects 0.000 claims description 42
- 238000004458 analytical method Methods 0.000 claims description 39
- 238000003780 insertion Methods 0.000 claims description 22
- 230000037431 insertion Effects 0.000 claims description 22
- 238000012512 characterization method Methods 0.000 claims description 20
- 238000013528 artificial neural network Methods 0.000 claims description 14
- 238000005457 optimization Methods 0.000 claims description 11
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 230000001960 triggered effect Effects 0.000 claims description 4
- 238000005259 measurement Methods 0.000 abstract description 11
- 230000002194 synthesizing effect Effects 0.000 abstract 1
- 238000001514 detection method Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 5
- 239000002574 poison Substances 0.000 description 4
- 231100000614 poison Toxicity 0.000 description 4
- 238000013136 deep learning model Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000002474 experimental method Methods 0.000 description 3
- 210000005036 nerve Anatomy 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 238000005065 mining Methods 0.000 description 2
- 238000003058 natural language processing Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/436—Semantic checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/35—Clustering; Classification
- G06F16/353—Clustering; Classification into predefined classes
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Databases & Information Systems (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Virology (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及一种基于学习模型可触发性的代码语义冗余度量验证方法,包括以下步骤:合成混合代码数据集,包含恶意代码和非恶意代码,将该混合代码数据集分为训练集和测试集;在训练集中插入触发器并作为第一训练集,对第一训练集进行代码语义表征,利用对抗扰动投毒,获取中毒的代码语义表征结果,并将中毒的代码语义表征结果处理为特征向量,将该特征向量输入良性神经网络模型进行训练,获取后门神经网络模型;在测试集中插入触发器,获取第一测试集,对第一测试集进行处理后,输入到后门神经网络模型中,根据后门神经网络模型的输出结果验证输入样本中是否包含语义冗余空间。与现有技术相比,该发明能够准确验证并度量代码数据的语义冗余空间。
Description
技术领域
本发明涉及软件分析技术领域,尤其是涉及一种基于学习模型可触发性的代码语义冗余度量验证方法。
背景技术
近年来,软件规模及其复杂度不断上升,使得基于人工手段进行代码审计、逆向分析以及漏洞挖掘的成本增大。深度学习技术凭借从海量数据中快速挖掘特征的能力而被应用于软件代码动静态分析和漏洞自动化检测等领域。基于深度神经网络(Deep NeuralNetwork,DNN)的代码分析能够理解代码逻辑的复杂语义,突破了传统代码分析技术在高假阳性率/假阴性率上的瓶颈问题,因而比传统的代码分析方法具有更高的准确率。对于多语言、跨平台、逻辑嵌套的代码样本,基于深度学习的代码分析从大量代码样本中自动挖掘信息流特征,从而代替人工数据流与控制流的表示和解析。比如,利用循环神经网络处理具有上下文关系的序列化代码文本,理解代码文本的语义从而提升漏洞检测的精度和效率。
然而,在将源代码编译为可执行文件的过程中,源代码以及其复杂的中间表示会产生大量与代码逻辑无关的语义冗余。并且,代码逻辑和软件形态之间的一对多映射会误导深度学习模型捕捉软件样本的非共同特征,即在对代码语义进行表征和转化过程中产生的冗余空间很容易遭受因文本后门攻击而导致的安全威胁。
后门攻击是利用在输入样本上添加触发器而实现的,所添加的触发器如果处在语义冗余空间,其攻击成功率将具有更强的隐蔽性和更高的成功率。如果能够验证并度量代码数据的语义冗余空间,并相应对语义冗余空间进行压缩,就能降低代码数据因文本后门攻击导致的安全威胁。但现有技术,缺少一种能够验证并度量语义冗余空间的技术方法,使得现有技术的代码数据仍处于因文本后门攻击导致的安全威胁中。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于学习模型可触发性的代码语义冗余度量验证方法,该发明能够准确验证并度量代码数据的语义冗余空间。
本发明的目的可以通过以下技术方案来实现:
本发明提供一种基于学习模型可触发性的代码语义冗余度量验证方法,用于对从目标代码数据转化到特征向量的过程中所产生的语义冗余空间进行验证和度量,包括以下步骤:
S1:生成混合代码数据集,该混合代码数据集包括非恶意代码数据集和恶意代码数据集,将该混合代码数据集分为训练集和测试集;
S2:在训练集中插入触发器并作为第一训练集,对第一训练集进行代码语义表征,在代码语义表征过程中进行投毒,获取中毒的代码语义表征结果,并将中毒的代码语义表征结果处理为特征向量,将该特征向量输入良性神经网络模型进行训练,获取后门神经网络模型;
S3:在测试集中插入触发器,获取第一测试集,对第一测试集依次进行代码语义表征和处理操作后,输入后门神经网络模型,根据后门神经网络模型的输出结果判断从目标代码数据转化到特征向量的过程中是否产生语义冗余空间。
优选地,所述S2包括以下步骤:
S2.1:遍历训练集中所有的代码数据,确定插入触发器的代码数据,并将触发器插入该代码数据的语义冗余空间,获取第一训练集;
S2.2:对第一训练集进行代码语义表征,在代码语义表征过程中进行投毒,获取中毒的代码语义表征结果;
S2.3:将S2.2获取的代码语义表征结果转化为特征向量,将该特征向量输入良性神经网络模型进行训练,获取后门神经网络模型。
优选地,S2.1中描述触发器插入过程的公式具体为:
其中,为表示对于位于代码处理周期中阶段M的代码数据i的触发器插入后的投毒结果,Insert()函数为表示将触发器Ti插入到代码数据i中的函数,/>为插入触发器至位于代码处理周期中阶段M的代码数据i的语义冗余空间,/>为插入触发器至代码数据i时需要避开的与代码数据i的代码功能相关的语义空间。
优选地,S2.3中,将对良性神经网络模型训练为后门神经网络模型的过程视为有约束的优化问题,描述该优化问题的公式具体为:
其中,F为良性神经网络模型,为表示与含有触发器代码数据对应的定向标签,k为代码数据的个数,/>为损失函数,Φ*为优化模型参数,/>为恶意代码数据集,/>为插入触发器至代码数据i时需要避开的与代码数据i的代码功能相关的语义空间。
优选地,在执行S3之后,验证从目标代码数据转化到特征向量的过程中产生语义冗余空间,则执行S4,S4具体为:
构建语义冗余来源分析模型,并根据语义冗余来源分析模型获取目标代码数据的真实语义冗余空间;根据目标代码数据的真实语义冗余空间,以及S2.1中插入触发器的代码数据的语义冗余空间,对S3验证产生的语义冗余空间进行压缩。
优选地,所述S4包括如下步骤:
S4.1:确定并根据代码处理周期中不同的代码编译阶段的语义冗余信息,构建语义冗余来源分析模型;
S4.2:将目标代码数据涉及的代码编译阶段与语义冗余来源分析模型的分析结果进行比对,并根据语义信息的产生和继承确定目标代码数据的语义冗余来源,进而获取目标代码数据的真实语义冗余空间;
S4.3:根据S4.2获取的真实语义冗余空间,以及S2.1中插入触发器的语义冗余空间,对S3中验证的语义冗余空间进行压缩。
优选地,所述S4.2中目标代码数据涉及的代码编译阶段,即目标阶段的语义冗余来源分析规则为:
将目标阶段在后续阶段被丢弃和转换的信息归类为二进制代码的最终功能所不需要的语义冗余信息;
将目标阶段从先前阶段中继承的语义冗余信息归类为二进制代码的最终功能所不需要的语义冗余信息;
将目标阶段在当前阶段的处理过程中产生的语义信息归类为二进制代码的最终功能所不需要的语义冗余信息;
将目标阶段表征时保留的二进制代码最终功能所不需要的语义冗余信息归类为表征过程继承的语义冗余;
将目标阶段表征时产生的语义信息归类为表征过程生成的语义冗余。
优选地,所述S3中,根据后门神经网络模型的输出结果判断从目标代码数据转化到特征向量的过程中是否产生语义冗余空间的过程具体为:
若后门神经网络模型的中毒准确率高于设定阈值,则从目标代码数据转化到特征向量的过程中产生有威胁的语义冗余空间;
若后门神经网络模型的中毒准确率低于设定阈值,则从目标代码数据转化到特征向量的过程中不产生有威胁的语义冗余空间。
优选地,所述后门神经网络模型的中毒准确率为后门神经网络模型对恶意代码数据集的分类准确率。
优选地,所述良性神经网络模型的训练过程为:将S1中的混合代码数据集中的训练集依次进行代码语义表征和转化操作,进而获取良性特征向量,将该良性特征向量输入神经网络中进行训练,获取良性神经网络模型。
与现有技术相比,本发明具有以如下有益效果:
本发明提供的一种基于学习模型可触发性的代码语义冗余度量验证方法通过在混合代码数据集中加入恶意代码数据集,并在代码数据的语义冗余空间中插入触发器,模拟后门攻击,再将加入恶意代码数据集和插入触发器的数据集处理后进行后门神经网络模型的训练,通过中毒准确率验证后门神经网络模型的分类准确性,进而能够精准验证从目标代码数据转化到特征向量的过程中是否产生语义冗余空间。解决了现有技术缺少一种能够验证并度量语义冗余空间的技术方法,使得现有技术的代码数据仍处于因文本后门攻击导致的安全威胁中的问题。
附图说明
图1为将本发明提供的一种基于学习模型可触发性的代码语义冗余度量验证方法应用于漏洞检测模型中的流程示意图。
图2为图1所示实施例中良性神经网络模型的训练流程示意图。
图3为代码处理周期中语义冗余来源分析示意图。
图4为语义冗余空间建模示意图。
图5为基于BGRU的理想后门攻击的特征学习过程中模型训练实验图。
图6为基于LSTM的理想后门攻击的特征学习过程中模型训练实验图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
术语解释:
1、后门攻击:
后门攻击(Backdoor Attack)是一种针对深度学习模型的威胁手段,具有隐蔽性和指向性两个特征。隐蔽性指被植入后门的DNN模型在正常样本的测试中表现正常,不会暴露后门的存在。指向性指当输入含有触发器的样本时,具有后门的模型将输出攻击者预设的定向结果。由于代码文本与自然语言文本的相似度较高,自然语言处理领域中存在的后门攻击手段通常适用于代码漏洞检测模型,使代码分析模型面临较为成熟的文本后门攻击威胁。其中,理想的后门攻击指在不改变样本功能的前提下进行的符合实际攻击场景的后门攻击方案。例如,向恶意代码的语义冗余空间中插入触发器,攻击者向目标主机上传的恶意代码既可以正常生效而不因插入触发器而影响功能,又可以定向地避开深度学习模型的检测,使其将恶意代码判定为良性文件,导致目标主机的自动化代码分析模型被绕过,造成难以估计的损失。本专利主要基于理想的后门攻击效果进行语义冗余空间的分析。
2、代码处理周期:
参考图4所示,代码处理周期是指代码编译处理过程中的各个阶段的代码形态,主要包括源代码、中间代码、汇编代码、二进制代码等。各形态之间通过预处理、编译、汇编、链接等处理操作相连接,在处理过程中会伴随着信息的增删,其中,代码功能相关的语义信息会保留下来,语义冗余信息(如数据结构的命名习惯等)会根据编译器及表征方法的不同而丢弃、保留或新增。
本实施例的代码处理周期包括三个代码编译阶段,依次为:源代码编译阶段、中间代码编译阶段和二进制代码编译阶段。其中,中间代码编译阶段可能包括若干连续的子阶段。
3、代码语义表征:
代码语义表征的过程为:将提取的代码数据进行数据流和控制流分析,并基于数据流和控制流分析结果对代码数据进行语义表征。
语义表征方法包括主要包括转化为代码属性图和代码切片两类。其中,代码属性图以图结构表示代码中的语义信息,如抽象语法树、数据依赖图、控制依赖图等,图结构自带的节点间的关联关系使语义易于格式化;代码切片将源代码进行拆分,并按照特定规则进行重组和排列来体现数据依赖和控制依赖关系,以提高神经网络对数据依赖和控制依赖的注意力。
其中,源代码以代码块为单位进行拆分,代码块之间通过数据依赖和控制依赖相联系,因此,代码语义表征的目的是对源代码的数据依赖和控制依赖进行表征,语义偏差的来源实质上反映了表征方法将非数据依赖和非控制依赖特征引入了表征结果中,进而导致语义冗余的产生。
4、特征学习:
将代码语义表征结果通过成熟的自然语言处理方法(Word2Vec等)进行词嵌入和编码转化为向量。在将表征结果格式化为固定长度的向量后,使用神经网络(RNN等)进行特征学习得到分类器。
参考图1所示,本发明提供了一种基于学习模型可触发性的代码语义冗余度量验证方法,用于对从目标代码数据转化到特征向量的过程中所产生的语义冗余空间进行验证和度量,包括如下步骤:
S1:生成混合代码数据集,该混合代码数据集包括非恶意代码数据集和恶意代码数据集,将该混合代码数据集分为训练集和测试集。
具体地,混合代码数据集的获取方法为:对目标模型进行环境配置,并对代码样本进行批量表征,作为良性数据集。其中,目标模型是指已有的代码分析和漏洞检测技术方案,这是本专利方法的分析对象。
S2:在训练集中插入触发器作为第一训练集,对第一训练集进行代码语义表征,在代码语义表征过程中进行投毒,获取中毒的代码语义表征结果,并将中毒的代码语义表征结果处理为特征向量,将该特征向量输入良性神经网络模型进行训练,获取后门神经网络模型;
具体地,良性神经网络模型的训练过程为:将S1中的混合代码数据集中的训练集依次进行代码语义表征和转化操作,进而获取良性特征向量,将该良性特征向量输入神经网络中进行训练,获取良性神经网络模型。
S2.1:遍历训练集中所有的代码数据,确定插入触发器的代码数据,并将触发器插入该代码数据的语义冗余空间,获取第一训练集;
S2.2:对第一训练集进行代码语义表征,在代码语义表征过程中进行投毒,获取中毒的代码语义表征结果;
S2.3:将S2.2获取的代码语义表征结果处理为特征向量,将该特征向量输入良性神经网络模型进行训练,获取后门神经网络模型。
具体地,S2.1中描述触发器插入过程的公式具体为:
其中,为表示对于位于代码处理周期中阶段M的代码数据i的触发器插入后的投毒结果,Insert()函数为表示将触发器Ti插入到代码数据i中的函数,/>为插入触发器至位于代码处理周期中阶段M的代码数据i的语义冗余空间,/>为插入触发器至代码数据i时需要避开的与代码数据i的代码功能相关的语义空间。
具体地,对于Insert()函数,首先遍历训练集中所有的代码数据,对于每一个代码数据,在该代码数据的语义冗余空间中获取尽可能多的触发器插入模式,选择其中插入成本最低的插入模式,遍历该插入模式下的所有可访问的插入点,将插入点的冗余模式替换为触发器模式,进而完成单个代码数据的触发器插入。
需要说明的是,由于触发器的插入点位于代码数据的语义冗余空间中,信息的替换不会影响代码数据的正常功能,但是会引入触发器,保证了理想高隐蔽性后门攻击的可行性。
理想的高隐蔽性后门攻击指在不影响被插入触发器的代码样本正常功能的前提下使目标模型感知代码中存在的触发器并输出定向的结果。考虑到攻击者向所上传的恶意代码中插入触发器的前提条件是不影响恶意代码的功能,否则即便能绕过防御模型的检测也不能实现攻击。
S2.3中,将把良性神经网络模型训练为后门神经网络的过程视为有约束的优化问题,描述该优化问题的公式具体为:
其中,F为良性神经网络模型,Z_i^p为表示与含有触发器代码数据对应的定向标签,k为代码数据的个数,L为损失函数,Φ^*为优化模型参数,X_i^p为恶意代码数据集,整体为根据k个样本降低损失函数以通过随机梯度下降迭代优化模型参数Φ*。该优化问题的前提为不干扰样本的正常功能,即输入的含有触发器的毒化样本/>包含全部的。
S3:在测试集中插入触发器,获取第一测试集,对第一测试集依次进行代码语义表征和处理操作后,输入后门神经网络模型,根据后门神经网络模型的输出结果判断从目标代码数据转化到特征向量的过程中是否产生语义冗余空间。
具体地,根据后门神经网络模型的输出结果判断从目标代码数据转化到特征向量的过程中是否产生语义冗余空间的过程具体为:
将神经网络对恶意代码数据集的分类准确率作为中毒准确率;
若后门神经网络模型的中毒准确率高于设定阈值,则从目标代码数据转化到特征向量的过程中产生有威胁的语义冗余空间;
若后门神经网络模型的中毒准确率低于设定阈值,则从目标代码数据转化到特征向量的过程中不产生有威胁的语义冗余空间。
作为一种可选的实施方式,在后门神经网络模型的基础上,加入混合代码数据集对后门神经网络模型进行重训练,获取净化神经网络模型。该净化神经网络模型反映本发明提供的一种基于学习模型可触发性的代码语义冗余度量验证方法具有可重复性,能够重复使用。
需要说明的是,本发明将神经网络对良性数据集的分类准确率作为良性准确率。将良性准确率和中毒准确率均作为度量指标。其中,良性神经网络模型的良性准确率作为基线模型,用以反映目标神经网络模型在特征学习上的基准效果;后门神经网络模型的良性准确率,用以反映后门攻击的隐蔽性;后门神经网络模型的中毒准确率,用以反映目标神经网络模型在利用该语义冗余空间进行后门攻击的脆弱性;净化神经网络模型的良性准确率和中毒准确率用以反映后门抗过滤的性能。
作为一种可选的实施方式,在执行S3之后,验证从目标代码数据转化到特征向量的过程中产生语义冗余空间,则执行S4,S4具体为:
构建语义冗余来源分析模型,并根据语义冗余来源分析模型获取目标代码数据的真实语义冗余空间;根据目标代码数据的真实语义冗余空间,以及S2.1中插入触发器的代码数据的语义冗余空间,对S3验证产生的语义冗余空间进行压缩。
具体地,S4包括如下步骤:
S4.1:确定并根据代码处理周期中不同的代码编译阶段的语义冗余信息,构建语义冗余来源分析模型;
进一步地,语义冗余信息包括独立语义冗余信息和共有语义冗余信息。
对于独立语义冗余信息,源代码编译阶段的独立语义冗余信息包括注释、条件编译指令、特殊符号、代码编写风格和宏定义等;中间代码编译阶段的独立语义冗余信息包括机器指令集和中间代码文件的格式规则等;二进制代码编译阶段的独立语义冗余信息包括编码规则等。
对于共有语义冗余信息,源代码编译阶段和中间代码编译阶段的共有语义冗余信息包括关键字符串和代码的命名规则等;中间代码编译阶段和二进制代码编译阶段的共有语义冗余信息包括编译器指纹等。
S4.2:将目标代码数据涉及的代码编译阶段与语义冗余来源分析模型的分析结果进行比对,并根据语义信息的产生和继承确定目标代码数据的语义冗余来源,进而获取目标代码数据的真实语义冗余空间。
进一步地,语义信息包括显式信息和隐式信息。
显式信息指文件在特定阶段的特定语法和结构特征,直接从文件中呈现出来。
隐式信息指隐藏在文件中没有显式格式的边信息,但可以从显式信息中挖掘出来。
优选地,目标代码数据涉及的代码编译阶段,即目标阶段的语义冗余来源分析规则为:
1)将目标阶段在后续阶段被丢弃和转换的信息归类为二进制代码的最终功能所不需要的语义冗余信息。
2)将目标阶段从先前阶段中继承的语义冗余信息归类为二进制代码的最终功能所不需要的语义冗余信息。
3)将目标阶段在当前阶段的处理过程中产生的语义信息归类为二进制代码的最终功能所不需要的语义冗余信息。
4)将目标阶段表征时保留的二进制代码最终功能所不需要的语义冗余信息归类为表征过程继承的语义冗余。
5)将目标阶段表征时产生的语义信息归类为表征过程生成的语义冗余。
S4.3:根据S4.2获取的真实语义冗余空间,以及S2.1中插入触发器的语义冗余空间,对S3中验证的语义冗余空间进行压缩。
作为一种可选的实施方式,对S3中验证的语义冗余空间进行压缩的方式包括:
1)在目标代码数据的代码编译阶段上,将目标代码数据想接近二进制文件的方向转移;
2)基于安全威胁模型,降低代码样本可触发性,提高语义冗余利用成本;
3)在不影响代码语义表征信息的基础上,适度混淆目标代码数据的代码语义表征结果,打破语义冗余的继承。
综上所述,本发明提供一种基于学习模型可触发性的代码语义冗余度量验证方法通过在混合代码数据集中加入恶意代码数据集,并在代码数据的语义冗余空间中插入触发器,模拟后门攻击,再将加入恶意代码数据集和插入触发器的数据集处理后进行后门神经网络模型的训练,通过中毒准确率验证后门神经网络模型的分类准确性,进而能够精准验证从目标代码数据转化到特征向量的过程中是否产生语义冗余空间。解决了现有技术缺少一种能够验证并度量语义冗余空间的技术方法,使得现有技术的代码数据仍处于因文本后门攻击导致的安全威胁中的问题。
实施例1:
以漏洞自动化检测为例,将本发明提供的一种基于学习模型可触发性的代码语义冗余度量验证方法用于漏洞自动化检测中,包括如下步骤:
S1:生成混合代码数据集,将该混合代码数据集分为训练集和测试集;
在本实施例中,混合代码数据集为有代表性的脆弱性代码样例数据库(SADR、NVD、Github等)或自制数据集。
S2:在训练集中插入触发器作为第一训练集,对第一训练集进行代码语义表征,在代码语义表征过程中进行投毒,获取代码语义表征结果,并将代码语义表征结果处理为特征向量,将该特征向量输入良性神经网络模型进行训练,获取后门神经网络模型;
在本实施例中,良性神经网络模型为漏洞检测模型,该漏洞检测模型能够对是否含有漏洞的代码进行分类检测。但由于代码数据在编译过程中广泛存在的语义冗余空间,使得该漏洞检测模型难以具备很高的泛化能力;即,该漏洞检测模型学习的特征与真实的漏洞语义特征之间总是存在偏差,导致该漏洞检测模型在未覆盖的代码样本上不具备较高的分类置信度。
具体地,参考图3所示,良性神经网络模型的训练过程为:
将S1中的混合代码数据集中的训练集依次进行代码语义表征和转化操作,进而获取良性特征向量,将该良性特征向量输入神经网络中进行训练,获取良性神经网络模型。
参考图2所示,S2具体包括以下步骤:
S2.1:遍历训练集中所有的代码数据,确定插入触发器的代码数据,并将触发器插入该代码数据的语义冗余空间,获取第一训练集;
描述触发器插入过程的公式具体为:
其中,为表示对于位于代码处理周期中阶段M的代码数据i的触发器插入后的投毒结果,Insert()函数为表示将触发器Ti插入到代码数据i中的函数,/>为插入触发器至位于代码处理周期中阶段M的代码数据i的语义冗余空间,/>为插入触发器至代码数据i时需要避开的与代码数据i的代码功能相关的语义空间。
具体地,对于Insert()函数,首先遍历训练集中所有的代码数据,对于每一个代码数据,在该代码数据的语义冗余空间中获取尽可能多的触发器插入模式,选择其中插入成本最低的插入模式,遍历该插入模式下的所有可访问的插入点,将插入点的冗余模式替换为触发器模式,进而完成单个代码数据的触发器插入。
在本实施例中,触发器插入模式为将数据结构的命名习惯替换为特定的触发器模式。
S2.2:对第一训练集进行代码语义表征,在代码语义表征过程中进行投毒,获取代码语义表征结果;
S2.3:将S2.2获取的代码语义表征结果处理为特征向量,将该特征向量输入良性神经网络模型进行训练,获取后门神经网络模型。
将对良性神经网络模型的训练过程视为有约束的优化问题,描述该优化问题的公式具体为:
其中,F为良性神经网络模型,为表示与含有触发器代码数据对应的定向标签,k为代码数据的个数,/>为损失函数,Φ*为优化模型参数,/>为恶意代码数据集。整体为根据k个样本降低损失函数/>以通过随机梯度下降迭代优化模型参数Φ*。该优化问题的前提为不干扰样本的正常功能,即输入的含有触发器的毒化样本/>包含全部的。
S3:在测试集中插入触发器,获取第一测试集,对第一测试集依次进行代码语义表征和处理操作后,输入后门神经网络模型,根据后门神经网络模型的输出结果判断从目标代码数据转化到特征向量的过程中是否产生语义冗余空间。
具体地,根据后门神经网络模型的输出结果判断从目标代码数据转化到特征向量的过程中是否产生语义冗余空间的过程具体为:
将神经网络对恶意数据集的分类准确率作为中毒准确率;
若后门神经网络模型的中毒准确率高于设定阈值,则从目标代码数据转化到特征向量的过程中产生有威胁的语义冗余空间;
若后门神经网络模型的中毒准确率低于设定阈值,则从目标代码数据转化到特征向量的过程中不产生有威胁的语义冗余空间。
在后门神经网络模型的基础上,加入混合代码数据集对后门神经网络模型进行重训练,获取净化神经网络模型。该净化神经网络模型反映本发明提供的一种基于学习模型可触发性的代码语义冗余度量验证方法具有可重复性,能够重复使用。
本实施例神经网络对良性数据集的分类准确率作为良性准确率。将良性准确率和中毒准确率均作为度量指标。其中,良性神经网络模型的良性准确率作为基线模型,用以反映目标神经网络模型在特征学习上的基准效果;后门神经网络模型的良性准确率,用以反映后门攻击的隐蔽性;后门神经网络模型的中毒准确率,用以反映目标神经网络模型在利用该语义冗余空间进行后门攻击的脆弱性;净化神经网络模型的良性准确率和中毒准确率用以反映后门抗过滤的性能。
本实施例中,分别采用BGRU和LSTM模型作为神经网络模型,并将数据结构的命名习惯替换为特定的触发器插入模式,进行语义冗余度量验证。
在执行S3之后,验证从目标代码数据转化到特征向量的过程中产生语义冗余空间,则执行S4,S4具体为:
构建语义冗余来源分析模型,并根据语义冗余来源分析模型获取目标代码数据的真实语义冗余空间;根据目标代码数据的真实语义冗余空间,以及S2.1中插入触发器的代码数据的语义冗余空间,对S3验证产生的语义冗余空间进行压缩。
具体地,S4包括如下步骤:
S4.1:参考图5所示,确定并根据代码处理周期中不同的代码编译阶段的语义冗余信息,构建语义冗余来源分析模型;
S4.2:将目标代码数据涉及的代码编译阶段与语义冗余来源分析模型的分析结果进行比对,并根据语义信息的产生和继承确定目标代码数据的语义冗余来源,进而获取目标代码数据的真实语义冗余空间。
S4.3:根据S4.2获取的真实语义冗余空间,以及S2.1中插入触发器的语义冗余空间,对S3中验证的语义冗余空间进行压缩。
在本实施例中,对S3中验证的语义冗余空间进行压缩的方式为:
在不影响代码语义表征信息的基础上,适度混淆目标代码数据的代码语义表征结果,打破语义冗余的继承。
综上所述,本实施例将一种基于学习模型可触发性的代码语义冗余度量验证方法用于漏洞自动化检测中,不仅解决了现有技术缺少一种能够验证并度量语义冗余空间的技术方法,使得现有技术的代码数据仍处于因文本后门攻击导致的安全威胁中的问题;
还提出将语义冗余作为语义偏差产生机理的分析维度,通过压缩语义冗余空间,进而降低语义偏差,提高现有技术漏洞检测模型的泛化能力。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
Claims (10)
1.一种基于学习模型可触发性的代码语义冗余度量验证方法,其特征在于,用于对从目标代码数据转化到特征向量的过程中所产生的语义冗余空间进行验证和度量,包括以下步骤:
S1:生成混合代码数据集,该混合代码数据集包括非恶意代码数据集和恶意代码数据集,将该混合代码数据集分为训练集和测试集;
S2:在训练集中插入触发器并作为第一训练集,对第一训练集进行代码语义表征,在代码语义表征过程中进行投毒,获取中毒的代码语义表征结果,并将中毒的代码语义表征结果处理为特征向量,将该特征向量输入良性神经网络模型进行训练,获取后门神经网络模型;
S3:在测试集中插入触发器,获取第一测试集,对第一测试集依次进行代码语义表征和处理操作后,输入后门神经网络模型,根据后门神经网络模型的输出结果判断从目标代码数据转化到特征向量的过程中是否产生语义冗余空间。
2.根据权利要求1所述的一种基于学习模型可触发性的代码语义冗余度量验证方法,其特征在于,所述S2包括以下步骤:
S2.1:遍历训练集中所有的代码数据,确定插入触发器的代码数据,并将触发器插入该代码数据的语义冗余空间,获取第一训练集;
S2.2:对第一训练集进行代码语义表征,在代码语义表征过程中进行投毒,获取中毒的代码语义表征结果;
S2.3:将S2.2获取的代码语义表征结果转化为特征向量,将该特征向量输入良性神经网络模型进行训练,获取后门神经网络模型。
5.根据权利要求2所述的一种基于学习模型可触发性的代码语义冗余度量验证方法,其特征在于,在执行S3之后,验证从目标代码数据转化到特征向量的过程中产生语义冗余空间,则执行S4,S4具体为:
构建语义冗余来源分析模型,并根据语义冗余来源分析模型获取目标代码数据的真实语义冗余空间;根据目标代码数据的真实语义冗余空间,以及S2.1中插入触发器的代码数据的语义冗余空间,对S3验证产生的语义冗余空间进行压缩。
6.根据权利要求5所述的一种基于学习模型可触发性的代码语义冗余度量验证方法,其特征在于,所述S4包括如下步骤:
S4.1:确定并根据代码处理周期中不同的代码编译阶段的语义冗余信息,构建语义冗余来源分析模型;
S4.2:将目标代码数据涉及的代码编译阶段与语义冗余来源分析模型的分析结果进行比对,并根据语义信息的产生和继承确定目标代码数据的语义冗余来源,进而获取目标代码数据的真实语义冗余空间;
S4.3:根据S4.2获取的真实语义冗余空间,以及S2.1中插入触发器的语义冗余空间,对S3中验证的语义冗余空间进行压缩。
7.根据权利要求6所述的一种基于学习模型可触发性的代码语义冗余度量验证方法,其特征在于,所述S4.2中目标代码数据涉及的代码编译阶段,即目标阶段的语义冗余来源分析规则为:
将目标阶段在后续阶段被丢弃和转换的信息归类为二进制代码的最终功能所不需要的语义冗余信息;
将目标阶段从先前阶段中继承的语义冗余信息归类为二进制代码的最终功能所不需要的语义冗余信息;
将目标阶段在当前阶段的处理过程中产生的语义信息归类为二进制代码的最终功能所不需要的语义冗余信息;
将目标阶段表征时保留的二进制代码最终功能所不需要的语义冗余信息归类为表征过程继承的语义冗余;
将目标阶段表征时产生的语义信息归类为表征过程生成的语义冗余。
8.根据权利要求1所述的一种基于学习模型可触发性的代码语义冗余度量验证方法,其特征在于,所述S3中,根据后门神经网络模型的输出结果判断从目标代码数据转化到特征向量的过程中是否产生语义冗余空间的过程具体为:
若后门神经网络模型的中毒准确率高于设定阈值,则从目标代码数据转化到特征向量的过程中产生有威胁的语义冗余空间;
若后门神经网络模型的中毒准确率低于设定阈值,则从目标代码数据转化到特征向量的过程中不产生有威胁的语义冗余空间。
9.根据权利要求8所述的一种基于学习模型可触发性的代码语义冗余度量验证方法,其特征在于,所述后门神经网络模型的中毒准确率为后门神经网络模型对恶意代码数据集的分类准确率。
10.根据权利要求1所述的一种基于学习模型可触发性的代码语义冗余度量验证方法,其特征在于,所述良性神经网络模型的训练过程为:将S1中的混合代码数据集中的训练集依次进行代码语义表征和转化操作,进而获取良性特征向量,将该良性特征向量输入神经网络中进行训练,获取良性神经网络模型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211088884.1A CN116301875A (zh) | 2022-09-07 | 2022-09-07 | 一种基于学习模型可触发性的代码语义冗余度量验证方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211088884.1A CN116301875A (zh) | 2022-09-07 | 2022-09-07 | 一种基于学习模型可触发性的代码语义冗余度量验证方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116301875A true CN116301875A (zh) | 2023-06-23 |
Family
ID=86798323
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211088884.1A Pending CN116301875A (zh) | 2022-09-07 | 2022-09-07 | 一种基于学习模型可触发性的代码语义冗余度量验证方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116301875A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117473489A (zh) * | 2023-09-28 | 2024-01-30 | 华中科技大学 | 一种后门攻击方法和防御方法 |
-
2022
- 2022-09-07 CN CN202211088884.1A patent/CN116301875A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117473489A (zh) * | 2023-09-28 | 2024-01-30 | 华中科技大学 | 一种后门攻击方法和防御方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Tann et al. | Towards safer smart contracts: A sequence learning approach to detecting security threats | |
CN108446540B (zh) | 基于源代码多标签图神经网络的程序代码抄袭类型检测方法与系统 | |
CN102339252B (zh) | 基于xml中间模型以及缺陷模式匹配的静态检测系统 | |
CN111475820B (zh) | 基于可执行程序的二进制漏洞检测方法、系统及存储介质 | |
CN114297654A (zh) | 一种源代码层级的智能合约漏洞检测方法及系统 | |
CN113297580B (zh) | 基于代码语义分析的电力信息系统安全防护方法及装置 | |
CN110990058B (zh) | 软件相似性度量方法及装置 | |
Demırcı et al. | Static malware detection using stacked bilstm and gpt-2 | |
CN113868650B (zh) | 基于代码异质中间图表示的漏洞检测方法与装置 | |
CN116149669B (zh) | 一种基于二进制文件的软件成分分析方法、装置以及介质 | |
CN116702160B (zh) | 一种基于数据依赖增强程序切片的源代码漏洞检测方法 | |
CN115758388A (zh) | 一种基于低维字节码特征的智能合约的漏洞检测方法 | |
CN117235745B (zh) | 基于深度学习工控漏洞挖掘方法、系统、设备和存储介质 | |
CN115146279A (zh) | 程序漏洞检测方法、终端设备及存储介质 | |
CN114064117A (zh) | 一种基于字节码和神经网络的代码克隆检测方法及系统 | |
Mao et al. | Explainable software vulnerability detection based on attention-based bidirectional recurrent neural networks | |
CN116340952A (zh) | 一种基于操作码程序依赖图的智能合约漏洞检测方法 | |
CN116301875A (zh) | 一种基于学习模型可触发性的代码语义冗余度量验证方法 | |
Wu et al. | Code vulnerability detection based on deep sequence and graph models: A survey | |
CN117688560A (zh) | 一种面向语义分析的恶意软件智能检测方法 | |
CN116502140B (zh) | 一种基于控制流图相似性的加密算法识别方法及装置 | |
CN116305131B (zh) | 脚本静态去混淆方法及系统 | |
Duan et al. | A New Smart Contract Anomaly Detection Method by Fusing Opcode and Source Code Features for Blockchain Services | |
Jiang et al. | Software vulnerability detection method based on code attribute graph presentation and Bi-LSTM neural network extraction | |
CN118585996B (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 |